Web Service 笔记

  服务"可以分成两种:

一种是"本地服务"(使用同一台机器提供的服务,不需要网络),

另一种是"网络服务"(使用另一台计算机提供的服务,必须通过网络才能完成)。"网络服务"(Web Service)的本质,就是通过网络调用其他网站的资源。所以,Web service让你的网站可以使用其他网站的资源,比如在网页上显示天气、地图、twitter上的最新动态等等。

百度百科中定义:
Web Service是一个应用组件,它逻辑性的为其他应用程序提供数据与服务.各应用程序通过网络协议和规定的一些标准数据格式(Http,XML,Soap)来访问Web Service,
通过Web Service内部执行得到所需结果.Web Service可以执行从简单的请求到复杂商务处理的任何功能。
一旦部署以后,其他Web Service应用程序可以发现并调用它部署的服务。
综上:WebService是两个计算机之间通讯(交谈)的技术。并且现在炒的很火的SOA、云计算在技术层面上都是WebService。
除了WebService 通讯外,系统间通讯有很多种技术,如像qq的这种Socket通讯在银行系统中广泛应用,.Net Remoting、DCom等通讯方式也应用很 多,
但是这些方式有如下缺点:
•        通讯数据格式不统一,同样一个"你好"这样的字符串在不同的协议中有不同的表示方法,异构系统集成很麻烦。一个系统一个模样。
•        采用Socket、 .Net Remoting、DCom需要打开很多端口,而企业网络安全的一个基本原则就是“尽可能少的打开端口”,很多企业网络甚至严格规定“只能打开80端口”,
因此需要一种“跨防火墙”的技术(跨防火墙就是走80端口进行通讯)
•        这些通讯方式的协议是不开放的,要想知道服务提供了哪些方法、如何调用,必须能够自描述。

技术和规则

  在构建和使用Web Service时,主要用到以下几个关键的技术和规则:

 

  1.XML:描述数据的标准方法.

 

  2.SOAP:表示信息交换的协议.

 

  3.WSDL:Web服务描述语言.

 

  4.UDDI(Universal Description, Discovery and Integration):通用描述、发现与集成,它是一种独立于平台的,基于XML语言的用于在互联网上描述商务的协议。

示例:

1服务器端新建“Web服务”(asmx),在远端可以调用的方法上标注[WebMethod]

如:在服务器项目添加新项目-web-asp.net web服务应用程序,新建项目中会出现asmx文件,如Service1.asmx,其后台代码示例

 

using System.Web;
using System.Web.Services;

 

namespace WebService1
{
    /// <summary>
    /// Service1 的摘要说明
    /// </summary>
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    // 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。
    // [System.Web.Script.Services.ScriptService]
    public class Service1 : System.Web.Services.WebService
    {

 

        [WebMethod]
        public string HelloWorld()
        {
            return "Hello World";
        }

 

      }

}

 

完成后编译

2 在client进行调用

1)客户项目中先添加web服务引用 ,项目右键选择添加服务引用,

地址填写 需要调用的web service文件地址,如 : webservice发布地址/service1.asmx ,命名空间中为该服务命名如check。然后确定添加

2)客户端程序中可以像调用本地函数一样对webservice中函数进行调用

check.Service1 s1 = new check.Service1 (); // check 为添加引用时填写的命名空间名  Service1 为添加引用的webservice文件名

string returnvalue=s1 .servicefun(par) ;//servicefun 为调用的service1中的函数。

注意 :

用WebService的时候如果服务端的接口定义发生变化,则需要重新添加对服务端的引用,因为Service References中的类是工具读取WSDL定义自动生成的。在服务引用上点击右键,选择“更新服务引用”。如果只是修改了WebService内部实现,而接口没变,则不需要“更新服务引用”,因为WSDL没变,Soap没变。

参考文档

http://baike.baidu.com/view/837392.htm

http://www.cnblogs.com/xhwy/archive/2011/09/17/2179747.html

http://blog.csdn.net/cmiaomiaozoo/article/details/4585246

posted @ 2012-02-01 14:35  Irene198505  阅读(589)  评论(0编辑  收藏  举报