ASP.NET WebService开发详解
开发详解第 组件,我们可以把 Web service看做Web上的组件,Web服务提供者开放一系列的API,开 发人员通过调用这些API来集成web服务,构建自己的应用程序 SOAP( Simple object Access Protocal)是在分散或在分布式环境中交换信息的简单协议, 它基于XML协议,以XIML形式提供了一个简单且轻量的用于在分散或分布环境下交換结 构化和类型信息的机制,其本身并没有定义仟何应用程序语义,如编稈模型或特定语义的实 现,而是通过提供一个有标准组件的包模型和在模块中编码数据的机定义了一个简单的表 示应用程序语义的机制,使其能够用于从信息传递到RPC的各种系统。SOAP规范定义了 SOAP消息的格式,以及怎样通过HTTP协议来使用SOAP。SOAP最引人注目的特征是它 可以在许多不同的软件和硬件平台上实现。这意味着SOAP可用于连接企业内部和外部的 不同系统。过去曾试过多种方法以提出一个可用于系统集成的通用通信协议,但它们都没有 像SOAP一样获得广泛的认可。为什么呢?因为与许多早期的协议相比,SOAP更小巧,而 且更简单和易于实现。HITP的普及和SOAP的简单性使你几乎可以在任何环境下调用它们, 因此成为x ML Web service的理想基础。 你会怎样向别人介绍你的 Web Service有什么功能,以及每个函数调用时的参数呢?你 可能会自己写·套文档,甚至∏头告诉需要使用你的 Web service的人。这些非止式的方法 全少都有一个严重的问题:当程序员坐到电脑前,想要使用你的 Web service的时候,他们 的工具(如V isual studio)无法给他们提供任何帮助,因为这些工只根本就不了解你的Web Service。解决方法是使用机器能阅读的方式提供一个正式的描述文档。 Web service描述语 言(wSDL)就是这样一个基于XML的语言,用于描述 Web Service及其函数、参数和返回 值。因为是基于xML的,所以WSDL既是机器可阅读的,又是人可阋读的,这将是一个很 大的好处。—一些最新的廾发工具既能根据你的 Web service生成WSDL文档,又能导入WSDL 文档,生成调用相应 Web service的代码。 UDDI(通用发现、说明和集成)是Web服务的黄页。是一套基于Web的、分布式地为 Web service提供信息注册中心的实现标准,同时包含一组能使企业将自身提供的Web Service注册使得别的仚业能够发现的访问协议。与传统黄页一样,你可以搜索提供所需服 务的公司,阅读以了解所提供的服务,然后与某人联系以获得更多信息。 Web service好比一个服务供应商,给其他厂家提供基础服务,其他厂家再 将这个服务包装成自己的产品或者服务提供给别人或自己使用。有点像OEM了 趣味理解既然两个公司需要合作,不可能靠一句话就可以的,就需要一些标准和规范的东 西来实现。那么 SOAP就像两个公司之间签的合同,约束双方按一定规矩和标准办事 wSDL则像说明书,告诉别人你有什么,能给别人提供什么服务。 UDDI好比你的公司需要在黄页或工商注册,企业的主营业务登记,方便别 人查询。当然,你也可以不在UDDII中注册,就像在地下室开展业务,靠的是 亮剑NET 深入体验与实战精要 口头吆喝;但是如果你希望拓展市场,则需要UDD)I以便能被客户发现,更方 便地找到你 Web service是创建可互操作的分布式应用程序的新平台。 Web service的主要目标是跨 平台的可互操作性。为了达到这一目标, Web service是亢全基于XML、XSD等独立于平 台、独立于软件供应商的标准的。 Web service在应用程序跨平台和跨网络进行通信的时候 是非常有用的。 Web service适用」应用程序集成、B2B集成、代码和数据重用,以及通过 Web进行客户端和服务器的通信的场合。 当然, Web service也不是万能的,你不能到处滥用 Web service。在有些情况下,web Service会降低应用程序的性能,而不会带来任何好处。例如,一台机器或一个局域网里面 运行的同构应用程序就不应该用 Web service进行通信 到现在为止,我们已经讨论了如何与 Web service通信(SOAP), Web Service是怎样 进行说明的(WSDL),以及如何查找 Web service(UDDI)。这些内容构成了·套基本规泡 为应用程序的集成和聚合提供了基础。根据这些基木规范,公司可以构建实际的鮮决方案 并从中获益。 73创建简单的 Web service项目应用 在 ASPNET中创建 Web service和写一个类文件是很相似的 Web service是一个以asmx 为扩展名的文本文件,但其中必须包含一条 a Web Service指令,用做声明。我在这里向人 家讲解一个查询产品价格的web服务实例,该实例完成的功能相当简单。但是能对初学者 起到很好的指导作用。(完整代码示例位置:光盘 实现步骤如下。 (1)打开vSNEI,新建一个项目,在左边的面板中选择“ Visual c#”选项,在右边的 面板中选择“ ASPNET Web服务应用程序”选项,将其并命名为“ Webservice”,如图7-1 所示 开发详解 第 章 新项目 回区 项目类型 模板 夏Hk20图回 t visa Basi c i sads已安装的要板 H.VisHal C# finders 国 findoN留体应用程序 智能改备 园类库 F Off 通 ASP. NET Teb应用程序 数花库 应工装应用程 制苔应用程序 iBws窗体控件库 我的板 +visnal C++ 数据库项目 分布式系统 家联机板 主其项目类型 试项目 用于创腿Xeb服务的项目(Prk20) 名称): WebService 图7-1新建 ASPNET WCb服务应用稈序 (2)单击“确定”按钮后,VS.NET就为我们创建了一个Web服务项日。在新建完项 目后,在开发环境中会出现如图7-2所示的代码。 ebseryece1- crosoft_ua⊥Stud互o 文件〕编辑〕视图扛重构项目吧)生砖10)调试1数据〕 ·图、重新成解决广案 国啦贴A狂即三回回2 加m“3s8:41 .ces P 1890123 sTma上 ServIce1要说羽 sum ThebserviceateSpace-http.litenpiri.ors)] Chebservi ceBincing lloatorns'lo Ws: Profiles Has- c. rotilel 1] Tool prblic class Servicel: Syste. Yeb. Services. WebService [W ebMethod] public string HelloYorld 图7-2Web服务应用程序 在上面的代码编辑框中,VS已纾替我们创建了一个简单的 Hello world示例Web服务接 口方法,这个方法和我们普通的方法所不冋的是带有[ WcbMcthod]属性。我们可以注释掉该 方法,然后添加我们自己的业务接山代码 (3)实现我们自己的业务代码。 注释掉系统自动创建的 Hello world方法,创建一个査询产品价格的 GetProductPrice 方法 亮剑NET 深入体验与实战精要 查询产品的价格 产品编号 品价格 这样,一个简单的web服务就完成了,非常简单,按下“F5”键运行一下看看效果吧。 如图7-3所小。 这个例子非常简单,因为仅有一个方法( GetProductPrice)。单击这个方法会显示另一个 网页,如图7-4所示。这一页就是该特定方法的测试页,其中包括对应方法接受的每个参数 的文本框。现在凊在文本框中输入“001”并单击“调用”按钮。 Servicel eb ji3- indows Internet Expl ·M::°k 8ery: cel web服务 Service 1 SBrU1C日1日b服务 友封下圳鰍仨。饣大止式定,诘凸服务说明 e GetProductPrice Service1 tWeb务使用hp:/ tempuri. org/作为认命名空 单击出量,获取完的操作列 建议:公开 XML Web services之前·请更改认命名空 GetProductprice 每个 ML eb services都需要一个唯一的命名罕间,以傅客户 似试 已岌布的 XML Web services应便用史为永久的命名罕 若要用HTPSˉ协议对操诈进行测试,谭单击“用”按扭 应使用您控的命名空门来标识 XML Web services,可以 向Web卜的实阿穿源。( XM- Web services名窄曰JRr 值 用AP气创建M| Wieh service时,可以使用w=hse 的代码实例将命名空间设置“htt:/ m croscft, co/ webster 调用 图7-3Web服务页面 图7-4Web服务方法页面 单击“调用”按钮会打廾一个新的浏览器窗口,其中显示了一些xML代码。这些XML 代码是由该Web服务返回的,其中包括了服务的结果。返回的XML代码如图7-5所示 开发详解第 章 Chttp://localhost:12074/seruicel.asx/getproductpr B+ahttp:(/localhost123741servicel.asnx/getprOductpri
下载地址
用户评论