Web服务开发环境及其供应商大纲•.NETWeb服务•JavaWeb服务SUNBEAIBMOracle.NET概述•Microsoft.NET是MicrosoftXMLWeb服务平台。•XMLWeb服务允许应用程序通过Internet进行通讯和共享数据,而不管采用的操作系统、设备或编程语言是否相同。•Microsoft.NET平台提供创建XMLWeb服务并将这些服务集成在一起所需要的功能。•Microsoft.NET平台上Web服务是关键.NET框架的目标•跨平台的交互,多种语言支持•代码重用•自动管理资源•类型安全•错误处理•消除DLLhell•安全.NET支持的语言•VisualBasic,C++,C#,JScript,VBScript上述语言编写的代码经过编译后得到IL代码,称为“受控代码”(ManagedCode)为保持灵活性,允许C++语言的编译器生成不受控的本机代码(UnmanagedNativeCode)•其他第三方的语言支持FujitsuCOBOL计划中的Pascal语言、Effile语言、SmallTalk语言只要满足CLS,都可以集成到.NET框架代码重用•原来的应用在.NET环境不需要用新语言重写,可以在.NET直接使用•几百万行的COBOL代码,只做一些porting的工作,就可以在.NET环境下重复使用资源自动管理•自动分配内存,自动取消内存分配(Garbagecollector)•Runtime自动处理对象layout并管理对象的references。当该对象不再使用的时候自动释放。内存自动管理解决了两个最常见的应用错误,memoryleaks和invalidmemoryreferences.类型安全•根据组件来源的不同(Internet,企业网络,本地计算机),不同可管理组件被授予不同级别的trust。这样可管理组件可以或者不可以执行文件操作、注册表访问操作、或其他一些民敏感功能。•Runtime增强了代码安全性。用户信任一个嵌入在网页中的执行单元能够显示动画、播放歌曲,但不能访问用户的个人数据、文件系统或网络。错误处理•debugging期间,调试人员能够在不同语言写成的模块之间自由地、无缝地来回移动•.NET提供结构的异常处理,类似于C++或Java中的情况DLLhell•不同的应用能共享某些DLL,安装一个新的应用可能覆盖一个已经存在的应用依赖的某个DLL,可能导致老的应用不能正常工作(DLLhell).•删除一个应用比较复杂,经常不能完全完成•.NET的命名机制可以避免名字冲突。如果前例中新安装的应用程序确实重写了共享库,现有应用程序可对该库进行修复。等现有应用程序再次启动时,它会检查所有的共享文件。如果发现文件被更改,同时这些更改又是不兼容的,则它可以请求运行时提取一个它可以使用的版本。得益于强大的安全系统,运行时可以安全地执行该操作,这样应用程序就完成了本身的修复工作。安全•根据组件来源的不同(Internet,企业网络,本地计算机),不同可管理组件被授予不同级别的trust。这样可管理组件可以或者不可以执行文件操作、注册表访问操作、或其他一些民敏感功能。•Runtime增强了代码安全性。用户信任一个嵌入在网页中的执行单元能够显示动画、播放歌曲,但不能访问用户的个人数据、文件系统或网络。.NET意图•把系统平台从Windows桌面移到Internet上Internet作为.NET的平台•组件Web化:WebServices新观念:软件作为服务(SoftwareAsAService)•形成一套新的核心技术XML:把各种数据和服务连接起来WebService.NETFramework.NET框架•.NET框架是.NET平台的编程模型•.NET框架是在Microsoft.NET平台上进行开发的基础,.NET框架以及针对设备的.NET框架简化版为XMLWeb服务和其他应用程序提供了一个高效安全的开发环境,并全面支持XML。•管理许多垂直的细节,使得开发人员把精力集中在编写应用问题本身的事务逻辑代码上•.NET框架的核心技术为:CLR、类库、ASP.NET及ADO.NET。•不依赖于具体的程序设计语言•支持软件重用1/8.NET框架:Web服务的引擎•简化开发,对开发者和用户透明,就需要有一系列支持上述应用方式的底层结构,这就是.NET框架在.NET中的作用•对于这个框架,应用Web服务就和现在使用一个本地组件或者远程组件一样•.NET框架由三部分组成通用语言运行环境统一的编程类库(基本类库)用户层实现技术ASP+,WebForms,WinForms.NET框架的特性•利用通用语言运行环境提供跨语言的代码重用跨运行平台的程序运行(Windows家族)自动资源管理和类型安全以及运行效率代码级的安全性•利用通用的基本类库提供简单/一致的编程模型•利用COM+提供基于角色的安全性•利用用户层实现技术简化开发过程•利用组合体简化安装和配置过程.NET框架结构System.WebWeb服务Web窗体ASP+应用服务System.WinForms控件绘图特性(GDI+)Windows应用服务系统基本类库(Systembasesclasses)IO网络支持安全服务进程ADO+XMLSQL线程通用语言运行环境内存管理类型系统生命期•是位于应用程序和操作系统之间的一个层面,CLR简化了应用程序的设计并减少了程序开发人员必须编写的代码的数量,因为它提供了内存管理、线程管理、组件寿命管理和默认的错误处理等多种服务•CLR负责代码编译,但与传统的编译器不同,CLR并不是生成代码的二进制表示法,它是生成MSIL(MicrosoftIntermediateLanguage),当代码第一次执行时,CLR会调用一个名为JIT(JustInTime)的特殊编译器,它会将MSIL转化为针对用户系统的处理器的类型和模型的可执行指令•由于大多数平台使用不同的机器语言,因此将程序首先编译为一个统一的形式大大增强了平台间的可移植性和语言间的互操作性CLR(CommonLanguageRuntime)•它是CLR的一个组件,它提供了一组共有的数据类型。因此,.NET编程语言(如VB.NET)可以使用它们原来的数据类型(如VB中的string),编译时会自动将其转换为相应的CTS类型,如果愿意,当然也可以在代码中直接使用CTS。由于CTS的存在使得.NET能跨编程语言。通用类型系统CTS(CommonTypeSystem)VB编译器汇编代码视图C#编译器中间语言代码C++编译器JIT编译器Ngen(NativeImageGenerator)CommonLanguageRuntime操作系统•编译器不产生本地代码,而是生成一个与处理器无关的中间语言MSIL–MicrosoftIntermediateLanguage不同语言之间的集成在MSIL层上实现•IL代码执行前需要通过JIT编译为本地机器代码独立于硬件平台为设备提供了CompactFrameworkMicrosoftIL-中间语言•从IL代码生成本地可执行代码•输出代码依赖于CPU类型操作系统以及版本命令行开关JIT编译器.NET基础类库GlobalizationDiagnosticsConfigurationCollectionsResourcesReflectionNetIOThreadingTextServiceProcessSecurityRuntimeInteropServicesRemotingSerializationSystemSystemTextGlobalizationIOCollectionsSerializationText.RegularExpressions两种应用模型•框架的最上面是两种应用模型Windows应用程序模型Web应用模型--ASP+,WebForm等System.WebWeb服务Web窗体ASP+应用服务System.WinFormsCOM+组件/控件绘图特性(GDI+)Windows应用服务系统基本类库(Systembasesclasses)IO网络支持安全服务进程ADO+XMLSQL线程通用语言运行环境内存管理类型系统生命期.NET应用程序体系结构表示层业务层数据层BusinesstoBusiness(BizTalk,forexample)WebFormsWindowsFormsXMLInternetIntranetDataObject(Class)DataSetDataSetDataSetSqlDataAdapterSqlDataAdapterddIEMyApp.exe.NET应用程序体系结构1Non-WebClientsDataTierWebTierIIS-01IIS-02IIS-03SQL-01SQL-03SQL-02IISServerClusterDataStorageClusterApplicationServerClusterMiddleTierASP.NETASP.NETASP.NETWebService.NETComponentsTransactionMessageQueueADO.NetScalabilityMonitoringSecurityWebClients.NET应用程序体系结构2WebClientsDataTierSQL-01SQL-03SQL-02ServerClusterDataStorageClusterWeb&ApplicationServerASP.NET.NETComponentsTransactionMessageQueueADO.NETScalabilityMonitoringSecurity两种结构比较•结构1更好支持Web和非Web客户端适合于大型应用•结构2更适合于纯Web客户端体系结构性能更好更适合于中小应用.NET框架ASPVBFormsMFC&ATLWindowsAPI框架提供统一的编程模型.NETFramework•.NETPlatform是与程序语言无关的所有.NET程序语言皆可交互运行并可存取.NET提供的所有服务降低重新学习成本•共同语言规范(CommonLanguageSpecification)使用者:可使用.NETFramework第三方:可扩充.NETFramework•微软提供VB,C++,C#,JavaScript•其他厂商将提供APL,COBOL,Pascal,Eiffel,Haskell,ML,Oberon,Perl,Python,Scheme,Smalltalk.NETFramework(C#)•C/C++系列中第一个面向组件(ComponentOriented)的程序语言•组件(Component)设计为C#设计优先的考虑属性(property),方法(method)与事件(event)设计时期(Design-time)和执行时期(Run-time)用XML整合文件与注释•“一次完成”程序设计无须headerfiles,IDL等外部文件.NETFramework(C#)•什么都是对象(Object)System.Object•C#原始类型(Primitivetypes)就是对象且不影响效率大大的简化系统开发•增强扩展性(Extensibility)与重复使用性(Reusability)新增原始类型(primitivetypes):Decimal,SQL,…集合(Collections)对象可存放任何对象.NETFramework(C#)•下一代稳定安全的应用软件对象垃圾回收(GarbageCollection)不再有内存泄漏(MemoryLeaks)与混乱的指针(StrayPointers)结构化的异常错误处理(StructuredExceptionHandling)类型安全(Type-safety)没有未初始化的变量或不安全的强制转