我们知道安装了.NET Framework后,里面有非常多的类库,可能有些类我们一辈子都不会去用到.但大概知道有哪些类,以后想用的时候就可以很容易找到.所谓类库就是很多事微软的人给你做好了,给只要简单的调用下就行了.这里主要讲下.NET 2.0,3.0与3.5中的类库.
类库的组织
要查看类库中的所有信息你打开Object Browser就行,然后可以在Browse下拉列表中选对应的.NET版本号.然后你会看到左边有个列表,有啥mscorlib , System, System.Data之类的.这些名字分别对应一个个的dll文件,比如2.0的话你可以在C:\Windows\Microsoft.NET\Framework\v2.0.50727 这个目录下面找到所有对应的dll.
不过我们要使用类库的话不会用using来调用dll,而是用using去引用命名空间.一个dll文件中可能涉及到多个命名空间,比如System这个dll中有System.IO, System.Net等多个命名空间.而反过来,一个命名空间可以存在于多个dll中,比如mscorlib和System这两个dll中都有System和System.IO这些命名空间.反正我们引用的时候只要关注命名空间就行了.
另外我们会看到dll名字或命名空间的名字都有很多点做间隔,比如System, System.IO, System.Net, System.Net.Cache别以为它们之间有啥联系.实际上这仅是名字有点像,通过名字传达一点信息,起注释的作用除此之外它们没有啥太多联系的.System.IO可不是意味着它是System下面的子空间.它们两个完全无关的.
由于dll和命名空间是多对多的关系,所以就算你add reference中把System这个dll添加进去了,并且使用using System了,但此命名空间下的类库你未必就能用.有可能System命名空间下一些类在mscorlib这dll中.不过由于VS把常用的dll都给你默认添加了,命名空间也给你默认用using引用了.所以你不用关心.但如果有些不常用的命名空间的引用,你自己就得小心了.
下面我们以程序集(dll)为单位为讨论下.Net 2.0中的类库,而不是以命名空间.
System.Xml
System.Xml这个dll中有System.Xml, System.Xml.Schema等一些命名空间.既然带个Xml顾名思义,自然是涉及到操作Xml的类库啊.比如我们平时要操作xml之前一般喜欢这样实例化一个类XmlDocument doc = new XmlDocument(); 这个类就是命名空间System.Xml下面的.
System.Windows.Forms
这个dll中有System.Windows.Forms , System.Windows.Forms.Design等一些命名空间.如果是开发一个桌面应用程序,也就是要用到一个个的WinForm,那肯定用这个类库下面的类最多.只不过大部分时候我们只需要去Toolbox里面拖控件,然后VS自动给你添加命名空间的引用了.只要当你需要动态的创建删除一些控件的时候才需要手动调用里面的一些类.
System.Web.Services , System.Web , System.Web.RegularExpressions , System.Web.Mobile
这里都带个Web,顾名思义,自然全部是跟Web相关,跟网络相关的.如果你是用C#开发桌面应用程序的话,就较少用到这些类库.当然你要是开发所谓的C/S模式的应用程序可能会用到.比如用到System.Web.Services里面的类库啊.里面有啥SOAP相关的类.
System.Web.Mobile是跟移动设备相关的,你如果在手机上开发些应用程序可能用得着这里面的类库.
而开发WebForm时你要拖的控件基本上是在System.Web这个dll中的System.Web.UI.WebControls命名空间里.
System.Transactions
这个dll里面的类貌似是跟事务相关的,我们用数据库的时候对事务这个概念是比较熟了.那如果用C#写代码连接数据库然后做些啥操作,貌似就可以用这里面的类实现一些事务的功能吧.哎不过具体咋用我不知道了,自己没用过.
System.ServiceProcess
如果创建windows服务程序的话会用到这里面的类库.我们右击computer,选manage,然后打开一个页面,在里面会看到Services and Applications,你点下下面的Services会看到右边一个个长长的列表,里面显示的就是些服务程序,如果你装了Oracle server的话,可以在这里启动或关闭Oracle server.
不过这类库里面的类我也没用过,不知道具体咋用啊,有空再研究下去.
System.Security
顾名思义,这个dll里面有类库是跟加密相关的.比如有System.Security.Cryptography命名空间,我们要使用Des加密的话就得用到这个命名空间,不过要注意的时,这个命名空间下面的 类不只存在于System.Security这一个dll里面,还有些类是在mscorlib和System这两个dll里面.
System.Runtime.Remoting System.Runtime.Serialization.Formatters.Soap
第一个Reomoting自然是跟远程调用相关的类库, 后者是跟soap相关的.哎不过这里面的类我都没玩过.发现我没用过的类库可太多了,有点孤陋寡闻了啊.
System.Messaging
啥消息队列(MessageQueue)的操作会用到里面的类库,这里的消息貌似不是指C++中常提到的消息机制.而是指不同电脑之间传送的消息,传送的数据.我没用过,也不知道具体咋用.
System.Management
上面看到那么一堆堆的类库都从来没接触过,这会终于碰到个用过的了,看着它可顺眼了啊.你要获取电脑上内存,操作系统类型,生产厂商等等一些信息就得用到这里面的类库了啊.
比如像下面用System.Managment这命名空间下的类
ManagementObjectSearcher query = new ManagementObjectSearcher("SELECT * From Win32_OperatingSystem");
ManagementObjectCollection queryCollection = query.Get();
//queryCollection这是一个集合,里面包括了很多很多信息,你可以从其中慢慢去一个个的解析出来你想要的各种信息了啊.
System.EnterpriseServices
哎又碰到个没见过的东东,也不知道具体干嘛,估计又是啥web相关,远程调用之类的吧.
System.Drawing, System.Drawing.Design
这次看着眼熟了,也容易顾名思义,跟画图相关的类.专业点的说法叫GDI ( Graphics Device Interface)
System.Design
控件布局相关的类库,WinForm ,WebForm都可以用到.
System.DirectoryServices , System.DirecotryServices.Protocols
主要是跟活动目录(Acitive Directory)相关的类库.活动目录是windows操作系统中很重要的一个功能,微软自己整出来的C#,自然要多整些类库出来很好的支持windows操作系统的一些功能嘛.
System.Configuration.Install , System.Deployment
你要把你的应用程序整成一个安装文件,可以用这里的类库做些操作.另外还有以后程序更新之类的啊
System.Data
主要是支持跟数据库相关的操作.比如支持微软自己的数据库SQL Server,或者其他数据库,但通过odbc的连接方式.
System.Configuration
操作配置信息相关的类库,比如你开发web application的时候会看到有个Web.config文件,操作这里面的内容就会用到这里的类库.
System mscorlib
这两个dll中的类库是我们用的最多的了.这很好的体现了二八原则.这里面的类库可能只占所有类库的20%,但是它的重要性可能占80%了.得另外单独把它整出来讨论下才行.