中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档 | 网通镜像
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > Web开发 > 临时文章
用代理模式代替接口的WEBSERVICE
作者:jisiki 时间:2002-12-09 10:52 出处:互联网 责编:chinaitpower
              摘要:用代理模式代替接口的WEBSERVICE

最近在学WEB SERVICE,看到一篇关于开发基于接口的.NET Web服务的文章
地址:http://www.yesky.com/SoftChannel/72342380468371456/20011005/199858.shtml
也许是自己初学,功力还不够,虽然能明他大概的意思,但自己动手做起来却发现有点复杂
我想简单一点,于是我想到了设计模式的代理模式.


建立基于接口的互联网服务可以使我们在改变很少或基本不改变客户端代码的情况下,
很方便地更换服务提供商。我就想,如果我不用接口,我用代理,令他的作用相当于接口,看看效果怎么样..

互联网服务标准支持接口的概念,但在缺省情况下,.NET中的互联网服务是基于方法的,而不是基于接口的。因此,在目前的情况下,.NET并非“与生俱来”地允许我们开发基于接口的互联网服务。在本篇文章中,我将通过一些简单的步骤(包括服务器端和客户机端)来创建用代理代替接口的互联网服务。

假设有一个名称为SAYHELLO的互联网服务,该服务只是简单的返回字符串,还有一个使用这个服务的客户端应用和一个代理。我们可以在.NET中使用C#来实现,如下:
代理类:
public  class Proxy : System.Web.Services.WebService
{
    [WebMethod]
 public string sayhello(choose c)
 {
   string r = null;
  if (c == choose.Provider1)
  {
   r = new yournamespace.Provider1().sayhello();
  }
  if (c == choose.Provider2)
  {
   r =new yournamespace.Provider2().sayhello();//yournamespace是你添加的WEB SERVICE的引用的名称空间
  }
  return r;
 }

}//也可以用SWITCH --CASE

public enum choose

 Provider1=1,
 provider2=2
}
服务提供者:

public class Provider1 : System.Web.Services.WebService
{
 
 [WebMethod]
 public string sayhello()
 {
  return "hello";
 }

}

public class Provider2: System.Web.Services.WebService
{
 
 [WebMethod]
 public string sayhello()
 {
  return "hello world";
 }

}
上面是代理和服务商的类,代理负责和服务商打交道,对于提供同一服务的服务商,代理都用一枚举列出来,
客户只要查看代理的枚举就知道有什么服务商在提供服务(当然的是谁的服务更好就还不能知道,不过还是可以做的,为了简单的说,这里就不做.).

客户端:

private void button1_Click(object sender, EventArgs e)
  {
yournamespace.Proxy pr=new yournamespace.Proxy();
Proxy.choose c;
     if (this.radioButton1.Checked)
   {
     c =Proxy.chose.Provider1;
   }
   else
    {
     c = Proxy.chose.Provider2;
    }
   MessageBox.Show(pr.sayhello(c));


  }
客户端只是简单的用两个单选控件和一个BUTTON实现,上面的代码很简单,是不是一看就明

在我的这个例子中,我的想法是代理添加服务商的引用,然后客户就添加代理的引用,服务商跟客户是不直接打交道的,客户是可以很方便的换服务商的.那代理是不是很象一个接口呢!

暂时对WEB SERVICE的很多方面还不懂,要继续努力才行,干爸爹!


关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有