2002-09-12 11:30
Microsoft.Net 与 Web Services
1.Net是什么?
Microsoft
.Net的目标是让分布在不同区域的计算机、设备一起工作,为用户提供各种各样的服务。人们可以控制在什么时候、获取什么信息以及怎样获取信息,而不必像现在这样,用户在无数个信息孤岛中找来找去,寻找着自己需要的信息。例如,我想在居住的小区内找一家烧烤店,并且晚上7点还有空位;
又比如,我有一笔业务要做,我要知道哪家供货商库存有该货物,如果有几家可以提供该商品,我还要知道谁能给我最好的价格以及谁能最先将货送到。类似这样的服务在现在的Internet上并不存在,因为没有一个标准将这些分属于不同单位的信息集成起来。
Microsoft
.Net将彻底改变现在Internet的工作方式,推动下一代Internet的发展。XML和SOAP是实现上述伟大理想的核心技术。
简单地说,.Net主要由两大部分组成:
● .Net平台 包括.Net基础框架、工具和核心服务等;
●
.Net产品和服务 包括Windows .Net、MSN.Net、Office.Net、Visual Studio.Net以及bCentral for
.Net。
本文主要介绍.Net基础框架以及 .Net包含的重要理念——Web Services。
2.Web Services架构
Web Service是由应用程序完成的服务,通过Internet标准,可以和其他Web
Service集成,它是一个URL服务资源,客户端可以通过编程方式请求得到它返回的信息。Web
Services的一个重要特点就是客户端不需要知道所请求的服务是怎样实现的,这一点与传统的分布式组件对象模型(DCOM/CORBA)完全不同。
.Net系统之间的通信采用通行的Web协议和数据格式,例如HTTP和XML,任何支持Web标准的系统都能支持Web
Services。XML是定义一套可扩展的、标准化的语言的最好选择,它可以表示命令和类型数据定义。SOAP(简单对象访问协议)则是一套用XML表示数据和命令的国际标准。因此,在.Net中,选用SOAP定义通信消息格式应是很好的选择。
Web Services 定义了明确的接口,在.Net中被称为约定(contracts),它描述了Web
Services提供的服务,客户端应用程序就是根据约定知道Web
Services是否包含所需的服务以及调用方法。开发人员可以通过组合调用远程服务、本地服务和自己编写代码来实现一个Web应用。图1显示了怎样将Web
Services连接在一起,建立分布式的Web应用。
3.Net框架
我们知道,.Net的主要目标就是在Internet的站点之间通过分布式的协作,为用户提供更加完美的服务。但在目前的技术条件下,实现这样的应用难度非常大,Microsoft为此开发的.Net框架、核心基础构件服务以及系列开发工具,将使开发人员可以很容易地搭建这样的应用(包括开发Web应用和Web 服务)。.Net框架是Microsoft继DNA之后最新提出的新一代Internet软件开发模型。图2显示了Microsoft .Net框架的组成。
从图中可以看出,Microsoft.Net框架的核心是公共语言运行环境(Common Language
Runtime)引擎和服务框架(Servies
Frameworks),它们建立在操作系统层之上。公共语言运行环境(Runtime)引擎的功能是管理代码的运行,代码可以采用任何现代编程语言编写,并以一种中间语言(IL)代码的形式出现。另外,运行环境引擎还提供了许多服务功能以简化代码的开发和应用配置,同时也改善了应用程序的可靠性。.Net还包括一组类库,开发人员可以在任何一种编程语言环境中使用。最上一层是各种应用程序开发模型,并特别针对开发Web站点和Web服务提供了更高一级的组件和服务。
1.公共语言运行环境(Runtime)
.Net框架的核心是公共语言运行环境(Runtime)引擎。很多程序员对Runtime这个概念并不陌生,我们知道C
Runtime库、标准模板库、MFC库、活动模板库以及VB运行库等,目的都是为应用程序提供公共服务,以节省编程时间和提高程序的可靠性。Runtime引擎和库同样如此,不同的是,Runtime引擎更像Java虚拟机,因为它管理的代码是与机器无关的中间代码,在Runtime加载后才编译执行。
专门为Runtime生成的代码在.Net中称为可管理代码(Managed
Code)。简单地说,可管理代码意味着在执行代码和Runtime之间定义了一个接口,诸如创建对象、方法调用等任务都可以交给Runtime完成,它同时还向执行代码提供一些附加的服务功能。另外,Runtime还具有平台无关、语言交叉集成、自描述组件、简单配置、版本控制和集成安全服务等特性。
● 平台无关
在图2中,最底层是操作系统但并没有特指是Windows,因此它可以是任何一种操作系统,只要开发出了可在该操作系统下运行的Runtime,就可以在上面执行.Net应用。一个可管理的.Net应用(完全是由可管理代码组成),只要编写一次,就能够在任何支持.Net
的平台上执行。Microsoft.Net的平台无关性与Java完全一样。
● 语言集成
过去,我们可以用不同的编程语言实现对COM的互操作,现在,.Net实现了语言的相互集成。例如,用C++建立一个类,而其基类是VB实现的类,则.Net可以实现这一目标,因为它定义并提供了一个对所有.Net语言都通用的公共类型系统。
● 公共类型系统
语言集成是在公共类型系统的基础上实现的,公共类型系统能表示绝大多数现代编程语言的语法。通过定义一组标准的类型和规则集,可建立新的类型,Runtime知道怎样建立和执行这些类型(类)。编译器和解释器使用Runtime提供的服务来定义类型、管理对象和进行方法调用,而以前是使用工具或某种语言特定的方法来完成同样的事情。
● 自描述组件
自描述组件可以大大简化系统的开发、配置,并且改进系统的可靠性。由Runtime提供的许多服务都需要元数据(metadata)的驱动,元数据是执行代码的附加信息,由于所有的数据和代码都放在一个文件中,因此,这个执行文件在.Net中称作自描述组件。自描述组件最主要的优点是使用这个组件时不再需要其他文件。
● 汇编(assembly)
.Net
框架再次提出了汇编的概念。这里的汇编与DOS下宏汇编的概念稍有不同,在这里,一个汇编是资源、类型(类)以及与资源和类型相关的元数据的组合,它们可以被装配成一个单元(Unit)。元数据称作汇编清单,它包括一些信息,例如对外可见的类型(类)以及资源的列表信息。一个汇编可以专属于某个应用,也可由多个应用共享。另外,一个汇编的多个版本也可以同时放在一台机器上。
● .Net 安全
Runtime
提供了系统的安全服务,以保证未授权用户不能访问机器上的资源,并且代码也不能完成未授权的活动,这将大大改善系统的安全性和可靠性。由于用Runtime加载代码、建立对象并实现方法调用,因此,当可管理代码被加载和执行时,Runtime可以进行安全检查和执行安全策略。.Net框架提供了两种安全方案:代码访问安全和基于角色的安全。
● 中间语言和JIT编译器
在.Net中,编译器产生的可管理代码并不是x86机器码或其他机器码,而是Microsoft中间语言(MSIL)代码。MSIL比大多数机器语言的层次高,它懂得对象类型,有建立和初始化对象、在对象上调用虚拟方法以及直接操纵数组元素等指令,它甚至有提交和捕捉例外进行错误处理的指令。MSIL指令不能在CPU上直接执行,因此,Runtime引擎必须首先编译可管理的MSIL指令,使其成为本地CPU指令。
2. Win Forms应用模型
在图2中可以看到,在服务框架的上方有两种应用模型:Win
Forms应用模型和Web应用模型。虽然.Net框架的主要目标是开发Web服务和Web应用,但它也可以用来开发传统的Windows应用,同时这些应用也可以使用Web
Services。
在写Windows客户端应用程序时采用Win
Forms应用模型,可以调用Windows丰富的界面功能,包括现存的ActiveX控件和一些Windows
2000新功能。不管是选择传统的Windows方式还是新的Web方式,Win Forms编程模型和设计支持都是非常直观的,与现在的Windows窗体方式很相似。
Win
Forms同样也利用了.Net框架的Runtime引擎,这样可以减少Windows客户端应用程序的开发工作量。.Net框架的安全模型保证了在客户端机器上能够安全地执行应用程序和组件。
3. Web 应用模型
Microsoft
.Net框架下的Web应用程序模型称作ASP+。在这个模型中,一个Web应用是从一些基URL引伸而来的一组URL,它涵盖了在浏览器中产生显示页面的Web应用和Web
Services。ASP+是从ASP发展而来。ASP+充分利用了公共语言运行环境(Runtime)和服务框架(Services
Framework),为Web应用提供可靠的、坚固的和可伸缩的运行环境。另外,系统提供的服务使应用的开发、配置也变得很简单。ASP+的核心概念是HTTP
Runtime、模块管道和请求处理器。HTTP
Runtime是基于底层结构建立的高性能HTTP处理运行环境;模块管道和请求处理器则增强了系统的灵活性和可扩展性。另外,ASP+还对ASP中的三种Web应用状态管理功能进行了增强,并提供了缓存服务。在ASP+编程模型之上,还有以下两种更高级的编程模型:
● ASP+ Web Forms
Web
Forms的开发风格类似VB窗体的快速应用开发。Web
Forms支持传统的ASP语法:混合HTML内容和脚本代码,但它也提供了一个结构化的方法,可以将应用代码和用户界面内容分离。新引入的Web
Forms控件提供了一个机制,即可以将公共用户界面内容打包。这样,我们可以使用类似VB的工具,以所见即所得的方式完成Web页面布局开发。使用控件的一个重要优点是让程序能自适应客户端的特点,这样,相同的页面就能适应多种不同的客户端平台,包括低端浏览器的HTML3.2和IE5.0的动态HTML。
代码和内容的分离使得ASP+页面可动态编译成可管理的类,从而使性能有很大的提高。
● ASP+ Web
Services
ASP+ Web Services编程模型的主要优点是简化了Web
Services的开发,同时,其编程模型也非常类似人们已熟悉的ASP或VB开发。
开发者用ASP+建立Web服务的方法很简单,通过编写一个扩展名为.ASMX的文件,并且将其配置成Web应用的一部分即可。ASMX文件要么包含一个对已定义的可管理类的引用,要么本身有一个类定义,且类是从ASP+提供的Web
Services类中导出来的。
目前,微软正在积极地实施它的.Net战略,及早地了解有关技术细节,将会有助于我们开发出更好的应用产品。