关于CLR的一些知识

metadata不仅包含 用于描述模块中定义类型的列表,同时还描述了模块中引用类型的列表.
Metadata的作用简介:
Metadata使得托管模块可以脱离编译时对头文件和库文件的需求,因为所有的关于引用类型/成员的信息都被包含于所需要引用的IL模块文件中(比如c/c++必须有库文件才能编译,而C#只需要有dll文件等IL文件就可编译连接).编译器可以直接从托管模块读取元数据信息.
Visual Studio可以通过使用Metadata进行类型提示来帮助你写代码.IntelliSense就是通过Metadata信息来找到数据的.
......
把托管模块合并成为程序集
首先程序集是一个逻辑上的对一个或多个模块或资源文件的集合.其次程序集是最小的重用单元,安全机制和版本管理单元.

C#的编译器有两种优化开关:/optimize和/debug开关.下面的表显示了这两个开关对生成的IL代码的质量:
编译器开关设置   C# IL 代码的情况  JIT本地代码情况
/optimize-/debug-  不优化    优化
(默认设置)
-------------------------------------------------------------------------------
/optimize-   不优化    不优化
/debug(+/full/pdbonly)
-------------------------------------------------------------------------------
/optimize+   优化    优化
/debug(-/+/full/pdbonly)
-------------------------------------------------------------------------------
由于以下的原因,托管代码的执行效率可能会比非托管代码的执行效率高.
(一):JIT可以依据本机的CPU指令集来更优化的编译代码,
(二):JIT可以得到更多的信息来决定是否解释执行某些代码
 例如if(numbersOfCPU>1){......},这样的话在单CPU的机子上这个选择就被JIT跳过.这样就能产生更小的代码来达到更高的执行效率.
(三):\\


IL简介
每个进程中可以运行多个托管代码应用程序,因为CLR可以确保他们之间不会相互打架.
PEVerify.exe 可以用来验证程序集中是否包含不安全代码.
不安全代码可以在本地执行,但是不可以通过网络执行.

.NET类库简介:
Web Services  包括能够简单的处理通过网络发送的基于XML的消息的方法.
Web Forms 基于HTML的应用,尤其是通过查询数据库和调用Web服务,合并并过滤返回的信息,然后通过丰富的基于HTML的用户界面在浏览器中把信息表示出来.
Windows Forms 丰富的Windows GUI应用,Window Form应用程序可以使用控件和键盘事件,可以直接同底层操作系统交换信息.而且像Web Form应用程序一样,Windows Form应用程序也可以查询数据库和调用Web Services.
Windows console applications:
  不用说了吧,就是那么个东西
Windows Services
  .net Framework 可以通过Windows Services Control Manager(SCM)来构造Services应
用.
Component library
  .net Framework允许你构造单独的程序集作为组件来与上面的任意类型的程序交互.


FCL命名空间简介:
System   每个应用都需要的基本类型.
System.Data  与数据库交互和处理数据的类型.
System.Drawing  操纵3D数据的类型;通常用于Windows应用和创建显示在Web Form page的图像.
System.IO  包括处理I/O流和查看directory和files的类型.
System.Net  底层网络交互或对常见网络协议的处理
System.Runtime.InteropService
   包括允许托管代码访问非托管的操作系统特性.例如与COM组件的交互,调用Win32底层函数或与第三方DLL的交互.
System.Security  包括用于保护数据和资源的类型.
System.Text  包括管理不同编码的文本的类型
System.Threading 包括用于异步操作和对资源的同步访问类型.
System.Xml  包括用于处理xml Schema和数据的类型.

 

CLR所限定的数据访问标准:
private  只可被相同类下的成员访问.
Family  可被继承类型(无论其是否与基类型在同一个程序集中)访问,C#中表示为protected
Family and assembly 可被处于同一个程序集中的继承类型访问.(C#中没有实现)
Assembly 可被位于同一程序集中的相同类型访问,许多语言表示为internal
Family or assembly 可以被任何程序集中的继承类型访问,也可以被同一程序集中的任何类型访问,C#中的表示为protected internal
public  可以被所有类型访问

 

 

 

 

 

 

posted @ 2008-06-29 22:53  ~洛书~  阅读(301)  评论(0编辑  收藏  举报