欢迎访问 生活随笔!

凯发k8官方网

当前位置: 凯发k8官方网 > 编程语言 > >内容正文

asp.net

asp.net 2.0 解决了 code-凯发k8官方网

发布时间:2025/1/21 15 豆豆
凯发k8官方网 收集整理的这篇文章主要介绍了 asp.net 2.0 解决了 code-behind 需要控件声明同步的问题 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

这显然是一个非常明智而且很早就应该实现的做法,因为已经在html中声明为runat="server"的控件,就应该算是声明过,还要在code-behind中同步的用c#代码再声明一个同名控件显然是违反了《程序员修炼之道》中所谓的dry(don't repeat yourself)原则。

原本asp.net 1.x的编译模型是编译站点时先编译code-behind部分,然后得到code-behind部分的page派生类,等到运行时再编译aspx部分此事得到code-behind部分的派生类(也就是page的二级派生类),而一旦aspx和code-behind出现控件声明的不同步那么这个继承关系将出现问题。

asp.net 2.0的做法就是把aspx和code-behind都看作page派生类的partial class,并且合成编译,而aspx中所有的控件声明都将在编译时自动转换为c#声明,这样的好处是只有一层page派生类而且不用同步什么东西,所有东西都是仅声明一次。不过有一个问题就是,到底aspx中的声明是转换为c#的partial class再编译还是能够直接编译呢?转换为c#编译是很直接的思路,asp.net 2.0 的内部变化也是说原本由vs.net 2002/2003做的声明同步工作现在交给asp.net runtime了,但是这样就有一个问题,如果要开发一种新的asp.net语言(例如delphi for asp.net 2.0),那么也就必须建立aspx到该语言的翻译,这是十分麻烦的事情。但是如果aspx和code-behind分开编译的话,这好像超出了partial class的能力范围,根据c# 2.0的规范,partial class的所有部分必须是同时编译的,不可以是增量编译的,也不可以是跨语言编译的,而aspx和code-behind都直接编译的话就需要双语言编译,也就需要增量编译。

asp.net 2.0还有一个很好的地方,就是部署编译,你能够把整个网站都编译了(包括aspx和code-behind)然后发布,发布目标的aspx将是一个仅引用后台类的控文件,这样性能最好而且也不用担心代码泄漏(特别是编译后的dll再混淆一下的话)。不过因为aspx部分也编译了,所以这样发布的网站发布之后就不能改动。而asp.net 2.0还提供另一个极端,就是完全运行时编译。以前asp.net 1.x如果是code-behind的话,code-behind部分就必须在vs.net里面先编译,不过现在asp.net 2.0能够自动监测code-behind部分是否有改动过(甚至是/app_code目录下的其他非ui逻辑的code),如果有就运行时编译,这对于调试来说是挺方便的,不需要每次调时前先在vs.net里面按ctrl shift b编译。

总结

以上是凯发k8官方网为你收集整理的asp.net 2.0 解决了 code-behind 需要控件声明同步的问题的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得凯发k8官方网网站内容还不错,欢迎将凯发k8官方网推荐给好友。

  • 上一篇:
  • 下一篇:
网站地图