第1章 .NET概观
*Web Service
Web Service的接口使用WSDL(Web Service Description Language)定义。WSDL使用XML来定义。WSDL功能上类似与COM和CORBA使用的IDL(Interface Definition Language)。WSDL没有指定任何协议,一般用SOAP(Simple Object Access Protocal),SOAP本身也用XML来定义,并依赖与XML定义传输格式。SOAP大多在HTTP上发送,但不是非如此不可,也可用消息队列(MSMQ)或Email或其他协议来调用Web Services的各项操作。
* UDDI
让客户发现Web Services:UDDI(Universal Description,Discovery and Integration)统一描述,发现和集成,找到Web Services接口。使用SOAP就可以读写UDDI数据库内容。
*WSDL,SOAP,UDDI是Web Services的核心技术。
*.NET Framework
.NET Framework基础上的程序都依赖于一个CLR(Common language runtime)的基础库。CLR提供了一套通用的数据类型和其他服务。.NET Framework包括CLR和.Net Framework类库(ASP.NET, ADO.NET, Windows Forms, Enterprise Services等)。
*受控代码
.NET Framework建立的程序成为受控代码(managed code),受控对象,不同的语言编写的类可以继承,只要他们都是作为受控代码运行在CLR之上。
*COM
COM连接Windows DNA世界所有组件的胶合剂,CLR是新一代的COM,内建大量“用以和COM-Based应用程序互动”的支持能力。CLR为接口和其他数据型别定义了一个通用规范,COM的胶合已经不是必须品。但是可能新程序(DBMS)等不用CLR开发,这时还是需要COM来展露外部服务和定义内部接口。COM并未消亡。
除非要和现有代码互动,否则COM在.NET Framework中没有用场。
*CLR:
标准数据类型
Garbage Collection
Metadata(元数据)。型别信息存于编译后的代码里,与COM不通,不再有独立的型别库和IDL,Interface和class直接使用具体的编程语言来定义,而后被CLR转换为元数据标准格式。
一个通用的体制:Assemblies组织编译后的代码。Dll和exe,都内含class的metadata。
*Managed code
Managed code总是先被编译为MSIL(Microsoft Intermediate Language),MSIL是与CPU无关的指令集。装配件(Assemblies)中每个dll和exe包含的都是MSIL代码。应用程序运行时,MSIL会在运行前转换为原生码(native code)。每一个Method通常在第一次调用时才被即时编译。(JIT complied)JIT:just-in-time compilation. 不同语言写的应用程序运行速度不会有太大差别。
*C#
允许运算符重载和“直接方位特定内存地址”的代码(unsafe code)
*Managed C++
提供C++访问CLR特性的能力,C++的扩充件。扩充了一些关键字。
*System空间 P23
包含所有namespaces和核心数据类型。
System.Web ASP.NET
System.Data ADO.NET
System.Windows.Forms Windows GUI
System.EnterpriseServices COM+提供的服务。允许managed code访问COM+服务。
System.XML 生出和处理XML定义出来的数据。包括XSD和XPath等支持。
System空间的各种包都是指CLR中的程序库,使用CLR之上的CLR-based语言(C#,VB.NET)都使用这个公用的库,并且把自己特殊的数据类型和语言特性映射到CLR的CLI(Common Language Infrastructure)的基本数据类型和MSIL的中间指令上。
*Dataset
一个Dataset可以持有来自不同DBMS的多个查询表,是数据的“in-memory Cache”
XML文档可以直接读入Dataset表中。DBMS表通过.NET data provider进入Dataset。
*ASP.NET P27
开发由HTTP和HTML访问的浏览器应用程序 app.aspx
开发可经由SOAP访问的Web Services应用程序 app.asmx
将axmx中的methods开放为Web Services,只要在定义前插入[WebMethod]
*.NET My service :例如微软的Passport Service P31
*.NET Enterprise servers P34
BizTalk Server2000: 同一范围不通系统的不同应用程序之间高效交换信息。Messaging Engine(XML-based文档定义和传输),Orchestration Engine(图形界面)
Application Server2000:管理工具,降低“在复制服务器上部署和管理Windows DNA应用程序”的成本和复杂度。
Commerce Server2000:开发的电子商务应用程序。
Host Integration server2000:和Unix通信。HIS2000
SQL Server2000
Exchange Server2000:核心消息处理,E-mail和相关应用。
Mobile Information Server2001:无线应用设备程序开发平台。
Internet Security and Acceleration Server2000:ISA2000,防火墙和代理服务
这些服务器使用Windows DNA技术,COM实现,纳入只是为了商业和战略的目的。
*delegate P129
delegate是一个包含函数引用的对象,实现了C/C++中函数指针的功能。
//声明委托类型SDelegate,参数为string,返回值为void
delegate void SDelegate(string s);
//用函数WriteString产生一个委托SDelegate类型的对象del,del包含一个WriteString方法的引用。
SDelegate del = new SDelegate(WriteString);
*C++是VS.NET中唯一能够直接编译成原生代码的语言,其他所有CLR-based language(include Managed C++)都是被编译为MSIL。 P164
第5章 .NET Framework类库
*.NET Framework类库 P174
System.Collections 泛化type如stacks和queues
System.ComponentModel 为构件软件组件提供了基础,包括Component作为Windows Forms使用的组件的基础。
System.Configuration 支持配置装配件和创建安装器。
System.Data 包含的types用以构成ADO.NET
System.Diagnostics 支持tracing,assertion等
System.DirectoryService 提供一个API用于活动目录
System.Drawing 支持创建文本和数种图形。GDI+
System.EnterpriseServices 包含的types用以访问COM+服务。包括分布式事务支持等。与替他类库不通的是,这里包含的types提供了对现有COM+软件的包装,而不是以受控代码的方式重新实现的。
System.Globalization 用以创建国家化日立,转换各国代码也,格式化时间,文本等。
System.IO 支持文件和目录的访问。
System.Management 支持处理WMI(Windows Management Instrumentation,windows管理设备)数据。提供了对WMI查询语言的支持。
System.Messaging 提供了一套type访问MSMQ API
System.Net 支持对HTTP,TCP和其他协议的访问。
System.Reflection 访问装配件的元数据。
System.Resource 用于操纵资源(位图,字符串等),与国际化有关。
System.Runtime 提供了互操作,远程访问,序列化和其他基础性服务。
System.Security 提供了加密支持和其他安全服务。
System.ServiceProcess 开发windows service
System.Text 支持文本转换,并可处理正则表达式
System.Threading 提供了可被所有CLR-based 语言使用的标准线程服务。
System.Timers 支持处理规律发生的时间。
System.Web 实现了ASP.NET
System.Windows.Forms 支持构建local windows GUIs。
System.XML 包含了处理XML-defined数据的广泛支持。
*序列化 P184
提供两种格式器:二进制格式器和SOAP格式器(XML格式化为SOAP消息)。
用Serializable和NonSerialized attribute标识是否该被序列化。
*XPath P190
XPath是用于对XML文件的部分进行定址(addressing)的语言
XSLT是一种用于指定XML文档转换的机制,由XSLT样式表描述。可以将一个XML文档从一种模式转换为另一种。XML的居于中心的Infoset是对文档内容的抽象表示。
*XML APIs P191
SAX :访问XML定义信息的streaming API,将XML文档按序读出,深度优先遍历文档树。SAX-Simple API for XML。非W3C。
DOM :整个文档表示为一个内存数据结构,允许应用程序遍历它。W3C,属于navigational API。DOM-Document Object Model。
*System.XML P192
XmlReader class支持以streaming方式访问XML定义的信息,访问XML文档最快方式。
XmlWriter class能够涂写XML文档。
XmlDocument 一个DOM实现,常用,允许随机向前向后移动。
*反射 P195
XmlSerializer 生成标准XML,序列化不作用在pirvate成员上。产生和XSD完全兼容的XML。
SoapFormatter 为了.NET Remoting使用,将输出结果放到一个SOAP封套种。所有成员(包括Private)可被正确输出和传输。假定通信双方都有.NET Framework。难以被微软之外的系统理解。
Reflection.Emit 提供的types支持动态创建装配件。应用程序能够显示生成并执行MSIL代码。
*Remoting
.NET Framework专注于在CLR-based应用程序之间通讯,支持同步(RPC)和异步通讯(不受阻塞)。
远程是指不同应用域(Application domains)里对象之间的任何通讯。(可能为单机)通讯由channel负责。在应用域之间传递values,必须经过编列(marshaled)和解列(unmarshaled) P203
MBV(marshal by value)将value拷贝到远程,传递的types必须标以Serializable
MBR(marshal by reference)必须继承子MarshalByRefObject才可以。远程产生一个包含reference的代理。
用户定义的types不可序列化,也没有继承MarshalByRefObject,则不能被marshaled跨越应用域边界。
TCP channel:缺省用binary formatter来序列化。效率较高。没有安全选项。
HTTP channel:缺省用SOAP格式器,可使用IIS安全选项。