欢迎光临
我们一直在努力

Web服务互操作开发的十大要点-ASP教程,ASP应用

建站超值云服务器,限时71元/月

 

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

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

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

本页内容
10. 当心空数组
9. 生成客户端代理时使用包和类型名称选项
8. 测试生成的java bean是否为空
7. java可以识别空的日期和时间值,但.net不能
6. 比较日期/时间时始终使用compareto()
5. 使用“跟踪工具”进行研究
4. 为“更改主机和端口”添加选项
3. 生成web服务时确保使用document/literal
2. 使用单元测试来测试互操作性
1.首先使用xsd

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

9. 生成客户端代理时使用包和类型名称选项
很多基于java的工具有生成客户端代理时指定独特的包和类型名称的选项(例如,bea weblogic使用“clientgen”参数,ibm rational application developer使用向导)。

为共享同一数据类型的web服务创建代理时,对包和类型名称的控制非常重要,例如在调用两个具有相同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中。到您可以保证数据的在线显示方式时,互操作性对您来说就已经近在咫尺了!

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » Web服务互操作开发的十大要点-ASP教程,ASP应用
分享到: 更多 (0)