WEBAPP开发之Web Services 指南之:Web Services 的一些例子
白羽 2019-01-02 来源 :网络 阅读 594 评论 0

摘要:本文将带你了解WEBAPP开发Web Services 指南之:Web Services 的一些例子,希望本文对大家学WEBAPP有所帮助。

    本文将带你了解WEBAPP开发Web Services 指南之:Web Services 的一些例子,希望本文对大家学WEBAPP有所帮助。


              


基于 web service 架构,我们创建以下两个组件作为   web service 实现的一部分:

服务提供者或者发布者

它是 web service   的提供者。服务提供者实现了 web service 并使得它可以通过互联网或者内部网进行访问。
接下来我们会使用 .NET SDK   来编写并发布一个简单的 web service。

服务请求者或者消费者

它是 web   service 的消费者。请求者通过打开一个网络连接并发送一个 XML 请求来利用一个现成的 web   service。
接下来我们也将编写两个 web service 请求者:一个基于 web 的消费者(ASP.NET   应用),另一个是基于 Windows 应用的消费者。
接下来给出的是我们的第一个 web service   的例子,它将作为一个服务提供者公开两个方法(add 和 SayHello)来作为将被应用所使用的 web service。这是   web service 的一个标准模板。.NET web service 使用的是 .asmx 扩展名。注意一个方法要公开为一个 web service   的话要具备 WebMethod 属性。将本文件在 IIS 虚拟目录中保存为 FirstService.asmx。
FirstService.asmx

<%@ WebService   language = "C" %>using   System;using System.Web.Services;using   System.Xml.Serialization;[WebService(Namespace="//localhost/MyWebServices/")]public   class FirstService : WebService{     [WebMethod]   public int Add(int   a, int b)   {      return a + b;   }     [WebMethod]   public String   SayHello()   {   return "Hello World";   }}


要测试一个 web   service,首先得先进行发布。一个 web service 既可以发布在内部网也可以发布在互联网。我们将会把这个 web service   发布在一台内网机器上运行的 IIS 上。我们先从配置 IIS 开始。

打开 →   设置 → 控制面板 → 管理工具   → 因特网服务管理器

展开并右击默认的 web 站点;选择   新建 → 虚拟目录。虚拟目录创建向导将被打开。点击下一步。

"虚拟目录别名"屏幕将被打开。输入虚拟目录名。比如,MyWebServices,点击下一步。

"网站内容目录" 屏幕将被打开。

输入虚拟目录的目录路径名。比如,c:\MyWebServices,点击下一步。

"访问权限"   屏幕将被打开。根据你的需求对设置进行更改。本示例中我们保持默认设置。

点击下一步按钮。它将完成 IIS   配置。

点击完成来结束配置。

要验证 IIS 是否被正确配置,拷贝一个   HTML 文件(比如,x.html)到上面创建的虚拟目录(C:\MyWebServices)中。之后,打开 IE 并输入 //localhost/MyWebServices/x.html。能打开 x.html   文件就是正常。
注意:如果没有打开 x.html,试着将 localhost 替换为你机器的 IP 地址。如果仍然不行,检查   IIS 是否在运行;或者重新配置 IIS 以及虚拟目录。
然后验证 web service,将 FirstService.asmx 复制到上面创建的 IIS 虚拟目录中(C:\MyWebServices)。在 IE 中打开 web service(//localhost/MyWebServices/FirstService.asmx)。能够打开你的   web service 页面就是正常。该页面应该能够链接到你公开为 web service 的两个方法。恭喜!你已经写好了你的第一个 web   service!

测试 web service

如刚才所见,在 .NET 框架下编写 web   service 还是很简单的。在 .NET 框架下编写 web service 消费者也很简单。如上所述,我们将编写两种类型的服务消费者,一个基于 web   的而另一个基于 Windows 应用。现在我们来写我们的第一个 web service 消费者。

基于 web   的服务消费者

如下写一个基于 web 的消费者。将其命名为 WebApp.aspx。注意它是一个 ASP.NET 应用。将它保存着 web service   测虚拟目录(c:\MyWebServices\WebApp.axpx)。
该应用有两个用于获取用户添加的输入框。它有一个   Execute 按钮,当被点击的时候将得到 Add 和 SayHello 两个 web   service。
WebApp.axpx

<%@ Page   Language="C#" %><script   runat="server">   void   runSrvice_Click(Object sender, EventArgs e){      FirstService mySvc = new   FirstService();      Label1.Text =   mySvc.SayHello();      Label2.Text =   mySvc.Add(Int32.Parse(txtNum1.Text),    Int32.Parse(txtNum2.Text)).ToString();     }</script><html>   <head>   </head>        <body>        <form runat="server">         <p>            <em>First Number to   Add </em>:              <asp:TextBox id="txtNum1" runat="server"   Width="43px">4<    /asp:TextBox>           </p>            <p>              <em>Second Number To Add </em>:            <asp:TextBox   id="txtNum2" runat="server"   Width="44px">5</asp:TextBox>         </p>          <p>              <strong><u>Web Service Result   -</u></strong>         </p>          <p>            <em>Hello world   Service</em> :              <asp:Label id="Label1" runat="server"   Font-Underline="True">Label< /asp:Label>         </p>         <p>            <em>Add   Service</em> :              & <asp:Label id="Label2"   runat="server" Font-Underline="True">Label</asp:Label>         </p>          <p>              <asp:Button id="runSrvice"   onclick="runSrvice_Click" runat="server"    Text="Execute"></asp:Button>         </p>       </form>           </body></html>


消费者创建好以后,还需要为要被消费的   web service 创建一个代理。在引用一个已添加的 web service 以后这个工作会由 Visual Studio .NET   自动完成。下面是接下来的步骤:

为要被消费的 web service 创建一个代理。使用 NET   SDK 提供的 WSDL 工具来创建代理。这个工具从 web service 中抽取信息并创建一个代理。该代理只对该特定 web service   有效。如果你需要消费其他 web service,那么你需要为其他 web service 也创建一个代理。在 web service   引用添加的时候,Visual Studio .NET 就自动为你创建了一个代理。使用 .NET SDK 提供的 WSDL 工具来为 web service   创建代理。它将在当前目录创建 FirstSevice.cs 文件。我们需要对其进行编译来为 web service 创建   FirstService.dll(代理)。相关命令:c:> WSDL   //localhost/MyWebServices/FirstService.asmx?WSDL;c:> csc /t:library   FirstService.cs。

将编译好的代理放到   web service 的虚拟目录下的 bin 目录中(c:\MyWebServices\bin)。因特网信息服务 IIS   寻找这个目录中的代理。

同样创建服务消费者。注意一个 web service   代理对象将在消费者中进行实例化。这个代理负责与服务进行交互。

在 IE 中输入消费者 URL   来测试一下(例如,//localhost/MyWebServices/WebApp.aspx)。

基于   Windows 应用的 web service 消费者

写一个基于 Windows 应用的 web service 消费者跟写其他任何   Windows 应用是一样的。你需要做的仅仅是创建代理(我们上边介绍的)并在编译应用的时候引用这个代理。下面是我们使用 web service 的   Windows 应用。这个应用创建了一个 web service 对象(当然,只是代理而已)并调用了它的 SayHello 和 Add   方法。
WinApp.cs

using System;using   System.IO;namespace SvcConsumer {     class SvcEater {         public   static void Main(String[] args) {           FirstService mySvc = new FirstService();         Console.WriteLine("Calling   Hello World Service: " + mySvc.SayHello());         Console.WriteLine("Calling   Add(2, 3) Service: " + mySvc.Add(2, 3).ToString());      }     }}


使用命令 c:\>csc   /r:FirstService.dll WinApp.cs 将其编译,WinApp.exe 将被创建,执行它来测试该应用和 web   service。
现在,问题出现了:你怎么能确保该应用程序实际上是调用 web   service?
验证其实很简单。关掉你的 web 服务器,这样 web service 就无法连接了。然后,执行 WinApp 应用。它将抛一个运行时异常。现在,再启动 web 服务器,WinApp   应用就能正常工作啦。


                     

                 

                                 

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标移动开发之WebApp频道!


本文由 @白羽 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程