20编程21编程爱好者22vb编程,23数控编程24编程中国25编程论坛26编程语言27游戏编程28编程软件下载29编程工具30socket编程31网络编程32编程器33c语言编程,34flash编程35编程软件36数控车床编程37windows编程38编程入门,39windows核心编程40cnc编程41vc 编程,42linux 编程43asp编程44vb编程实例45串口编程46手机编程47编程教程48plc编程,49单片机编程50vc 网络编程51excel编程,52unix网络编程53编程学习,54编程之道55数据库编程56单片机编程器57黑客编程58计算机编程59网页编程60嵌入式编程,61编程高手箴言62flash编程教程63vfp编程64windows网络编程,65编程基础66c语言编程实例67c语言编程软件68vf编程69shell编程,70vb数据库编程71matlab编程,72c语言编程工具73编程思想74php编程,75c编程76jsp编程77电脑编程技巧与维护,78三菱plc编程软件,79vb编程软件下载80pb编程81数控编程实例82asp编程工具,83c专家编程,84win32编程85数控铣床编程86asp.net高级编程,,87vc 数据库编程88vba编程89jsp高级编程90c语言编程宝典,91unix环境高级编程;92编程珠玑93delphi编程94delphi数据库编程95vb编程教程96单片机编程软件
1编程爱好者网站2vb编程网站,3电子商务网站编程4游戏编程网站5最大的编程网站6网站编程软件7可编程逻辑中文网站8网站 编程 语言9网站编程 数据库,10jsp网站编程11asp编程网站12网站编程电子书13好的编程网站,14c语言编程网站15编程门户网站16如何学习网站编程17百度网站的编程语言18vb编程乐园网站指南19wince 编程网站
1asp.net2asp教程,3asp源码4asp免费空间5asp论坛6asp代码7asp源代码8asp下载,9asp源码下载10asp木马11asp.net教程12asp学习13什么是asp14asp空间,15admin.asp dir16asp程序17asp教程下载18asp.net 2.019asp整站程序,20asp文件21十天学会asp22asp入门23asp源程序24asp实例25asp函数26asp服务器27asp.net论坛28asp id,29asp整站下载30asp网站31asp论坛下载32asp源代码下载,33asp整站34asp技术35asp access36asp.net源码37asp简介38asp免费空间申请39asp.net下载,40asp留言板41asp sql42asp 数据库43asp站长助手44asp连接数据库45asp留言本,46asp.net教程下载47asp分页48asp格式49asp论坛程序50asp.net源代码51asp软件52asp模板53asp session54asp语法,55如何打开asp文件56asp解密57asp编程58asp.net实例,59asp实例教程60asp程序下载61asp计数器62asp.net入门,63asp运行环境64asp基础教程65apache asp66asp入门教程,67asp编辑器68asp组件69asp连接access70conn.asp71asp书籍,72asp论文73asp工具74asp文件上传75asp探针76asp原代码下载77asp include78user wantpws.asp79asp split,80asp fso81asp网页制作82printpage.asp83什么是asp.net,84index.asp85asp.net datagrid86asp基础87asp replace88asp代码下载89asp新闻系统
1php论坛2免费php空间,3php下载4php源码5php mysql6php教程7php文件8php空间9apache php10什么是php11apache php mysql12php学习13php论坛下载14iis php15php cms16php入门17php blog18php手册,19php代码20php整站程序21php session22php安装23php源码下载24php配置25php源代码26php cookie27php网站28iis php mysql29php编程30php留言板31php探针32php注入33php.ini34php运行环境35index.php36php教程下载,37php论坛程序38php 文件上传39php服务器40php环境41php 函数;42php格式43php编辑器44php editor45如何打开php文件46php access47十天学会php48php模板49php xml;50php程序51php留言本52php文件怎么打开53php技术54ajax php55php简介56php注入工具57打开php文件58php语言59php mail;60php软件;61免费php mysql空间62php self63php 数组.64php分页,65php nuke66php阅读器67免费php空间申请68国外免费php空间69php程序下载70php 正则表达式71asp php,72php网站管理系统73php程序设计74php是什么文件75php 实例76php 开发工具77php 验证码78php官方网站79php学习资料
1jsp教程2jsp源码3jsp论坛4什么是jsp5jsp源代码6jsp空间7jsp学习8jsp文件9jsp mysql,10jsp入门11jsp连接数据库12jsp技术13eclipse jsp14jsp分页15jsp源代码下载16jsp access17jsp教程下载18jsp开发工具,19jsp代码20jsp简介21jsp环境配置22jsp连接mysql,23jsp实例24免费jsp空间25jsp配置26jsp session,27jsp运行环境28jsp下载29jsp网站30jsp include31jsp编程,32jsp介绍33jsp 数据库34jsp设计35jsp servlet36jsp标签37jsp应用开发详解38jsp 中文39jsp oracle40jsp论文41jsp 文件上传,42jsp高级编程43jsp源码下载44jsp 乱码45jsp开发46jsp分页显示47jsp sql48jsp连接sql49jsp 页面跳转50jsp request51eclipse开发jsp52iis jsp53jsp开发环境54jsp sqlserver,55jsp cookie56jsp服务器57jsp连接access58jsp毕业论文59jsp新闻发布系统60jsp留言板61jsp 电子书62jsp forward63jsp中文网64tomcat jsp65jsp语法66jsp留言本67asp jsp,68jsp import69jsp源程序70jsp基础71jsp毕业设计,72jsp格式73jsp 中文乱码,74jsp开发实例75jsp书籍76jsp论坛下载77jsp 上传,78jsp计数器79jsp 注释80jsp电子教程81jsp 保存用户名密码,82jsp的优点83jsp软件下载84jsp语言85jsp代码下载86jsp blog87jsp 打印88jsp手册

思顿科技-专业网站制作指南、网页设计制作教程、免费网页制作素材下载、免费学习网页制作指南,专业网站建设服务、网站制做指南、免费网页制作指南、网页制作服务、免费空间域名服务、
首页
网页教程
网页素材
收录查询
工具下载
网站欣赏
网站论坛
免费博客
建站服务

.NET框架与网络服务(上)
你当前的位置:网站制作指南 --> 技术文档全集 (www.STasp.com)



  网络服务(WEB SERVICE)是基于网络的分布式应用程序的基本构造模块,而这些程序是以平台、对象模板和多语言方式构建的。


  网络服务是建立在象HTTP和XML之类的开放的INTERNET 标准之上的,并且由此形成了可编程网络理念的基础。


    


  图1 网络服务应用模型


  这篇文章详细讲述网络服务以及为其提供支持的技术,这些技术能确保服务被集成到应用程序里去。同时本文将讲述新的MICROSOFT.NET框架及其对生成和使用网络服务的支持。


  现在开发中最紧迫的问题是应用程序的集成化:运行在不同操作系统上的不同的应用程序,通常是由不同编程语言对象模板建立的,获取这些程序然后把它们转化为易于使用的网络应用程序。建立在象HTTP和XML之类开放的网络标准之上的网络服务接受了这项挑战。


  但是只支持标准协议是不够的,我们必须有途径来生成、部署、扩展和维护这些网络服务,这正是MICROSOFT.NET框架要解决的问题。


    


  图2 MICROSOFT.NET FRAMEWORK体系结构


  下面笔者将介绍网络服务及MICROSFT.NET框架的组件,包括通用运行语言(COMMON LANGUAGE RUNTIME)、服务框架和用于建立、集成网络服务的程序模板。


  ■网络服务一览


  通常说来,网络服务只是一个作为服务发行的简单应用程序。换句话说,它是可通过URL定位的自动将信息返回到需要它的客户端那里的一种资源。网络服务一个重要的特点是客户不需要知道一种服务是怎样实现的。在本文中,笔者将向你解释网络及网络服务如何把基于组件技术的最好的方面结合在一起,并且介绍与网络服务通信所需的基本框架。


  同组件一样,网络服务提供“黑匣子”函数,它可以被多次用而不用关心此服务是怎样实现的。网络服务还提供被称为契约的精确定义的接口,此接口描绘了所提供的服务。开发人员可以将远程服务、本地服务和定制代码组合在一起集成到应用程序中。例如,某公司可以使用如下服务组建一个在线商店:微软护照(PASSPORT)服务用来验证用户身份、第三方个人化服务用来使网页匹配每一个用户的参数、信用卡处理服务、销售税服务、对每个运输公司的包裹跟踪服务,链接公司内部库存管理程序的内部目录服务以及少量定制代码,以使他们的商店能脱颖而出。图1显示的模型说明了为生成分布式网络应用程序应怎样链接网络服务。


  然而,网络服务与现在的组件技术并不相同,它不使用需要在服务器和客户机有明确的、同类型基本构架的具体对象模型协议,例如DCOM、RMI或IIOP。尽管与具体组件技术紧密结合的实现在一个受控的环境中能很好地被接受,但它们在网络环境中变得不切实际。因为一个集成商业程序的参与者会发生变化,随着时间的推移,技术也在变化,所以在所有参与者间确保一个单一的、统一的体系架构就变得十分困难。网络服务采取了另外一种途径,它使用普便存在的网络协议和数据格式进行通信,如HTTP和XML。支持这些网络标准的任何系统都支持网络服务。


  而且,网络服务契约描述的是以术语报文形式提供的服务,这些服务是由网络服务生成和接受的,而并不描述服务是如何实现的。通过把重点放在报文上,网络服务模板对语言、平台和对象模板变得完全透明。这样,用任何一套编程语言、对象模型和平台的完全特性集,都可实现网络服务。网络服务可以在任何平台上,被任何应用程序所使用。只要用于解释服务容量、报文序列和所期望协议的契约得到认同,那么所实现的网络服务及网络服务用户就可相互不同,而不会影响会话另一端的应用程序。


  网络服务模板对最小体系架构的要求很低,目的是确保网络服务在使用任何技术和编程语言的平台上实现和访问。对网络服务互用性的解决可以只依靠网络标准。然而,为了使应用程序更容易使用网络服务,简单地通过标准网络协议访问网络服务是不够的。当网络服务和网络服务使用者依靠标准的方式(如XML)表示数据和命令、表示网络服务契约、算出网络服务所提供的容量时,网络服务才会更加容易使用。


  XML是定义一个标准的、可扩展的用于提供命令和典型数据的语言的明智选择。虽然为表示命令和典型数据可以定义使用其它技巧(比如编码为一种查询字符串)的规则,但XML被专门设计为描述数据的标准元语言。简单对象存取协议(SOAP)是以一种可扩展的方式使用XML表示数据和命令的工业标准。网络服务可选择用SOAP决定报文的格式。


  XML是网络服务契约的一种常用技术。服务契约语言(SCL)是记录网络服务契约的XML语法。由于SCL是基于XML的,所以对开发者和开发工具来说,它更容易生成并解释契约。


    


  图3 SERVICES FRAMEWORK类库


  DISCO规范为服务提供者发布网络服务契约和相应的机制描述了一个标准方式,这将使开发者或开发工具可找到契约文献。


  象SOAP、SCL和DISCO这样的标准有助于开发者,因为它们不需要明白和实现所使用的每一个网络服务的访问方式。支持这些标准的更好的、已充分测试的、高性能的体系架构将由开发平台提供,这会大大简化整个开发过程。


  ■MICROSOFT.NET FRAMEWORK


  MICROSOFT.NET框架的目的是使你更容易建立网络应用程序和网络服务。图2显示了MICROSOFT.NET框架的体系结构。建立在操作系统最上层的服务,是管理运行代码需求的COMMON LANGUAGE RUNTIME,这些代码可以用任何现代编程语言所编写。RUNTIME提供了许多服务,这些服务有助于简化代码开发和应用程序的开发,同时也将提高应用程序的可靠性。.NET FRAMEWORK包括一套可被开发者用于任何编程语言的类库。在此之上是许多应用程序模板,这些模板为开发网络站点和网络服务提供了高级组件和服务,下面笔者将逐层描述。


  ■COMMON LANGUAGE RUNTIME


  运行语言(RUNTIME)可以调用并运行任何编程语言所写的代码。以运行为目标的代码被称为受控(MANAGED)代码,受控代码只是意味着在内部可执行代码与自身代码存在已经定义好的合作契约。对于生成对象、调用方法等这样的任务,被委托给了运行语言,这使得运行语言能为可执行代码增加额外的服务。


  运行语言具有交叉语言集成、自描述组件、简单配制、版本化以及集成安全服务等特点。


  运行语言使用一种能表达大部分现代编程语言语义的通用类型系统,该通用类型系统定义了一套标准类型及生成新标准的规则。运行语言知道怎样生成、执行这些类型。编译器和解释器使用运行语言服务来定义类型、管理对象、进行方法调用。


  类型系统的主要设计目的是使多种语言能深度集成。用一种语言所写的代码能继承用另一种语言所写的类,用一种语言所写的代码抛出的异常能被用另一种语言写的代码所捕获,象调试之类的操作会在完全封闭下进行,而不用考虑代码编写所用的语言。这就意味着编写可重用类库的开发者,不再需要为每一种编程语言或编译器生成一个版本,并且使用类库的开发者也将不再受到他们所使用的编程语言开发库的限制。


  自描述组件简化了开发和配制,并提高了系统的可靠性。许多由运行语言提供的服务是由元数据及用于补充可执行代码的信息所驱动。因为所有的信息都储存在一起,只有可执行的代码才被称为自描述组件。


  自描述组件的一个主要优点是,使用它们并不需要其它文件。类的定义不需要单独的头文件;通过检查元数据对类的定义可以从组件自身获得。跨语言或过程边界访问组件并不需要各自的IDL文件、类型文件或PROXY/STUBS;所必需的信息已存在于元数据之中。最主要的是,由于元数据是在编译过程中由源代码生成,并与可执行代码储存在一起,因此,它将永远和可执行部分同步。


  除了改善对单个组件的配置,MICROSFT .NET框架定义了一个应用程序配置模板,以解决定制应用程序安装和DLL版本化(通常被称为“DLL HELL”)这一复杂过程的问题,运行语言提供了支持这个模板的服务。


  MICROSFT.NET框架引入了组合体的概念。一个组合体是一组资源和类型,并包括有关这些资源和类型的元数据,也就是被作为一个单元配置的。元数据被称为组合体的名单,它包含象类型和资源表之类能被组合体外看得见的信息,这个名单也包括有关从属关系之类的信息,例如组合体建立时的版本号。开发人员可以指定版本策略,以指示运行语言是否装入系统上已安装的依赖于组合体的最新版本,装入一指定版本,或在编译时使用的版本。


  某软件组件的多个拷贝可以存在于同样的操作系统上,然而,通常只有其中的一个拷贝能被操作系统注册、调入内存并执行。对系统来说,定位和调入内存的策略是全局性的。.NET FRAMEWORK COMMON LANGUAGE RUNTIME增加了所必须的体系架构以支持管理组件定位和调入的每个应用程序策略,这通常被称为并行配置。


  组合体可以被一个应用程序私有,或被多个应用程序共享。一个组合体的多个版本可以同时配置在同一台机器上。应用程序的配置信息定义了应到何处去查找组合体,这样,RUNTIME就能为同时运行的两个不同的应用程序装入到同一组合体的不同版本中,消除了由组件版本的不兼容性引起的问题,提高了系统整体的稳定性。如果必要,管理员可以为配置时的组合体增加配置信息。


  因为组合体是自描述的,所以并不需要在系统上进行注册。应用程序的配置简单到了只需将文件拷贝到目录中即可(如果为了使应用程序能够运行,必须安装未经组织过的组件的话,情况会稍微复杂一点)。配置信息保存在可被任何文本编辑器编辑的XML文件中。


  最后,运行语言也提供完整的、普遍深入的安全服务,以确保未经授权的用户不能访问机器上的资源,并且代码不会执行未经允许的动作。这就提高了系统整体的安全性和可靠性。由于运行语言用于装入代码、生成对象、执行方法调用,所以当受控代码装入内存并执行时,运行语言能进行安全检查,从而强化安全策略。


  MICROSFT.NET框架不仅规定代码访问安全机制,还规定基于角色的安全机制。通过代码访问安全机制,开发人员能为应用程序指定完成工作所必需的权限。例如,程序或许需要写文件或访问环境变量的权力。这类信息和有关代码标志的信息一起存储在配置级上。当代码装入内存并执行方法调用时,运行语言将验证是否能给予代码所要求的权限。如果不能,将记录一条安全冲突信息。给予权限的策略,被称之为信任策略,是由系统管理员建立的,并且是建立在关于代码的证据基础之上。比如:代码是谁发布的,是从什么地方获得的,以及在组合体中找到的代码标志和它要求的权限。开发人员可以指定他们具体的权限,以防止其它人恶意使用他们的代码。如果所需要的权限依赖直到运行时刻才会知道的信息,那么就可写入纲领性的安全检查。


  除了代码访问安全机制,运行语言还支持基于角色的安全机制。基于角色的安全机制建立同代码访问安全机制一样的权限模板,只是这些权限是建立在用户的身份之上,而不是建立在代码的标志之上。角色表明了用户所属的类,并且可以在开发和配置阶段定义。给予权限的策略被分配到每个预定义的角色。在运行时刻,用户的身份被确定,代码将代表这个身份运行。运行语言决定用户是哪个角色的成员,然后给予基于这个角色的权限。


  在查看MICROSFT.NET框架的可编程模板前,先看一下它所提供的服务。


  ■服务框架


  正如我们从图2所看到的那样,在COMMON LANGUAGE RUNTIME之上是服务框架(SERVICES FRAMEWORK),此框架提供能被任何现代编程语言所调用的类。所有的类都遵循一套命名和设计方针,从而大大减小了开发人员学习过程中的难度。


  图3显示了服务框架中的一些主要类库。框架包括一套开发人员希望在标准语言库中存在的基类库,例如:集合、输入/输出、字符串及数据类。另外,基类库提供访问操作系统服务如图画、网络、线程、全球化和加密的类。服务框架也包括数据访问类库及开发工具,如调试和剖析服务等。(译: 金志立)


    
 
| 关于我们 | 联系我们 | 业务合作 | 友情链接 | 网站地图 |
版权所有©思顿科技-专业网站制作指南2004-2006 在线技术支持- QQ:63127313