.Net与Web服务介绍冯百明2002年11月内容•.NET介绍•.NET平台•.NETWeb服务•GXA-GlobalXMLWSArchitecture•.NETCompact框架.NET介绍.NET的起源COMCOM+DCOM.NETMTS199319971999.NET概述•Microsoft.NET是MicrosoftXMLWeb服务平台。•XMLWeb服务允许应用程序通过Internet进行通讯和共享数据,而不管采用的操作系统、设备或编程语言是否相同。•Microsoft.NET平台提供创建XMLWeb服务并将这些服务集成在一起所需要的功能。•Microsoft.NET平台上Web服务是关键1/3.NET的目标•跨平台的交互,多种语言支持•代码重用•自动管理资源•类型安全•错误处理•消除DLLhell•安全跨平台的交互,多种语言支持•.NET平台支持许多程序设计语言,每种语言都要有自己的编译器•用A语言写的例程可以调用B语言写的例程•A语言的一个模块可以定义一个变量,该变量的类型在B中定义是一个class,A中用该变量可以调用B中的相应功能.•如果A、B都是面向对象的语言,A中的一个类可以继承B中的一个类•有A语言写的例程触发的异常,如果A语言不能够处理可以传递给用B语言写的调用者,用B语言自己的异常处理机制处理异常•为使用.NET,程序员不需要学习一种全新的语言代码重用•原来的应用在.NET环境不需要用新语言重写,可以在.NET直接使用•几百万行的COBOL代码,只做一些porting的工作,就可以在.NET环境下重复使用资源自动管理•自动分配内存,自动取消内存分配(Garbagecollector)•Runtime自动处理对象layout并管理对象的references。当该对象不再使用的时候自动释放。内存自动管理解决了两个最常见的应用错误,memoryleaks和invalidmemoryreferences.类型安全•每一种数据结构在.NET支持的所有语言中有相同的layout•这意味着某些代码可以使用定义在其它语言中的类型和实例错误处理•debugging期间,调试人员能够在不同语言写成的模块之间自由地、无缝地来回移动•.NET提供结构的异常处理,类似于C++或Java中的情况DLLhell•不同的应用能共享某些DLL,安装一个新的应用可能覆盖一个已经存在的应用依赖的某个DLL,可能导致老的应用不能正常工作(DLLhell).•删除一个应用比较复杂,经常不能imperfectlydone•.NET的命名机制可以避免名字冲突•如果前例中新安装的应用程序确实重写了共享库,现有应用程序可对该库进行修复。等现有应用程序再次启动时,它会检查所有的共享文件。如果发现文件被更改,同时这些更改又是不兼容的,则它可以请求运行时提取一个它可以使用的版本。得益于强大的安全系统,运行时可以安全地执行该操作,这样应用程序就完成了本身的修复工作。安全•根据组件来源的不同(Internet,企业网络,本地计算机),不同可管理组件被授予不同级别的trust。这样可管理组件可以或者不可以执行文件操作、注册表访问操作、或其他一些民敏感功能。•Runtime增强了代码安全性。用户信任一个嵌入在网页中的执行单元能够显示动画、播放歌曲,但不能访问用户的个人数据、文件系统或网络..NET的基本元素智能终端开发工具服务器XMLWEB服务智能终端•智能终端应用软件和操作系统使得PC和其他智能计算设备能够使用XMLWeb服务,允许在任何地点、任何时间访问XMLWeb服务。•通过MicrosoftWindows®XP,WindowsXPEmbedded,WindowsCE.NET,Microsoft正在创建下一代软件终端,使得任何时间、任何地点的连接都可以实现•.NET框架管理的安全运行环境允许开发者创建能在许多智能设备上运行的客户端应用XMLWeb服务•直接通过智能客户端应用使用•能够和其他XMLWeb服务联合使用服务器•Microsoft提供服务器基础设施MicrosoftWindows®2000服务器系列.NET企业服务器•部署、管理、协调XMLWeb服务•XMLWeb服务通过服务器对XML的深层支持使用•.NET平台需要灵活,可靠的服务器基础设施•集成了XML支持的安全的、可扩充的服务器给.NET提供宿主和部署开发工具•MicrosoftVisualStudio.NET•选择合适的语言编写实现代码•把应用封装为XMLWeb服务。VisualStudio.NET自动产生把应用程序变成XMLWeb服务所需要的XML和SOAP接口。开发者集中精力在应用逻辑上•重用已有的XMLWeb服务。VisualStudio.NET为开发者提供了在自己的应用或服务中调用已有XMLWeb服务的功能。.NET平台.NET平台基础设施框架和工具积木块服务CommonLanguageRuntime统一的类库VisualStudio.NET经常调用的国际互联网服务代码更新,查询服务,Messenger,.NETMyServices.NET企业服务器设备运行.NET应用的各种设备.Net框架•.NET框架是.NET平台的编程模型•.NET框架是在Microsoft.NET平台上进行开发的基础,.NET框架以及针对设备的.NET框架简化版为XMLWeb服务和其他应用程序提供了一个高效安全的开发环境,并全面支持XML。•管理许多垂直的细节,使得开发人员把精力集中在编写应用问题本身的事务逻辑代码上•.NET框架的核心技术为:CLR、类库、ASP.NET及ADO.NET。•不依赖于具体的程序设计语言•支持软件重用1/8.NET框架ASPVBFormsMFC&ATLWindowsAPI框架提供统一的编程模型CLS-公共语言规范•定义.NET语言的公共特性•包含有关于数据类型存储、对象等的信息•已经提交给欧洲计算机制造商协会(ECMA)标准化(ECMA-335)•目前只存在Windows平台的,正在开发其他平台(Linux,FreeBSD)的framework版本.CLR•提供了多语言执行环境,可以执行用任何.NET语言编写的程序,使得组件和XMLWeb服务的开发不再受编程语言的限制。•目前,可以用来编写.NET应用程序的编程语言不下20种,如C++、VisualBasic.NET、Jscript、C#、COBOL、Eiffel、Perl、Python、Smalltalk等等。•一个程序第一步编译为微软中间语言(MISL)•MSIL被编译为目标平台的机器代码。•MSIL定义了CLR的指令集•CLR引入了一些能提高应用程序运行可靠性的技术(比如消除了内存泄漏)CLR的功能1.语言集成2.加强安全3.内存管理4.进程管理5.线程管理6.版本管理7.……CLR的交互把所有的软件都映射到.NET对象模型。经过编译,隐藏了类的原来编写语言是什么的信息C++C#Eiffel对象模型平台编译器…VB编译器汇编代码视图C#编译器中间语言代码C++编译器JIT编译器Ngen(NativeImageGenerator)CommonLanguageRuntime操作系统•编译器不产生本地代码,而是生成一个与处理器无关的中间语言–MSIL–MicrosoftIntermediateLanguage–不同语言之间的集成在MSIL层上实现•IL代码执行前需要通过JIT编译为本地机器代码–独立于硬件平台–为设备提供了CompactFrameworkMicrosoftIL-中间语言•从IL代码生成本地可执行代码•输出代码依赖于–CPU类型–操作系统以及版本–命令行开关JIT编译器CLR类型安全•实现了严格的类型和代码检查机制CTS(CommonTypeSystem),增强了代码的健壮性.•CTS保证所有的managedcode是自我描述的•不同的Microsoft和第三方语言编译器生成遵循CTS的managedcodeCLR版本管理•.NET采用了版本管理机制,消除DLLhell问题•每个应用使用DLL,必须指明是什么版本•应用程序需要的每个DLL版本宿主在系统中版本编号•Major或Minor版本号不一样,不兼容•Revision号码不一样,有可能兼容•仅仅Build号码不一样,兼容QFE—QuickFixEngineering兼容和不兼容configurationstartuprequiredRuntimeversion=v1.0.0.0safemode=true//startup/configuration.config文件定义版本VisualStudio.NET•集成开发环境,支持应用快速开发•支持多种语言开发•支持封装好的构件拖拉进应用类库•统一的类库提供了调用平台函数的通用方法,使得我们不必再去学习并研究不同语言的API体系结构ASP.NET•ASP.NET建立在.NETFramework类的基础之上,并提供了由控件和基础部分组成的“Web程序模板”,大大简化了Web程序和XMLWeb服务的开发。程序员直接面对的是一组ASP.NET控件,而这些控件由一些诸如文本框、下拉选单等通用的HTML用户界面构件封装而成。实际上这些控件运行于Web服务器上,并简单地以HTML的形式将用户界面发送到浏览器。ADO.NET•与现有的ADO数据访问模型相比,ADO.NET引入了一些新的特性——基于XML,并且是松散耦合的(loosely-coupled)。ADO.NET使用了脱机(disconnected)数据缓存,使用户能快速地创建出高性能、可靠的XMLWeb服务和现在流行的多层应用程序(N-tierapplications)。EnterpriseServices•建立在Windows2000的ApplicationServices上,并包括了微软COM+服务和消息队列服务,.NETFrameworkEnterpriseServices的可扩展性和可靠性都相当出色,而这对企业级程序(比如事务处理)而言是非常重要的。此外,Windows2000ApplicationServices和.NETFramework的深层整合,使得用户可以将现在通行的基于COM的程序转化为XMLWeb服务,而且整个转化根本不用写一行代码,只需通过一个管理接口(administrativeinterface)就能轻而易举地实现。WindowsForms•Windows窗体为.NETFramework提供了美观的客户端图形用户界面,它囊括了现在的VB组件库(VisualBasiccomponentlibrary)和Windows基础类库(WindowsFoundationClasses),以及高效易用的底层Win32API的所有优点。.NETFramework的优点•可以使用任何编程语言.NETFramework允许开发者以任何语言进行开发,使不同语言开发的程序结合得更紧密,并使现有的开发技巧得以继续使用;减少了编写代码量•.NETFramework使用了高度模块化的设计,使得开发人员可以将精力更多地集中到处理商务逻辑方面,而不必再把时间花费在写IDL和Register代码上。以ASP.NET为例,许多常用的功能,如购物车,都已被封装成为通用的控件;•以XML/SOAP为核心.NETFramework目标是将软件转化为服务,因此基于XML和SOAP系列的集成标准。您只需简单地注出所需的方法调用,.NETFramework就能将它们转化为完整的XMLWeb服务;•提高了应用程序的可靠性.NETFramework引入了新的技术使程序运行得更可靠,比如以.NETFramework来管理内存、线程及进程,确保内存泄漏将不再发生。此外,ASP.NET还监视Web程序的运行,并根据管理员设定的时间间隔,每过一段时间自动地重新执行一次这些程序;•性能更加优化.NETFramework优化了传统的Web程序。ASP.NET引入了高级的编