《Asp.Net 2.0 揭秘》读书笔记(十四)

创建组件

首先这里的组件不是通常意义的组件

*动态编译的过程的一个主要缺陷就是如果组件中出现任何错误,会导致整个站点出错不能运行;

*不同语言编写的组件需要放在不同的文件夹中,如果是一种语言写的就无所谓;

*静态(static)在其它语言中被称作共享,它是没有任何实例归属的;这句话太好了啊,记得学C++的时候就一直搞不懂,一直都是从它的实现机制上去理解,啥静态的不变的啦,后来用了一段时间后不这么想了,但是一直没有一个很好的理解总感觉缺点什么,共享两个字真的太好了,它的后半句话也解释了为什么静态变量不能引用其它的变量;

*Asp.Net这种多线程环境中使用共享成员变量和属性,可能会引发一些稀奇古怪的多线程并发问题,如果一定要使用静态属性,请尽量将其定义为只读;这个问题也一直困扰着我,哎,看好书就是如此的获益匪浅啊;

*静态构造函数在所有实例构造函数执行前执行,并且在程序生命中只执行一次,哈哈,这个是我当初看到有人用的时候自己悟出来,想想自己都感觉自己天才,吹完了~

*抽象类是Asp.Net 2.0 Provider的基础,如Personalization、Membership、Roles、等;

*新建组件类库的时候一般都要引用System.Web.dll的引用;

*引用有两种方法,一个是放在Bin目录下,不知道咋回事windows的程序都是直接自动搜索当前目录下的Bin文件夹中的程序集,另一个是直接放全局程序集缓存中就是C:\\windows\assembly

*添加到全局缓存签必须要先请命名程序集,类似于GUID,命令行工具(sn.exe –k KeyPair.snk),生成KeyPair.snk文件,中放着随机生成了公/私密钥;

*在AssemblyInfo.cs中

[assembly:AssemblykeyFile("KeyPair.snk")]
[assembly:AssemblyVersion("0.0.0.0")]

四个0分别代表主版本号、副版本号、构建编号和修订编号

*加入全局缓存命令行(GacUtil.exe /i MyLibrary.dll)

*config中添加引用的代码示例:

<system.web>
  <comilation>
    <assemblies>
      <add assembly="MyLibrary,Version=0.0.0.0,Culture=neutral,PublicKeyToken=123456123456"/>
    </assemblies>
  </coml\pilation>
</system.web>
*通常情况下避免全局应用程序集的使用
*当程序开始进入架构设计的时候会有很多问题值得思考,反正我只知道没有最完美的设计只有最适合当前的设计!
慢慢来,加油吧;
*简单的三层应用page468
作者:KKcat
    
个人博客:http://jinzhao.me/
    
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
原文地址:https://www.cnblogs.com/jinzhao/p/1373486.html