Microsoft.Net与Web Service

Microsoft.Net 与 Web Service

Microsoft.Net 是 Microsoft 的新一代 Internet 全面解决方案,开发者利用 .Net 平台、产品和服务,可以轻松地建设真正分布式的、协作的新一代的 Web 服务,让用户在任何设备、任何时间和任何地点,轻松地获取信息。

1 、 .Net 是什么?

Microsoft .Net 的目标是让分布在不同区域的计算机、设备一起工作,为用户提供各种各样的服务。人们可以控制在什么时候、获取什么信息以及怎样获取信息,而不必像现在这样,用户在无数个信息孤岛中找来找去,寻找着自己需要的信息。例如,我想在居住的小区内找一家烧烤店,并且晚上 7 点还有空位 ; 又比如,我有一笔业务要做,我要知道哪家供货商库存有该货物,如果有几家可以提供该商品,我还要知道谁能给我最好的价格以及谁能最先将货送到。类似这样的服务在现在的 Internet 上并不存在,因为没有一个标准将这些分属于不同单位的信息集成起来。 Microsoft .Net 将彻底改变现在 Internet 的工作方式,推动下一代 Internet 的发展。 XML 和 SOAP 是实现上述伟大理想的核心技术。

简单地说, .Net 主要由两大部分组成:

l           .Net 平台

包括 .Net 基础框架、工具和核心服务等;

l           .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 还具有平台无关、语言交叉集成、自描述组件、简单配置、版本控制和集成安全服务等特性。

l           平台无关             在图 2 中,最底层是操作系统但并没有特指是 Windows ,因此它可以是任何一种操作系统,只要开发出了可在该操作系统下运行的 Runtime ,就可以在上面执行 .Net 应用。一个可管理的 .Net 应用(完全是由可管理代码组成),只要编写一次,就能够在任何支持 .Net 的平台上执行。 Microsoft.Net 的平台无关性与 Java 完全一样。

l           语言集成             过去,我们可以用不同的编程语言实现对 COM 的互操作,现在, .Net 实现了语言的相互集成。例如,用 C++ 建立一个类,而其基类是 VB 实现的类,则 .Net 可以实现这一目标,因为它定义并提供了一个对所有 .Net 语言都通用的公共类型系统。

l           公共类型系统     语言集成是在公共类型系统的基础上实现的,公共类型系统能表示绝大多数现代编程语言的语法。通过定义一组标准的类型和规则集,可建立新的类型, Runtime 知道怎样建立和执行这些类型(类)。编译器和解释器使用 Runtime 提供的服务来定义类型、管理对象和进行方法调用,而以前是使用工具或某种语言特定的方法来完成同样的事情。

l           自描述组件                  自描述组件可以大大简化系统的开发、配置,并且改进系统的可靠性。由 Runtime 提供的许多服务都需要元数据( metadata )的驱动,元数据是执行代码的附加信息,由于所有的数据和代码都放在一个文件中,因此,这个执行文件在 .Net 中称作自描述组件。自描述组件最主要的优点是使用这个组件时不再需要其他文件。

l           汇编( assembly )    .Net 框架再次提出了汇编的概念。这里的汇编与 DOS 下宏汇编的概念稍有不同,在这里,一个汇编是资源、类型(类)以及与资源和类型相关的元数据的组合,它们可以被装配成一个单元( Unit )。元数据称作汇编清单,它包括一些信息,例如对外可见的类型(类)以及资源的列表信息。一个汇编可以专属于某个应用,也可由多个应用共享。另外,一个汇编的多个版本也可以同时放在一台机器上。 ]

l           .Net 安全               Runtime 提供了系统的安全服务,以保证未授权用户不能访问机器上的资源,并且代码也不能完成未授权的活动,这将大大改善系统的安全性和可靠性。由于用 Runtime 加载代码、建立对象并实现方法调用,因此,当可管理代码被加载和执行时, Runtime 可以进行安全检查和执行安全策略。 .Net 框架提供了两种安全方案:代码访问安全和基于角色的安全。

l           中间语言和 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+ 编程模型之上,还有以下两种更高级的编程模型:

l           ASP+ Web Forms               Web Forms 的开发风格类似 VB 窗体的快速应用开发。 Web Forms 支持传统的 ASP 语法:混合 HTML 内容和脚本代码,但它也提供了一个结构化的方法,可以将应用代码和用户界面内容分离。新引入的 Web Forms 控件提供了一个机制 , 即可以将公共用户界面内容打包。这样,我们可以使用类似 VB 的工具,以所见即所得的方式完成 Web 页面布局开发。使用控件的一个重要优点是让程序能自适应客户端的特点,这样,相同的页面就能适应多种不同的客户端平台,包括低端浏览器的 HTML3.2 和 IE5.0 的动态 HTML 。代码和内容的分离使得 ASP+ 页面可动态编译成可管理的类,从而使性能有很大的提高。

l           ASP+ Web Services            ASP+ Web Services 编程模型的主要优点是简化了 Web Services 的开发,同时,其编程模型也非常类似人们已熟悉的 ASP 或 VB 开发。开发者用 ASP+ 建立 Web 服务的方法很简单,通过编写一个扩展名为 .ASMX 的文件,并且将其配置成 Web 应用的一部分即可。 ASMX 文件要么包含一个对已定义的可管理类的引用,要么本身有一个类定义,且类是从 ASP+ 提供的 Web Services 类中导出来的。

代码交流 2021