Microsoft .NET框架程序设计——Visual Basic.NET语言描述
基本信息
内容简介回到顶部↑
Microsoft.NET框架为简化开发与互联网无缝连接的应用程序和组件提供了强大的技术支持,如ASP.NET Web窗体。XML Web服务以及Windows窗体。本书的目的在于展示.NET框架中公共语言运行库(CLR)的核心内容。全书由两位广受尊敬的开发者/作者完成,并假设读者理解面向对象程序设计的基本概念,如数据抽象。继承和多态。书中内容清楚地解释了CLR的扩展类型系统,CLR如何管理类型的行为,以及应用程序如何操作类型。虽然本书的重点在Visual Basic.NET,但是全书的内容也同样适用于面向.NET框架的所有编程语言。
作译者回到顶部↑
本书提供作译者介绍
Jeffrey Richter Wintellect公司(www.wintellect.com)的创始人之一,该公司集培训、调试和咨询业务于一身,致力于帮助企业更快更好地构建软件系统。Jeffrey是一位在Windows/.NET领域享有盛誉的技术作家,他有多本Windows/.NET著作畅销全球。其中包括Programming Applications for Microsoft Windows、Programming Server-side Application for Microsoft Windows、以及Applied Microsoft.NET Frame-work Programming。Jeffrey同时还是MSDN Magazine。NET专栏的特邀编辑,他自1999年10月开始便参.. << 查看详细
目录回到顶部↑
第1部分
microsoft.net框架基本原理
第1章 microsoft.net框架开发平台体系架构
1.1 将源代码编译为托管模块
1.2 将托管模块组合为程序集
1.3 加载公共语言运行库
1.4 执行程序集代码
1.5 .net框架类库
1.6 通用类型系统
1.7 通用语言规范
1.8 与非托管代码互操作
第2章 生成、打包、部署及管理应用程序与类型
2.1 .net框架部署目标
2.2 将类型生成为模块
2.3 将模块组合为程序集
2.3.1 使用visual studio.net集成开发环境为项目添加程序集引用
2.3.2 使用程序集链接器
2.3.3 在程序集中包含资源文件
2.4 程序集版本资源信息
2.5 语言文化
microsoft.net框架基本原理
第1章 microsoft.net框架开发平台体系架构
1.1 将源代码编译为托管模块
1.2 将托管模块组合为程序集
1.3 加载公共语言运行库
1.4 执行程序集代码
1.5 .net框架类库
1.6 通用类型系统
1.7 通用语言规范
1.8 与非托管代码互操作
第2章 生成、打包、部署及管理应用程序与类型
2.1 .net框架部署目标
2.2 将类型生成为模块
2.3 将模块组合为程序集
2.3.1 使用visual studio.net集成开发环境为项目添加程序集引用
2.3.2 使用程序集链接器
2.3.3 在程序集中包含资源文件
2.4 程序集版本资源信息
2.5 语言文化
译者序回到顶部↑
Visual Basic(特指Visual Basic 6.0及其以前的版本,以下简称VB)在软件界一直是令大家尴尬的一个话题。一方面它的用户量高居不下,甚至一度成为全世界拥有程序员数量最多的开发语言;一方面只要是一个人在某个场合提到自己是VB程序员,向他投射过来的目光绝对令人窒息,VB程序员一开始就好像比C++、Java等矮了一大截。我本来以为这是“同行相轻”在国内程序员圈子中的延续,只管自己修炼就是。可是后来慢慢在国外的一些技术论坛上也能感觉到这样一股笼罩在VB周围的阴霾气息。以至于最后看到Don Box先生为Programming Distributed Applications with COM+ and Microsoft Visual Basic(Ted Pattison著)一书写的序言之后,我对VB的信心彻底遭到粉碎。Don Box先生在序言中写到VB被大家视作一张“社会安全网”,是一款专门用来为那些能力低下的开发人员提供“社会福利”的程序设计语言。尽管这是Don Box先生的一种调侃,并且他在那篇序言中是力挺VB,而且毫不掩饰地宣称Dim me As VBProgrammer,可那时候年轻气盛的我显然不能接受这样的“侮辱”,这也促成了我早年在VB方向上的匆匆出走。
后来我虽然“逃脱”了VB,但也渐渐认识一些将VB发挥得淋漓尽致的企业应用高手,以及一些将VB剖析得鞭辟入里的名家大师,从而也慢慢对VB有了新的认识:VB有VB的历史地位,VB有VB的用武之地。虽然在那个时候我对于VB已经摈除了早期的戒备心理,但如果有朋友问我学习VB怎么样,我还是持不赞成的态度。理由很简单,VB已经无法融入当今各种炉火纯青的对象组件技术,还有它近乎陡峭的学习曲线——不得不承认的一个事实是几乎所有的VB高手和大师都拥有着COM技术的深厚背景,这是VB的技术渊源,形与影不可能分离。而取道COM对于大多数纯VB出身的人来讲近乎一场噩梦,这有VB的历史原因和微软的定位因素。这两个软肋无法解决,VB就无法真正登堂入室,而且很有可能面临被分化和抛弃的命运。
那些伟大的公司之所以伟大就在于他们总能在历史的转折关头做出正确的决定。随着.NET大潮的澎湃,VB被微软全面翻新,Visual Basic .NET(以下简称VB.NET)诞生了。
VB.NET对于VB是一个划时代的里程碑。.NET带给VB的决不仅仅是一个创新的概念标签,它给予VB从底层运行时、编程方式、框架类库到应用程序模型等等以彻底的革命和提升,VB至此得以步入高端企业级开发的殿堂,和C++、Java、C#等主流程序设计语言平起平坐。以前笼罩在VB头顶上所有的不公正、怀疑、和委屈都一扫而空。.NET为VB进行了一场彻头彻尾的正名运动,重塑了VB在软件开发界的地位。
实际上,这场正名运动的对象不光是VB这门语言,当然也包括和它息息相关的开发人员。随着这场正名运动的开展,VB程序员也从此得以踏上程序人生的康庄大道。
然而为VB正名容易,正视VB.NET的价值容易,学习掌握VB.NET就不是那么容易的事情了。还要走VB时代可视化拖拉控件编程的老路吗?不,当然不是,如果还是沿着这条老路走,那么VB.NET将会不可避免地再次蒙羞。实际上,我本人并没有对可视化拖拉控件的编程方式有多大的成见,恰恰相反,在做企业应用项目开发时,我还是非常鼓励项目组成员使用高级IDE中各种方便的Wizard。只是这一切必须建立在对程序设计语言及其运行机制游刃有余的掌握这一前提之上。从某种角度来看,与其说是VB让使用它的程序员蒙羞,不如说程序员学习VB的方式让VB蒙羞。如果一个程序员一开始就使用IDE中的Wizard来构建应用程序,而弃程序设计语言本身的语法语义、编译机制、运行机制等于不顾,那么他不可能步入程序设计的殿堂。而VB由于本身的语言构造和微软对它的定位等因素,很容易将程序员导向这一误区,末了又用COM树立起一座高墙。这就像长长的一马平川之后突然竖起一座悬崖峭壁,很多人过不去是可以理解的。所以虽然有了.NET的正名,我们却决不能忽视对VB.NET学习方法的探究。要想彻底掌握VB.NET,必须选择一条正确的道路。
在本书中,Jeffrey Richter 和 Francesco Balena就为我们指出了这样一条最佳路径——那就是从底层运行时学起。底层不是FUD(害怕、不确定、怀疑),而是真真切切的结构,是可以剖析、认识、从而驾驭的知识体系。在.NET平台中,.NET框架占据着核心的位置,是所有.NET程序设计语言的“底层”。相对于.NET框架而言,具体的语言学习已经是一个仅限于语法表达的次要问题了。实际上任何一门.NET编程语言提供的功能都只是.NET框架下一个子集的映射,如果您阅读本书后掌握了.NET框架中各个核心的概念后,掌握和精通任何一门.NET编程语言都将是一件非常轻松的事情。本书涵盖了.NET框架技术中几乎所有重要的概念和机制:程序集,元数据,引用类型与值类型(装箱/拆箱),类型成员,接口,特性,委托,异常处理,垃圾收集,反射等等。涵盖这些技术本身并不难,难的是如何用平实的语言和简短的代码来为读者建立起有关它们的正确观念和开发技能,而这正是Jeffrey Richter先生作为优秀技术作家所擅长的地方。“庖丁解牛,鞭辟入里”,这恐怕是阐述软件技术的最高境界了。事实上,本书对VB.NET技术的剖析方式本身就是一种对VB的正名运动,我相信它会改变很多VB.NET开发人员的程序设计学习观念。
需要说明的是,这里所言的底层有一个相对性,相对于VB.NET这门语言,我们说.NET框架就是它的底层;相对于使用VB.NET的应用程序开发人员,掌握.NET框架就算掌握了基本的底层。如果不看对象而无限推导,任何东西都可以被推导到“表层”。很简单,一个VB.NET编译器的开发人员不会认为.NET框架是底层,那么这本书对他而言也只是一本小学教材,谈不上价值高昂。所以,大家在阅读这篇译序和全书时,请务必记住本书的定位:VB.NET应用程序开发人员。另外,本书在VB.NET的语法语义方面着墨不多,这方面大家可以直接到网上参考微软MSDN文档中的Visual Basic .NET Language Specification,或者其他类似的书。
有了好书,也要有好的阅读方法。就本书来讲,我强烈建议大家在阅读的同时多动手演练书中的代码,否则阅读的效果要大打折扣,因为很多技术细节和观念都需要通过代码来反复咀嚼才能很好地吸收。大家演练代码时,建议刚开始准备一个VBC.EXE(.NET框架SDK中附带的VB.NET编译器)和一个文本编辑器(比如记事本、UltraEdit、Emacs等),而避免使用Visual Studio.NET这样大型豪华的IDE。这样的编程方式对一些习惯了可视化编程的VB程序员可能有些陌生——但是,请相信我,这样的投入非常值得,从最微观的源代码和最原始的编译器工具开始对于建立正确的程序设计观念非常重要。等待熟练了之后,再使用Visual Studio.NET这样的IDE必然是游刃有余。另外,.NET框架SDK中附带的ILDasm.EXE也是一个很好的工具,经常使用它来观察程序集反汇编后的内容对于深入理解程序运行机制很有帮助。
容我再稍费笔墨简单介绍一下本书的两位作者Jeffrey Richter 和 Francesco Balena,以及它的诞生过程。Jeffrey Richter先生是Windows/.NET程序设计领域享有盛誉的技术作家,著名技术刊物MSDN杂志 .NET专栏撰稿人。Jeffrey先生早在1999年就参与了微软.NET框架的开发与咨询工作,同期写就经典大作《Applied Microsoft.NET Framework Programming》。可惜这本书的描述语言为C#,虽然其讲述的技术内容对于所有的.NET编程语言都同等适用。不过幸运的是,时隔不久Jeffrey先生就应广大VB.NET社区的要求,并邀请VB领域的卓越技术作家 Francesco Balena先生(很多早期的VB程序员应该记得这位Visual Basic的“guru”)加盟,将《Applied Microsoft.NET Framework Programming》用VB.NET语言重写,本书便诞生于此。
关于VB.NET和C#等其他.NET语言之间的选择问题,这里不打算做过多的纠缠,笔者只是想告诉大家这实在是个语言语法风格的“萝卜白菜”问题,完全不存在技术之争。如果您已经熟悉了VB语言的风格,那么转向VB.NET是最为快捷的一条道路。
最后我要感谢所有对本书的翻译给予过帮助和支持的朋友。尤其是Jeffrey Richter和Francesco Balena两位优秀的技术作家,是他们卓越的技术能力和认真负责的态度成就了这本优秀之作。还有本书的两位技术审校陈铭和韩睿先生,他们的努力为本书增色不少。以及许许多多朋友、知名和不知名的网友,谢谢你们给我的鼓励和支持。
我不奢望每一个Visual Basic程序员都能够立即热情地拥抱此书,但是我期望所有有志于在Visual Basic.NET领域耕耘的人不要错过它。
李建忠 2003/12 于上海浦东
jzli(a)china.com(个人电子邮箱,欢迎读者的批评等阅读反馈)
www.lijianzhong.com(个人网站,提供本书勘误、代码、FAQ等支持)
www.dreambrook.com/jzli(个人博客,欢迎参与本书讨论)
后来我虽然“逃脱”了VB,但也渐渐认识一些将VB发挥得淋漓尽致的企业应用高手,以及一些将VB剖析得鞭辟入里的名家大师,从而也慢慢对VB有了新的认识:VB有VB的历史地位,VB有VB的用武之地。虽然在那个时候我对于VB已经摈除了早期的戒备心理,但如果有朋友问我学习VB怎么样,我还是持不赞成的态度。理由很简单,VB已经无法融入当今各种炉火纯青的对象组件技术,还有它近乎陡峭的学习曲线——不得不承认的一个事实是几乎所有的VB高手和大师都拥有着COM技术的深厚背景,这是VB的技术渊源,形与影不可能分离。而取道COM对于大多数纯VB出身的人来讲近乎一场噩梦,这有VB的历史原因和微软的定位因素。这两个软肋无法解决,VB就无法真正登堂入室,而且很有可能面临被分化和抛弃的命运。
那些伟大的公司之所以伟大就在于他们总能在历史的转折关头做出正确的决定。随着.NET大潮的澎湃,VB被微软全面翻新,Visual Basic .NET(以下简称VB.NET)诞生了。
VB.NET对于VB是一个划时代的里程碑。.NET带给VB的决不仅仅是一个创新的概念标签,它给予VB从底层运行时、编程方式、框架类库到应用程序模型等等以彻底的革命和提升,VB至此得以步入高端企业级开发的殿堂,和C++、Java、C#等主流程序设计语言平起平坐。以前笼罩在VB头顶上所有的不公正、怀疑、和委屈都一扫而空。.NET为VB进行了一场彻头彻尾的正名运动,重塑了VB在软件开发界的地位。
实际上,这场正名运动的对象不光是VB这门语言,当然也包括和它息息相关的开发人员。随着这场正名运动的开展,VB程序员也从此得以踏上程序人生的康庄大道。
然而为VB正名容易,正视VB.NET的价值容易,学习掌握VB.NET就不是那么容易的事情了。还要走VB时代可视化拖拉控件编程的老路吗?不,当然不是,如果还是沿着这条老路走,那么VB.NET将会不可避免地再次蒙羞。实际上,我本人并没有对可视化拖拉控件的编程方式有多大的成见,恰恰相反,在做企业应用项目开发时,我还是非常鼓励项目组成员使用高级IDE中各种方便的Wizard。只是这一切必须建立在对程序设计语言及其运行机制游刃有余的掌握这一前提之上。从某种角度来看,与其说是VB让使用它的程序员蒙羞,不如说程序员学习VB的方式让VB蒙羞。如果一个程序员一开始就使用IDE中的Wizard来构建应用程序,而弃程序设计语言本身的语法语义、编译机制、运行机制等于不顾,那么他不可能步入程序设计的殿堂。而VB由于本身的语言构造和微软对它的定位等因素,很容易将程序员导向这一误区,末了又用COM树立起一座高墙。这就像长长的一马平川之后突然竖起一座悬崖峭壁,很多人过不去是可以理解的。所以虽然有了.NET的正名,我们却决不能忽视对VB.NET学习方法的探究。要想彻底掌握VB.NET,必须选择一条正确的道路。
在本书中,Jeffrey Richter 和 Francesco Balena就为我们指出了这样一条最佳路径——那就是从底层运行时学起。底层不是FUD(害怕、不确定、怀疑),而是真真切切的结构,是可以剖析、认识、从而驾驭的知识体系。在.NET平台中,.NET框架占据着核心的位置,是所有.NET程序设计语言的“底层”。相对于.NET框架而言,具体的语言学习已经是一个仅限于语法表达的次要问题了。实际上任何一门.NET编程语言提供的功能都只是.NET框架下一个子集的映射,如果您阅读本书后掌握了.NET框架中各个核心的概念后,掌握和精通任何一门.NET编程语言都将是一件非常轻松的事情。本书涵盖了.NET框架技术中几乎所有重要的概念和机制:程序集,元数据,引用类型与值类型(装箱/拆箱),类型成员,接口,特性,委托,异常处理,垃圾收集,反射等等。涵盖这些技术本身并不难,难的是如何用平实的语言和简短的代码来为读者建立起有关它们的正确观念和开发技能,而这正是Jeffrey Richter先生作为优秀技术作家所擅长的地方。“庖丁解牛,鞭辟入里”,这恐怕是阐述软件技术的最高境界了。事实上,本书对VB.NET技术的剖析方式本身就是一种对VB的正名运动,我相信它会改变很多VB.NET开发人员的程序设计学习观念。
需要说明的是,这里所言的底层有一个相对性,相对于VB.NET这门语言,我们说.NET框架就是它的底层;相对于使用VB.NET的应用程序开发人员,掌握.NET框架就算掌握了基本的底层。如果不看对象而无限推导,任何东西都可以被推导到“表层”。很简单,一个VB.NET编译器的开发人员不会认为.NET框架是底层,那么这本书对他而言也只是一本小学教材,谈不上价值高昂。所以,大家在阅读这篇译序和全书时,请务必记住本书的定位:VB.NET应用程序开发人员。另外,本书在VB.NET的语法语义方面着墨不多,这方面大家可以直接到网上参考微软MSDN文档中的Visual Basic .NET Language Specification,或者其他类似的书。
有了好书,也要有好的阅读方法。就本书来讲,我强烈建议大家在阅读的同时多动手演练书中的代码,否则阅读的效果要大打折扣,因为很多技术细节和观念都需要通过代码来反复咀嚼才能很好地吸收。大家演练代码时,建议刚开始准备一个VBC.EXE(.NET框架SDK中附带的VB.NET编译器)和一个文本编辑器(比如记事本、UltraEdit、Emacs等),而避免使用Visual Studio.NET这样大型豪华的IDE。这样的编程方式对一些习惯了可视化编程的VB程序员可能有些陌生——但是,请相信我,这样的投入非常值得,从最微观的源代码和最原始的编译器工具开始对于建立正确的程序设计观念非常重要。等待熟练了之后,再使用Visual Studio.NET这样的IDE必然是游刃有余。另外,.NET框架SDK中附带的ILDasm.EXE也是一个很好的工具,经常使用它来观察程序集反汇编后的内容对于深入理解程序运行机制很有帮助。
容我再稍费笔墨简单介绍一下本书的两位作者Jeffrey Richter 和 Francesco Balena,以及它的诞生过程。Jeffrey Richter先生是Windows/.NET程序设计领域享有盛誉的技术作家,著名技术刊物MSDN杂志 .NET专栏撰稿人。Jeffrey先生早在1999年就参与了微软.NET框架的开发与咨询工作,同期写就经典大作《Applied Microsoft.NET Framework Programming》。可惜这本书的描述语言为C#,虽然其讲述的技术内容对于所有的.NET编程语言都同等适用。不过幸运的是,时隔不久Jeffrey先生就应广大VB.NET社区的要求,并邀请VB领域的卓越技术作家 Francesco Balena先生(很多早期的VB程序员应该记得这位Visual Basic的“guru”)加盟,将《Applied Microsoft.NET Framework Programming》用VB.NET语言重写,本书便诞生于此。
关于VB.NET和C#等其他.NET语言之间的选择问题,这里不打算做过多的纠缠,笔者只是想告诉大家这实在是个语言语法风格的“萝卜白菜”问题,完全不存在技术之争。如果您已经熟悉了VB语言的风格,那么转向VB.NET是最为快捷的一条道路。
最后我要感谢所有对本书的翻译给予过帮助和支持的朋友。尤其是Jeffrey Richter和Francesco Balena两位优秀的技术作家,是他们卓越的技术能力和认真负责的态度成就了这本优秀之作。还有本书的两位技术审校陈铭和韩睿先生,他们的努力为本书增色不少。以及许许多多朋友、知名和不知名的网友,谢谢你们给我的鼓励和支持。
我不奢望每一个Visual Basic程序员都能够立即热情地拥抱此书,但是我期望所有有志于在Visual Basic.NET领域耕耘的人不要错过它。
李建忠 2003/12 于上海浦东
jzli(a)china.com(个人电子邮箱,欢迎读者的批评等阅读反馈)
www.lijianzhong.com(个人网站,提供本书勘误、代码、FAQ等支持)
www.dreambrook.com/jzli(个人博客,欢迎参与本书讨论)
前言回到顶部↑
随着时间的推移,我们以计算机为主导的生活方式不断地发生着变化。如今,每个人都注意到了互联网的价值,并开始越来越依赖基于Web的服务。就个人而言,我喜欢通过互联网购物、买票、比较产品、获取交通状况、阅读产品评价等。
然而,我发现仍然有许多事情在目前用互联网是无法完成的。比如,在周围寻找一家有特色风味的餐馆。而且,我还希望能够查询一下这个餐馆在晚上七点钟是否有座位。或者,假如我经营着一家商店,我可能想知道哪家厂商库存中有某种商品的现货。如果有多家厂商可以供货,那我希望能找出价格最低,或者是发货最快的那一家。
诸如此类的服务在今天还不存在,有两个主要的原因。首先, 目前还没有一个标准来集成这些信息。各个厂商都有自己描述产品的方式。旨在描述各类信息的可扩展标记语言(XML)刚刚成为一门新兴标准。其次,开发集成这些服务的复杂性也是一个巨大的挑战。
微软认为销售服务是未来的发展方向。换句话说,就是企业提供服务,而感兴趣的用户消费这些服务。这其中,许多服务将会是免费的,有一些可以通过订购计划获得,同时还将有一些是按使用情况来付费的。我们可以将这些服务视作某种商业逻辑的执行。下面是一些服务的例子:
验证信用卡交易
获取从甲地到乙地的方位
查看餐馆的菜单
预定航班、客房或者出租车
更新在线相册里的照片
合并家长和孩子的日程表来安排一次家庭度假
从支票账户中支付账单
跟踪发送给我们的包裹
还可以列出很多类似的服务,任何一家企业都可以实现这些服务。毫无疑问,微软在不远的将来会创建并提供其中一些服务。其他一些公司也将会提供这样的服务,其中一些还可能在市场中与微软形成竞争。
那么,怎样才能从我们今天所处的世界中便捷地获得所有这些服务呢?我们又怎样利用并组合这些服务来为用户提供更丰富的特色应用(基于HTML或者其他技术)呢?举个例子,如果一些餐馆提供了他们的菜单访问服务,我们就应该能够写出一个应用程序来查询每个餐馆的菜单,搜索某一特定的口味或菜肴,最后向用户推荐那些离他们最近的餐馆。
注意 为了创建这样一些丰富的应用,企业必须提供他们商业逻辑服务的编程接口。这样的编程接口必须可以通过远程网络(比如互联网)进行调用。这也是整个Mcrosoft.NET平台创新的主旨。简单地讲,.NET平台创新之处就是关于人、信息和设备之间的互联。
让我用下面的方式对此做一个解释:我们知道,计算机都有外设(例如鼠标、显示器、键盘、数码相机、扫描仪等)与它相连。而操作系统,例如微软的Windows,则将应用程序对这些外设的访问抽象化,以为我们提供了一个开发平台。我们完全可以将这些外设看作.NET平台中的服务。
在.NET平台所描述的这个崭新世界里,服务(或者外设)将与互联网络相连接。开发人员需要一种便捷的方式来访问这些服务,而Microsoft.NET创新的一部分便是提供一个这样的开发平台。下图展示了它们之间的一个类比。左边,从开发人员来看,Windows是一个抽象了硬件外设的开发平台。右边,从开发人员来看,Microsoft.NET框架则是一个抽象了XML Web服务通信的开发平台。
虽然是在相关标准的开发和定义方面的一个领导者——正是这些标准使这样的新世界成为可能,但微软并不拥有其中的任何标准。客户机通过创建特殊格式的XML来描述一个服务器请求,然后通过企业内部网或者互联网来发送它(通常使用HTTP协议)。服务器知道怎样分析这些XML数据,处理客户的请求,然后再以XML作为响应传回客户机。其中SOAP(简单对象访问协议)在这里被用来描述通过HTTP协议发送的特殊格式的XML。
下图描述了一组XML Web服务相互之间通过带XML负载的SOAP进行通信的情形。另外,图中还向我们描述了客户端应用程序可能与Web服务、甚至其他客户端(通过SOAP或者XML)进行通信的情形。此图向我们展示的是客户通过HTML从一个Web服务器获得请求结果的情形。这时,用户可能会首先在一个Web窗体上填写自己的请求,
然后将这个Web窗体发送回Web服务器。接着,Web服务器处理用户的请求(包括与一些Web服务进行通信),最后将结果以HTML页面的形式返回给终端用户。
然而,我发现仍然有许多事情在目前用互联网是无法完成的。比如,在周围寻找一家有特色风味的餐馆。而且,我还希望能够查询一下这个餐馆在晚上七点钟是否有座位。或者,假如我经营着一家商店,我可能想知道哪家厂商库存中有某种商品的现货。如果有多家厂商可以供货,那我希望能找出价格最低,或者是发货最快的那一家。
诸如此类的服务在今天还不存在,有两个主要的原因。首先, 目前还没有一个标准来集成这些信息。各个厂商都有自己描述产品的方式。旨在描述各类信息的可扩展标记语言(XML)刚刚成为一门新兴标准。其次,开发集成这些服务的复杂性也是一个巨大的挑战。
微软认为销售服务是未来的发展方向。换句话说,就是企业提供服务,而感兴趣的用户消费这些服务。这其中,许多服务将会是免费的,有一些可以通过订购计划获得,同时还将有一些是按使用情况来付费的。我们可以将这些服务视作某种商业逻辑的执行。下面是一些服务的例子:
验证信用卡交易
获取从甲地到乙地的方位
查看餐馆的菜单
预定航班、客房或者出租车
更新在线相册里的照片
合并家长和孩子的日程表来安排一次家庭度假
从支票账户中支付账单
跟踪发送给我们的包裹
还可以列出很多类似的服务,任何一家企业都可以实现这些服务。毫无疑问,微软在不远的将来会创建并提供其中一些服务。其他一些公司也将会提供这样的服务,其中一些还可能在市场中与微软形成竞争。
那么,怎样才能从我们今天所处的世界中便捷地获得所有这些服务呢?我们又怎样利用并组合这些服务来为用户提供更丰富的特色应用(基于HTML或者其他技术)呢?举个例子,如果一些餐馆提供了他们的菜单访问服务,我们就应该能够写出一个应用程序来查询每个餐馆的菜单,搜索某一特定的口味或菜肴,最后向用户推荐那些离他们最近的餐馆。
注意 为了创建这样一些丰富的应用,企业必须提供他们商业逻辑服务的编程接口。这样的编程接口必须可以通过远程网络(比如互联网)进行调用。这也是整个Mcrosoft.NET平台创新的主旨。简单地讲,.NET平台创新之处就是关于人、信息和设备之间的互联。
让我用下面的方式对此做一个解释:我们知道,计算机都有外设(例如鼠标、显示器、键盘、数码相机、扫描仪等)与它相连。而操作系统,例如微软的Windows,则将应用程序对这些外设的访问抽象化,以为我们提供了一个开发平台。我们完全可以将这些外设看作.NET平台中的服务。
在.NET平台所描述的这个崭新世界里,服务(或者外设)将与互联网络相连接。开发人员需要一种便捷的方式来访问这些服务,而Microsoft.NET创新的一部分便是提供一个这样的开发平台。下图展示了它们之间的一个类比。左边,从开发人员来看,Windows是一个抽象了硬件外设的开发平台。右边,从开发人员来看,Microsoft.NET框架则是一个抽象了XML Web服务通信的开发平台。
虽然是在相关标准的开发和定义方面的一个领导者——正是这些标准使这样的新世界成为可能,但微软并不拥有其中的任何标准。客户机通过创建特殊格式的XML来描述一个服务器请求,然后通过企业内部网或者互联网来发送它(通常使用HTTP协议)。服务器知道怎样分析这些XML数据,处理客户的请求,然后再以XML作为响应传回客户机。其中SOAP(简单对象访问协议)在这里被用来描述通过HTTP协议发送的特殊格式的XML。
下图描述了一组XML Web服务相互之间通过带XML负载的SOAP进行通信的情形。另外,图中还向我们描述了客户端应用程序可能与Web服务、甚至其他客户端(通过SOAP或者XML)进行通信的情形。此图向我们展示的是客户通过HTML从一个Web服务器获得请求结果的情形。这时,用户可能会首先在一个Web窗体上填写自己的请求,
然后将这个Web窗体发送回Web服务器。接着,Web服务器处理用户的请求(包括与一些Web服务进行通信),最后将结果以HTML页面的形式返回给终端用户。
相关资源回到顶部↑
· 【推荐】众多高校学子口口相传,他们共同的选择--华清远见嵌入式学院(嵌入式Linux就业课程、3G手机开发就业课程,通过入学测试即签100%就业协议,4个月集中实训,世界500强企业成功就业保障!!!)· 【亚嵌教育 嵌入式培训专家】(嵌入式培训,嵌入式Linux培训,ARM培训,Linux培训,3G培训,Android培训,WINCE培训,DSP培训,FPGA培训,嵌入式就业培训)
· InfoQ中文站论坛:.NET讨论区(InfoQ .NET)
· 程序员的7种武器(正则表达式、编程语言、数据库、算法、软件调试、开发环境)
· WCF的开山之作 WCF画卷的清明上河图(WCF WF WPF)








点击看大图






加载中...

