不可否认应用软件的开发正在经历一次巨变——将最终增强开发人员的生产力并开启一道通向全新概念的应用程序的大门
新型的开发模式正逐渐被推广将分发软件演变成一种服务还有待于所有开发人员的共同努力而互联网却将彻底改变应用程序的开发模式和配置方式
传统上软件开发人员通过集成本地系统服务的方式开发应用程序这种模型使开发人员有权使用一整套丰富的开发资源精确控制应用程序的性能
如今开发人员在很大程度上已挣脱了这种模式的束缚致力于构建具有复杂结构的n层系统这种系统能将网络中各处的众多的应用程序进行集成并大大提升应用程序的价值这样开发人员便可集中精力挖掘软件独特的商业价值而不必日夜为如何构建基本结构伤脑筋了令人欣喜的局面将应运而生软件投放市场的时间大大缩短开发人员的编程效率明显提高最为根本的是开发出质量上乘的软件
我们正在进入计算机发展的下一个阶段——基于Internet的阶段特别是基于Internet核心技术——XML扩充标记语言尽管多层应用程序开发将焦点集中在建造大型企业级应用程序上但现在XML使得能够创建可用于任何人任何场所的大型应用程序它扩大了应用程序的使用范围这样软件就不是只能从CD上安装的某种东西而是一种服务——就像呼叫服务或者计费电视一样可以通过通信媒体来预订
这一切是通过将紧密联接的高效的n层计算技术与面向消息的松散联接的Web概念相结合来实现的我们将这种计算风格称为Web Service(Web服务)它的出现标志着人类已经迈入应用程序开发技术的新纪元Web服务是一种应用程序它可以使用标准的互联网协议像超文本传输协议(HTTP)和XML将功能纲领性地体现在互联网和企业内部网上
我们也可将Web服务视作Web上的组件编程
从理论上讲开发人员通过调用Web应用编程接口(API)将Web服务集成进他们的应用程序就像调用本地服务一样两者区别在于前者能够通过Internet发送到某个远程系统的服务上例如像微软护照(Microsoft Passport)这样的服务可以给开发人员提供应用程序身份确认的功能通过对护照服务编程开发人员就可以利用护照服务的基础体系实现维护用户数据库确信服务开启和运行以及正确地备份等等功能
■松散联接
跨越网络的分布应用程序逻辑的概念并不是一个新名词但跨越Web的分布和集成应用程序逻辑的概念却是
此前像微软的DCOM (Distributed Component Object Model )Object Management Group公司的CORBA (Common Object Request Broker Architecture )以及Sun公司的RMI(Remote Method Invocation )这些分布式对象模型被称为分布应用程序逻辑运用这些系统结构虽然服务放在远程系统上开发人员仍然可以像原来本机编程那样维护和丰富应用程序的功能
但这种系统的问题是不能扩展到Internet因为该体系的基础是服务器上的客户端和服务器的紧密联结这意味着两者必须是同质的基础体系但也就常常意味着这种系统是非常脆弱的如果有任何一端接口发生变化另一端程序必然就会被中断举个例子如果服务器应用程序的接口改变了那么客户端也将会失效
开发中要求有一个紧密联接的系统这本身没有错而且许多应用程序也一直就是建立在这些系统上的但最终随着时间的流逝这种模型是不会扩展的因为众多公司企业要求相互沟通这很难保证会有一个统一的系统同样也很难保证你的客户的服务器会有你所需要的完全一致的系统你甚至都不可能猜想到它所用的是什么操作系统什么对象模型和什么编程语言
相反Web服务的联接非常松散这就意味者你可以在联接的任何一端任意改变接口而应用程序可以不受影响地照常工作从技术上说这主要是由于使用了拥有稳固性能的基于消息的异步技术如像HTTPSMTP等Web标准协议而且最重要的是XML可以帮助实现其通用性
作为一个宏伟的计划NET的路还很长今后的发展无论是崎岖坎坷还是一片光明在对新技术和IT产业的推动上微软都是功不可没的
消息系统将通信的基本单元打包进自描述的运用于网络通信层的包(被称做消息)消息系统和分布式对象系统的关键区别在于发送者需要对接收者的系统了解多少使用分布式的对象系统发送者需要帮助接收者考虑许多问题比如应用程序将如何激活和卸载调用的是什么接口等等
另一方面消息系统在通讯层上达成协议发送者只需考虑的是接收者能够知道信息正被发送发送方不需要了解一旦消息被收到后将会如何处理也不需要对发送方和接收方之间作任何考虑
在通讯层上达成协议的优势是显而易见的例如协议能够使接收方随时作修改而无须中断发送方只要该协议始终明白是同一条消息接收方不用中断任何当前应用程序可以自由升级和改进更进一步说就是发送方不用要求任何特殊的软件就可以和接收方交谈只要他发送的是符合格式的信息接收方就可以作出应答
■XML的通讯基础SOAP
建造跨越Web的 Web服务的工作和异步系统的关键是使用统一的数据说明格式这就是XML特别说明的是Web服务器在三方面需要XML来实现基础语言服务说明以及服务发现
● SOAP系统在底层需要有统一语言特别地应用程序相互通讯需要建立一套规则来说明如何表示不同数据类型(如整数和数组)如何表示命令(如进行数据处理)同时应用程序在需要时还可以扩充这种语言简单对象存取协议SOAP(Simple Object Access Protocol)这是XML的一种实现代表了一组如何表示和扩充数据和命令的规则集
● WDSL(Web Services描述语言) 一旦应用程序有了如何表述数据和命令的基本规则他们就需要如何描述可以接收的特定数据和命令应用程序只是声明如何接收整数是不够的他们必须用明确的方法声明如给你两个整数把它们相乘WDSL是一种XML语法开发人员和开发工具可以用它来表示Web服务的功能
● SOAP Discovery最后需要一组规则来定位服务的描述——对于开发者和开发工具在什么地方可以发现一个Web服务SOAP Discovery规范提供了一组规则让开发者和开发工具可以自动发现Web服务的描述
一旦这些准备好了开发者可以方便地发现Web 服务把它作为一个对象集成进他们的应用程序并使应用程序和Web服务相互通讯
■NET框架:Web服务引擎
很显然许多基本结构都需实现上述进程对开发人员和用户的透明化NET框架(NET Framework)提供此基本结构从NET框架角度看所有组件都可以是Web服务而Web服务也仅是一种组件实际上NET框架提取出微软组件对象模型(COM)的精华将它们与松散联接计算的精华有机地结合在一起生成了强大高效的Web组件系统简化程序员的管道操作深入地集成了安全性引进了基于互联网的操作系统极大地改善应用程序的可靠性和可扩展性
NET框架由三个主要部分组成通用语言运行库一套层次结构的统一类库和一个被称为ASP+的高级ASP版本
有关NET的许多东西让人印象深刻尤其是微软充分传达出的对互联网作为未来主要技术平台的首肯和在某些方面对公开的标准的欢迎
NET的确牵动着每个人的猜测……
通用语言运行库
除了通用语言运行库的字面含义外在开发阶段和运行过程中它还扮演着另一个角色在组件运行时运行库负责管理内存分配启动和中止线程和进程强化安全系数同时还调整任何该组件涉及到的其他组件的附件配置在开发阶段运行库的角色稍微有点变化因为很多方面可以自动实现(例如内存管理等)运行库可以使开发过程变得非常简单特别是同今天的COM编程相比更是如此特别典型的是像Reflection这样的特性可以极大地缩小开发人员将商业逻辑转化成一个可重复使用的组件而不得不编写的代码数量
运行库对于编程语言来说并不是新鲜的东西实际上每一种编程语言都已包含一个运行库Visual Basic开发系统有最明显的运行库(正规名字为VBRUN)Visual C++也有一个MSVCRT此外像Visual FoxProJscriptSmallTalkPerlPython和Java等等都如此NET框架的关键角色就是它提供了一个跨所有编程语言的统一环境
统一编程类
NET框架类为开发人员提供了一套可以使用的统一的面向对象异步层次结构的可扩展类库现在C++的使用者使用Microsoft Foundation ClassesJava程序员使用Windows Foundation ClassesVisual Basic的用户使用Visual Basic APIs微软用NET框架统一了这些不同的框架结果是开发人员不用非去学多个框架来完成自己的工作而且通过创建一套跨编程语言的通用APINET框架可以实现跨语言继承纠错处理以及程序调试实际上从JScript 到C++的所有编程语言对于Net框架都是相互等同的开发人员可以自由地选择他们想使用的任何语言
NET是一种全新的平台它将对现有的所有代码产生影响盖茨说微软所有的产品都会被涉及我们的整个战略是围绕这个平台展开的
ASP+
ASP+是使用 NET框架提供的类库构建而成的它提供了一个Web应用程序模型该模型由一组控件和一个基本结构组成有了它Web应用程序的构建变得非常容易开发人员可以直接使用ASP+控件集该控件集封装了公共的用于超文本标识语言(HTML)用户界面的各种小组件(诸如文本框下拉选单等等)实际上这些控件运