正 文

NET框架与网络服务


www.7dspace.com  更新日期:2005-10-8 15:13:04  七度空间


  运行语言使用一种能表达大部分现代编程语言语义的通用类型系统,该通用类型系统定义了一套标准类型及生成新标准的规则。运行语言知道怎样生成、执行这些类型。编译器和解释器使用运行语言服务来定义类型、管理对象、进行方法调用。

  类型系统的主要设计目的是使多种语言能深度集成。用一种语言所写的代码能继承用另一种语言所写的类,用一种语言所写的代码抛出的异常能被用另一种语言写的代码所捕获,象调试之类的操作会在完全封闭下进行,而不用考虑代码编写所用的语言。这就意味着编写可重用类库的开发者,不再需要为每一种编程语言或编译器生成一个版本,并且使用类库的开发者也将不再受到他们所使用的编程语言开发库的限制。

  自描述组件简化了开发和配制,并提高了系统的可靠性。许多由运行语言提供的服务是由元数据及用于补充可执行代码的信息所驱动。因为所有的信息都储存在一起,只有可执行的代码才被称为自描述组件。

  自描述组件的一个主要优点是,使用它们并不需要其它文件。类的定义不需要单独的头文件;通过检查元数据对类的定义可以从组件自身获得。跨语言或过程边界访问组件并不需要各自的IDL文件、类型文件或proxy/stubs;所必需的信息已存在于元数据之中。最主要的是,由于元数据是在编译过程中由源代码生成,并与可执行代码储存在一起,因此,它将永远和可执行部分同步。

  除了改善对单个组件的配置,Microsft .NET框架定义了一个应用程序配置模板,以解决定制应用程序安装和DLL版本化(通常被称为“DLL Hell”)这一复杂过程的问题,运行语言提供了支持这个模板的服务。

  Microsft.NET框架引入了组合体的概念。一个组合体是一组资源和类型,并包括有关这些资源和类型的元数据,也就是被作为一个单元配置的。元数据被称为组合体的名单,它包含象类型和资源表之类能被组合体外看得见的信息,这个名单也包括有关从属关系之类的信息,例如组合体建立时的版本号。开发人员可以指定版本策略,以指示运行语言是否装入系统上已安装的依赖于组合体的最新版本,装入一指定版本,或在编译时使用的版本。

  某软件组件的多个拷贝可以存在于同样的操作系统上,然而,通常只有其中的一个拷贝能被操作系统注册、调入内存并执行。对系统来说,定位和调入内存的策略是全局性的。.NET Framework Common Language Runtime增加了所必须的体系架构以支持管理组件定位和调入的每个应用程序策略,这通常被称为并行配置。

  组合体可以被一个应用程序私有,或被多个应用程序共享。一个组合体的多个版本可以同时配置在同一台机器上。应用程序的配置信息定义了应到何处去查找组合体,这样,Runtime就能为同时运行的两个不同的应用程序装入到同一组合体的不同版本中,消除了由组件版本的不兼容性引起的问题,提高了系统整体的稳定性。如果必要,管理员可以为配置时的组合体增加配置信息。

  因为组合体是自描述的,所以并不需要在系统上进行注册。应用程序的配置简单到了只需将文件拷贝到目录中即可(如果为了使应用程序能够运行,必须安装未经组织过的组件的话,情况会稍微复杂一点)。配置信息保存在可被任何文本编辑器编辑的XML文件中。

  最后,运行语言也提供完整的、普遍深入的安全服务,以确保未经授权的用户不能访问机器上的资源,并且代码不会执行未经允许的动作。这就提高了系统整体的安全性和可靠性。由于运行语言用于装入代码、生成对象、执行方法调用,所以当受控代码装入内存并执行时,运行语言能进行安全检查,从而强化安全策略。

  Microsft.NET框架不仅规定代码访问安全机制,还规定基于角色的安全机制。通过代码访问安全机制,开发人员能为应用程序指定完成工作所必需的权限。例如,程序或许需要写文件或访问环境变量的权力。这类信息和有关代码标志的信息一起存储在配置级上。当代码装入内存并执行方法调用时,运行语言将验证是否能给予代码所要求的权限。如果不能,将记录一条安全冲突信息。给予权限的策略,被称之为信任策略,是由系统管理员建立的,并且是建立在关于代码的证据基础之上。比如:代码是谁发布的,是从什么地方获得的,以及在组合体中找到的代码标志和它要求的权限。开发人员可以指定他们具体的权限,以防止其它人恶意使用他们的代码。如果所需要的权限依赖直到运行时刻才会知道的信息,那么就可写入纲领性的安全检查。

  除了代码访问安全机制,运行语言还支持基于角色的安全机制。基于角色的安全机制建立同代码访问安全机制一样的权限模板,只是这些权限是建立在用户的身份之上,而不是建立在代码的标志之上。角色表明了用户所属的类,并且可以在开发和配置阶段定义。给予权限的策略被分配到每个预定义的角色。在运行时刻,用户的身份被确定,代码将代表这个身份运行。运行语言决定用户是哪个角色的成员,然后给予基于这个角色的权限。

  在查看Microsft.NET框架的可编程模板前,先看一下它所提供的服务。

  服务框架

  正如我们从图2所看到的那样,在Common Language Runtime之上是服务框架(Services Framework),此框架提供能被任何现代编程语言所调用的类。所有的类都遵循一套命名和设计方针,从而大大减小了开发人员学习过程中的难度。

  图3显示了服务框架中的一些主要类库。框架包括一套开发人员希望在标准语言库中存在的基类库,例如:集合、输入/输出、字符串及数据类。另外,基类库提供访问操作系统服务如图画、网络、线程、全球化和加密的类。服务框架也包括数据访问类库及开发工具,如调试和剖析服务等。

  数据访问服务

  几乎所有的网络服务都需要查询和更新永久性数据,不论是以简单文件,还是以相关数据库,或是以其它的存储类型存在。为了提供对数据的访问,服务框架包括ActiveX Data Objects+ (ADO+)类库。如同名字所暗示的那样,ADO+由ADO发展而来。ADO+为基于网络的应用程序和服务提供数据访问服务。图1阐明了ADO+的体系结构,表明任何数据,不论这些数据实际上如何存储的,都以XML或相关数据的格式被操作。

  ADO+定义了那些链接数据仓库、对数据仓库发送命令及从中获取结果的类。这些类由受控数据提供者(managed data provider)实现。ADO+中链接和命令对象看上去和ADO中的是一样的,并且一个名为DataReader的新类提供了通过高性能API流获取结果的能力。DataReader在功能上与ADO的记录集(Recordset)是相似的,但是DataReader被设计用来最小化内存中生成的对象的数量,用以提高性能、避免垃圾积累。在.NET Framework中包含了针对Microsoft SQL Server的受控数据提供者以及可通过OLE DB访问的任何数据仓库。

6页,页码:[1] [2] [3] [4] [5] [6] 

上一篇:MySQL的mysqldump命令使用详解
下一篇:Web 2.0:新应用 新体验
作者:  来源:MSDN ( 责任编辑:7dspace )
收藏此页】【打印】【关闭
站 内 搜 索
 

热 点 导 读
特 别 推 荐