,webservice   工具软件   办公软件   操作系统   网络安全   设计在线   程序开发   教程宝典   软件下载   软件论坛,webservice
您的位置:Yesky > 软件 > 开发者网络 > 微软开发专栏 > 正文
漫谈多态性与Web服务的结合
[文章信息]
作者:编译 朱先中
时间:2005-05-18
出处:天极网
责任编辑:方舟
[文章导读]
本文回顾了多态性概念, 示范了XML Web服务。最重要的是本文将教你如何把多态性和Web服务结合起来
advertisement
热点推荐
· 图文详解:黑客入侵方式演示
· Java异常处理的陋习展播
· 多媒体系列教程:网页设计制作
· Powerpoint动画演示教程连载
· 光盘刻录手册:禁忌与技巧(下)
[正文]

上一页  1 2 3  

  如果你要写一个返回一个称为GetPerson的PersonCollection的实例的Web方法(参列表4),SPROXY将仅生成一个代理类Person,而且返回类型变为Person()。

  列表 4: 返回一个PersonCollection实例的WebMethod:

[WebMethod]

public PersonCollection GetPeople()
{
 return PersonCollection.CreateNew();
}

  如果列表4是你提供给消费者的全部, 那么,虽然他们的代码编译成功,但是当从Web方法返回的Person数组被初始化时,可怜的消费者将会遇到一个运行时刻错误抛出SoapException 。最后,因为你定义了其他一些派生于Person的类,所以你也应该设法使你的Web服务消费者能够使用这些类型。

  既然你已经了解了问题的一切, 修改就很容易了。使用在 System.Xml.Serialization中定义的 XmlInclude属性来指定另外一些类型――消费者方也需要为它们生成代理类 。在类自身的首部加上XmlInclude属性,用类型对象初始化它――这些类型对象用于每一个需要代理的额外类型。列表5 展示了Web服务的类的首部(该类包含了GetPeople方法)定义情况:

  列表5: 通过使用XmlInclude属性来确保子类型在Web服务的消费者端已经定义

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Web;
using System.Web.Services;
using BusinessCollections;
using System.Xml.Serialization;

namespace Service
{
 /// <summary>
 /// Summary description for Service1.
 /// </summary>

 [XmlInclude(typeof(Customer)),

 XmlInclude(typeof(Person)), XmlInclude(typeof(Employee))]
 public class Service1 : System.Web.Services.WebService
 {
  public Service1()
  {
   //CODEGEN: This call is required by the ASP.NET Web服务
   //Designer
   InitializeComponent();
  }

  [Component Designer generated code]
  // WEB SERVICE EXAMPLE
  // The HelloWorld() example service returns the string
  // Hello World
  // To build, uncomment the following lines then save and build
  // the project
  // To test this web service, press F5

  [WebMethod()]

  public PersonCollection GetPeople()
  {
   return PersonCollection.CreateNew();
  }
 }
}

  为了测试网络服务和网络方法,可以产生一个控制台程序。 选择“ Project”-“Add Web Reference”,然后添加上面的网络服务。 声明一个Person()的实例,然后激活Web方法即可。

  五、小结

  本文介绍了结合XML Web服务环境的多态性问题。你可从中了解到,代理类型不包含方法,且不必为Web服务消费者产生子类型――如果你不小心很容易破坏继承关系。

  如果在你的Web方法中包括子类型参数,SPROXY将会为消费者产生那些类型。否则,XmlInclude属性将指示XML Web服务工具生成额外类型。

上一页  1 2 3  

发表评论推荐给朋友我想参加相关培训打印我对此感兴趣订阅电子杂志
天极社区邀请您:写博客日记  上传相片   论坛聊天  订阅电子杂志  推荐网摘   免费图铃工具
笔名:   请您注意:

 遵守国家有关法律、法规,尊重网上道德,承担一切因您的行为而直接或间接引起的法律责任。

 天极网拥有管理笔名和留言的一切权利。
评论:
 
,webservice相关内容,webservice焦点新闻
  • FVD刺激高清碟机加速商业化 抢占商机最重要
  • 3家搜索引擎集体诉讼8848 吕春维未敢出席
  • 杨元庆:没有准备不会获批的备用方案
  • 军队信息化诞生新领域 电子军务呼之欲出
  • 世界经济论坛公布信息化程度全球最新排名
  • 2004政务绩效评估:政府门户尚处于发展阶段
  • 甲骨文出资5.15亿美元 意图收购RetekInc
  • 技术并购:帮你突破传统增长的“天花板”
  • ,webserviceAdvertisement