快精灵印艺坊 您身边的文印专家
广州名片 深圳名片 会员卡 贵宾卡 印刷 设计教程
产品展示 在线订购 会员中心 产品模板 设计指南 在线编辑
 首页 名片设计   CorelDRAW   Illustrator   AuotoCAD   Painter   其他软件   Photoshop   Fireworks   Flash  

 » 彩色名片
 » PVC卡
 » 彩色磁性卡
 » 彩页/画册
 » 个性印务
 » 彩色不干胶
 » 明信片
   » 明信片
   » 彩色书签
   » 门挂
 » 其他产品与服务
   » 创业锦囊
   » 办公用品
     » 信封、信纸
     » 便签纸、斜面纸砖
     » 无碳复印纸
   » 海报
   » 大篇幅印刷
     » KT板
     » 海报
     » 横幅

Web服务互操作开发的十大要点

  在过去一段时间里,很多供给商纷纷以惊人的速度发布其Web服务的实现。这包括产品的主要版本、辅助版本和许多开发服务包。随着新版本越来越符合标准,不同供给商之间的互操作性越来越高。

  尽管如此,仍旧需要在共同使用这些Web服务时的建议和策略。有些实践答应您确保以互操作的方法既使用又公开Web服务。基于已有的经验,我整理了关于Web服务互操作性的“十大”要点列表。有些要点基于在Microsoft上运行的测试结果的发现,另外一些是在开发项目时觉得有用。这里的提示可以应用于IBM、BEA及多个开放源码堆栈。我希望它们对您有用。下面从下往上依次介绍这些要点:

  10. 当心空数组

  通过Web服务发送空数组可能产生问题。有些工具包将空数组识别为单个空值,而另外一些则将其表示为一组空数组元素。我的一般原则是,通过Web服务发送对象数组时,始终确保让数组包含有效数据。


  9. 生成客户端代理时使用包和类型名称选项

  很多基于Java的工具有生成客户端代理时指定独特的包和类型名称的选项(例如,BEA WebLogic使用“clientgen”参数,IBM Rational Application Developer使用向导)。

  为共享同一数据嘈偷淖eb服务创建代理时,对包和类型名称的控制异常重要,例如在调用两个具有一样Order类型的Web服务时。


  8. 测试生成的Java Bean是否为空

  使用工具或IDE从XSD文件生成Java Bean时,始终确保您知道如何执行测试操作以了解对象是否为空。您可能认为下面的代码可以完成这样的测试:

if (myObject == null)


  但是在某些情况下,您是在测试对象是否存在,而不是对象的值是否存在。我的建议是,始终在生成的bean上检查isNil()方式(或类似方式)。假如它存在,则可确保得到真值。


  7. Java可以识别空的日期和时间值,但.NET不能

  在Java中,java.util.Date和java.util.Calendar被分类为引用类型。在.NET Framework 1.1中,System.DateTime被视为值类型。

  这将会如何?引用类型可以为空,而值类型不能。假如要跨越Web服务发送空日期值,则始终以复杂类型发送值,并将复杂类型的值设置为空。这将有助于避免空的日期值被曲解(从而引发非常)。


  6. 比较日期/时间时始终使用compareTo()

  假如通过Web服务在.NET和Java之间发送日期和时间,则始终使用Java中适当的compareTo()方式来比较日期。例如使用:

if (myDate.compareTo(yourDate) == 0)


  而不要使用:

if (myDate == yourDate)


  这将有助于确保平台间日期比较的正确性,尤其是试图比较毫秒值时。

  5. 使用“跟踪工具”进行研究

  “跟踪工具”是研究SOAP哀求和Web服务间响应的理想选择。它可以帮助验证数据类型和消息构造,还会报告您在浏览器中可能错过的SOAP错误。

  可用的跟踪工具有很多类型 ―― 有些在客户端上运行,有些在服务器上运行,有些甚至运行于客户端和服务器之间(如代理)。这些类型的跟踪工具设置起来比较困难,但是总的来说还是很有用的,因为您可以看到在系统之间传递的消息。有些代理跟踪工具甚至还可以让您编辑和回复消息――这一点对于调试异常有用。


  4. 为“更改主机和端口”添加选项

  设计Web服务客户端时,考虑添加一个帮助器方式用于更改Web服务位置的主机和端口值。这会为将来Web服务的位置变更或者把输出重定向到跟踪工具带来方便。我发现这在Web服务间进行故障切换时特殊有用。


  3. 生成Web服务时确保使用Document/Literal

  有些工具包提供一个选项,让您从以下内容中为Web服务做出选择:

  • RPC/Encoding

  • RPC/Literal

  • Document/Literal

  这些选项为Web服务契约控制样式和编码机制。要帮助确保与WS-I Basic Profile一致,始终确保将Document/Literal作为您所有Web服务的默认编码机制。RPC/Literal仅在特别情况下使用。永远不要使用RPC/Encoding。


  2. 使用单元测试来测试互操作性

  单元测试(使用.NET的NUnit或Java的JUnit)是通过Web服务检查多种数据类型的互操作性的最好方法。

  假如数据类型变更(或假如更改Web服务工具包的版本!),则需要再次运行测试。这可以让您确信您设计的Web服务具有完整的互操作性。


  1.首先使用XSD

  设计互操作性时,始终一开始先定义数据。决定要发送的数据后,首先在XSD中创建数据类型,然后使用工具从XSD文件生成类。依此顺序执行操作,有助于确保数据类型的在线互操作性。为此,需要认识XSD ―― 了解如何在XSD中建模数据和可用于建模数据的工具。XSD文件可以在Visual Studio .NET中直接创建和编辑。有了XSD后,在每个平台上使用适当的工具生成数据类型。在.NET中,可以使用xsd.exe(框架的一部分)或XsdObjectGen(可从MSDN免费下载)。对于Java,这取决于您所使用的工具包。对于IBM,使用Java Bean for XML Schema Wizard;对于BEA,将XSD文件拖到WebLogic Workshop中的Schemas文件夹中。假如是其他工具包,则搜索Schema2Java工具。完成后,在Web服务中公开生成的数据类型 ――此步骤的前提是,您需要确保这些类型能够被准确地序列化到XSD和XML中。到您可以保证数据的在线显示方法时,互操作性对您来说就已经近在咫尺了!


返回类别: 教程
上一教程: 关于如何保障Winnt +asp +sql web站点的安全经验(2)
下一教程: asp+的页面指示标识

您可以阅读与"Web服务互操作开发的十大要点"相关的教程:
· 用WSE在WEB服务中验证用户身份
· .NET My Services对应用程序开发的影响(下)
· XML、Web服务和.NET框架(2)
· Web脚本开发语言比较
· ASP与电子表格EXCEL的交互操作
    微笑服务 优质保证 索取样品