QQ
菜鸟也能煮酒论英雄
他山之石,可以攻玉。善于从他人处汲取营养的人,才能不断地取长补短,使自己走向成功

.NET Framework ©xiaojiangjiang

Advice:

.Net Framework的目的是便于开发商更加容易快速的开发和建立网络应用程序和WEB Service,它的关键角色是提供了一个支持多种编程语言组件开发和执行的环境.

对于使用Win32 SDK的编程人员来说,对大多数操作系统特性的访问时通过一组从动态链接库输出的独立函数实现的。这些独立的函数从诸如C这样的非面向对象语言中非常容易调用。但对于一个新的开发人员来说,要面对上千个表面上看来毫无关系的独立的函数是相当让人畏惧的。更为困难的是许多函数名是以单词“Get”开始的(如GetCurrentProcessGetStockObject)。此外,Win32 API已经历数年并且微软添加了新的函数,这些新函数依旧的函数相比。有相似的语义,但提供的特性有些差异。你常常能认出较新的函数,因为它们的名字原来的函数名相似(象CreateWindow/CreateWindowExCreateTypeLib/CreateTypeLib2以及我最喜欢的CreatePen/CreatePenIndirect/ExtCreatePen所有这些问题都使程序员觉得Windows开发很难。随着.NET平台的出现,温柔终于为叫苦不迭的开发人员提供了一个完全面向对象的开发平台。平台服务现在被分成为单独的名字空间(如:System.CollectionsSystem.DataSystem.IOSystemSecuritySystem.Web等等)并且每一个名字空间包含一组允许访问平台服务的相关类。因为类方法可以重载,行为差别不大的方法具有相同的名字,并且只有从原型中才能看出差别来。例如,一个类可能提供三个不同版本的CreatePen方法。所有方法都做相同的事情:即创建一支笔。但是,每一个方法都有不同的参数集并且行为不太一样。将来微软还要创建第四个CreatePen方法并且与前面的类方法配合默契。因为所有的平台服务都通过这种面向对象的方式来实现,所以软件开发者应该对面向对象的编程有所理解。面向对象的方法还带来了其它的一些特点,如使用继承和多态性很容易创建专门版本的基类库类型。熟练掌握这些概念,这对于使用微软的.NET框架很重要。

.NET 扩展了通过任何设备随时随地操作数据和进行通讯的能力。.NET 使用分布式计算模型并基于开放标准(如 XML)将 PC 与其他智能设备连接在一起。.NET Microsoft 的用以创建 XML Web 服务(下一代软件)平台,该平台将信息、设备和人以一种统一的、个性化的方式联系起来。借助于 .NET 平台,可以创建和使用基于 XML 的应用程序、进程和 Web 站点以及服务,它们之间可以按设计、在任何平台或智能设备上共享和组合信息与功能,以向单位和个人提供定制好的解决方案

.Net Framework最简单的理解方式是把它看作是终执行代码的环境。它管理代码的执行启动代码、给它赋予 相应得权限、为它分配内存存储其数据,帮助释放某些不再需要的内存和资源等。除了执行这些任务外,.Net Framework还要使用一个一个非常复杂的类库(.Net Framework基类),以便在Windows上执行大量的任务,它承担了双重角色:管理代码的执行和提供代码的服务。

.Net Framework位于Windows 和代码之间,可以提供需要的服务。

.Net Framework公共语言运行库CLR):提供了管理代码的执行环境,代码管理的形式可以是内存管理、线程管理、安全管理、代码验证和编译以及其他系统服务。运行时为了增强性能而设计的。它使用实时(JIT)编译的方法,使托管代码能够以运行应用程序的平台的本机语言运行。这样,开发人员就可以创建使用于多种平台的应用程序,而不用担心如何分别为每个平台重新编译或生成可执行程序。

受管制的代码:在.Net环境中运行的任何代码都称为受管制的代码。.Net外部的其他代码也运行在Windows上,这些代码称为未受管理的代码。

中间语言(IL):在.Net运行时加载和运行的代码时,这种语言确定代码的位置。在编译受管制的代码时,编译实际上使用中间语言,CLR处理代码执行前的最后编译阶段。IL可以非常快速地编译为内部的机器代码,同时支持。Net的功能。

公共类型系统(CTS):为了实现语言的互操作性,必须有一组各种语言都认可的基本数据类型,这样才能对所有语言进行标准化处理。CTS就提供了这个功能,还提供了定义定制的规则。

.Net Framework类库.Net Framework类库是与公共语言运行库紧密集成的可重复使用类的集合,是一个可扩展的类库,应用程序应用这些库来派生出所需的功能,执行Windows上的各种任务:

与窗体相关的类:.Net Framework实现了System.Windows.FromsSystem.Drawing类的子集,使开发人员能够为设备应用程序创建一个丰富的用户界面。可以在.Net Framework下实现的Windows窗体元素包括窗体、大多数的控件以及集成的第三方控件、位图和菜单等。出于规模和性能方面的考虑,.Net Framework未包括某些控件属性、方法和事件。如果需要,开发人员只要完成少量的编码工作,就可以自己实现这些未包括的功能。这是因为它允许用户根据基础控件类创建自定义控件。这样,开发人员就可以通过添加自己的属性、方法和事件来创建所需要的控件。

数据和XML类:.Net Framework包括一组类,使开发人员能够轻松地将来自关系型数据源或非关系型数据源(包括XML内容)集成到程序中。这些类是在System.DataSystem.Xml命名空间下定义的。

XML Web Service:.Net FrameworkWeb服务结合紧密。.Net FrameworkSystem.Web命名空间所提供的功能,开发人员可以创建Web服务客户端,但不能通过.Net Framework来提供Web服务。创建用于.Net FrameworkXML Web Service客户端非常容易。这些XML Web Service客户端可以同步访问,也可以异步访问。同步 XML Web Service 调用编码简单,而异步调用的编码略微复杂。如果 XML Web Service 长时间无响应,同步调用将冻结应用程序,而异步调用则允许用户在调用 XML Web Service 期间与应用程序进行交互。使用Visual Studio可以完成大部分工作。

GDIGDI+的支持:.Net Framework通过System.Drawing命名空间支持基本的GDI绘画元素,包括位图、笔刷、字体、图标和画笔等。

Base Class: .Net Framework提供了许多基类,为开发人员提供了大量的功能。使用这些基础结构可以编写多种功能的应用程序,包括能够创建多线程应用程序(System.Threading)、网络应用程序(System.Net)以及具有文件管理功能的应用程序(System.IO)等。

IrDA支持:Windows CE设备(例如Pocket PCPocket PC phone)通常具备红外线(IR)通信能力,为了支持这种通信能力,可.Net Framework中包括了许多类,使用户能够在自己的应用程序中利用IR通信。这些类是System.Net.IrDA命名空间的一部分。开发人员可以使用IRPocket PC、打印机以及其他支持IR的设备进行通信。

COM组件互操作:将COM对象集成到基于.Net Framework的应用程序中需要执行两个步骤。首先,必须编写能提供COM对象的非托管DLL包装(使用e Mbedded Visual C++)。此步骤可繁可简,具体情况取决于COM对象的复杂程度。其次,必须使用P/Invoke访问DLL包装。.Net Framework2.0支持COM互操作性。开发人员可以在.NET程序中访问COM组件,也可以将Callback函数传递给COM组件,但开发人员仍不能直接调用ActiveX控件。

安全性:.Net Framework2.0支持的加密功能包括:

      X509证书;

      散列:MD5SHA1

      对称密钥加密:RC2RC43DESDES

      不对称密钥加密:RSADSA

远程处理支持、访问Windows注册表、Bluetooth支持等。

      装配件:装配件是存储编译好的受管制的代码的单元。它与传统的可执行文件或DLL有些相似,但具有自我描述的重要功能,包括所谓的元数据,它给出了装配件及在其中定义的所有类型、方法等细节。装配件可以是私有(只能用于一个应用程序),也可以是共享的(可以用于Windows上所有应用程序)。

      装配件高速缓冲存储器:这是存储共享装配件的磁盘区域。

      公共语言规范(CLS):这是确保代码可以在任何语言中访问的最小标准集合。所有用于.NET的编译器都应支持CLSCLS构成了可以在.NETIL中使用的功能子集,代码也可以使用CLS外部的功能。如果非CLS功能在代码所在装配件的外部时可见的,那么这些功能就不能在某些语言中使用。

      反射:因为装配件完全是自我描述的,因此在理论上可以编程访问装配件元数据。实际上一些基类就是为达到此目的而设计的。这种技术称为反射(也许因为它本质上意味着程序可以使用这个工具检查自己的元数据)。

      Just-in-TimeJIT)编译:这个术语用于表示执行编译过程的最后阶段,即从中间语言转为内部机器代码。其名称的来源是部分代码是需要即时编译的。JIT编译器是.Net Framework的一个重要组成部分,也是Microsoft致力于确保受管制代码比不上不受管制代码的性能更高的重要方面。

      转配件清单:这是存储包含元数据的装配件区域。

      应用域:应用域是CLR允许不同代码在同一个过程空间中运行的方式。这些代码单元之间的独立性是通过下述方式实现的:在执行代码前使用IL的类型安全性进行验证,确定代码的每个部分都是正确的。

      无用存储单元收集:这是CLR清理不再需要的内存的方式,应用程序不必负责内存的释放。

         异常:.Net Framework可以根据异常使用相同的机制处理错误情况,这与javaC++是一样的。代码的某些领域被看作是异常处理程序例程,每个例程都处理某种特殊的错误情况(例如,找不到文件、或拒绝执行某些操作的许可)。这些条件可以定义的很宽或很窄。例如,可以编写一个处理程序,来处理库中某些方法传送客户机代码使用的不合适的参数。还可以编写另一个处理程序,专门处理某个特定的参数包含的不正确的值(例如,给温度转换方法传送低于0度的温度)。异常结构确保在发生错误情况时,执行过程立即跳到异常处理程序例程上,处理有问题的错误情况。异常处理还提供了一种方便的方式,当对象包含错误情况的准确信息时,该对象就可以传送给错误处理例程。这个对象包含的信息包含给用户的相应信息和在代码的什么地方检测到错误的确切信息。大多数异常处理结构,包括异常发生时的程序流控制,都是由高级语言处理的,任何中间语言命令都不支持它。

      安全性:.Net Framework在代码的安全性方面有许多优点,因为它能进行允许给定应用程序进行的自我检查。但是,.Net Framework安全性要强大得多,因为它能提供的安全机制司机哦基于代码的安全性,而Windows仅提供了基于角色的安全性。他们的区别是基于角色的安全性建立在运行过程的帐户的身份基础上,另一方面,基于代码的安全性建立在代码实际执行的任务和代码的可信程度上。由于中间语言提供了强大的类型安全型,所以.Net Framework运行时就可以在运行代码前检查他它,以确定是否有需要的安全权限。.Net Framework还提供了一种机制,可以在运行代码前制定代码需要什么安全权限。

posted on 2007-02-28 16:28  江太公  阅读(267)  评论(0编辑  收藏  举报