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

web|web服务|web服务

 
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中。到您可以保证数据的在线显示方式时,互操作性对您来说就已经近在咫尺了!

时间: 2024-10-02 23:58:50

Web服务互操作开发的十大要点的相关文章

提升Android应用开发性能的十大要点

虽然Android智能手机和平板电脑的速度一天比一天快,但是开发者必须记住一点:他们开发的应用程序仍在一种资源紧张的环境下运行,这种环境主要依赖性能与最新的台式机或笔记本电脑无法比拟的电池和处理器.下面介绍的一些方法可以帮助你的应用程序"瘦身"或者说"Android提升开发性能十大要点",以便它们在今天和明天的Android设备上最顺畅地运行. 先来说说确保应用程序响应迅即的几个编程要点. 第一个要点:首先要有良好的编程习惯 要成为一名优秀的资源管理员;既要运用常识

面向对象软件开发的十大原则 (一)

对象                     面向对象软件开发的十大原则 (转一) 对于开发人员来说,时时回过头来检查一下应用程序是非常有用的.考虑一下这个应用程序是否达到了预期目的?是否遵循了最佳方案?要想实现目的是否还存在更好的方法?温故而知新,也许你会从回顾中发现新的思路. 本文就提出10种顶尖的面向对象的编程技术来帮助你对应用程序进行评价,希望你使用这10个顶尖技术从面向对象的编程中获得最大利益. 1. 重新审视对象的声明操作 如何声明对象变量会给对象的使用和性能带来重大的影响.你应该使

.Net开发必备十大工具详解之查询表达式(LINQ)

LINQ是Language Integrated Query的简称,它是集成在.NET编程语言中的一种特性.已成为编程语言的一个组成部分,在编写程序时可以得到很好的编译时语法检查,丰富的元数据,智能感知.静态类型等强类型语言的好处.并且它同时还使得查询可以方便地对内存中的信息进行查询而不仅仅只是外部数据源. LINQ定义了一组标准查询操作符用于在所有基于.NET平台的编程语言中更加直接地声明跨越.过滤和投射操作的统一方式,标准查询操作符允许查询作用于所有基于IEnumerable<T>接口的源

面向对象软件开发的十大原则 (二)

对象                     面向对象软件开发的十大原则 (转二) 当定义方法的参数时,一定要使它们可以扩展.例如,下面这行代码是不可扩展的: Public Function PlaceOrder(sLastName as String, sFirstName as String, sAddress as String) 要想调用这个方法你必须传递这3个参数.但是如果你以后决定在定单上还需要电话号码,就必须修改函数签名,这就破坏了兼容性以及每个调用此方法的代码段.为了防止这个问题

.Net开发必备十大工具

几年前MSDN上的一篇文章<Ten Must-Have Tools Every Developer Should Download Now>中介绍了.NET开发中必备的十大工具,几年过去之后,.NET Framework发展到了3.5 版本,这些工具中,有些已经转向商业化,有些因为推出了新的工具而已经停止了开发, 有些则继续免费提供给开发者使用. 笔者对.NET开发中必备的十大工具重新做了整理,推出新版.NET开发必备十大工具. 本文只是简单的对其进行介绍,更加详细的用法我将会陆续进行讲解.

javaweb-关于web服务端开发中文乱码问题

问题描述 关于web服务端开发中文乱码问题 在浏览器向服务端写中文时,服务端可以正常接收到中文,但是通过jdbc将接收到的中文写入到mysql数据库时,在数据库命令行查询的中文都是显示两个?,是什么原因呢?而且通过数据查询出来的打印在控制台和页面上也是显示两个? 解决方案 在mysql数据库中找到该表 右击 设计表 找到该字段 把字符集编码改成utf8 解决方案二: 数据乱码既是编码不统一造成的,特别是中文 要检查的地方有: 数据库(库表段) 文件格式编码 头(浏览器Header) mysql连

竞价推广账户日常优化需要注意十大要点

竞价推广是如今各企业推广品牌以及产品最主要的方式,特别是对于中小型企业来说,做竞价推广是重中之重,但是很多时候我们会对竞价推广所获得的成效并不满意,这就需要我们来整理一下思路,找出导致效果不理想的原因,下面是经过一番整理的对于竞价推广账户日常优化需要注意的十大要点,大家可以参考一下! 1.根据转化来源的搜索词扩展衍生词,搭建新计划,带来精准流量,从而降低单价,延长推广时间 . 2.闪投的展现样式可能会优先展现,导致附加创意展现量降低,对于主要消费在移动端,以电话为主的账户,可以测试关闭闪投或调整

十大要点教你如何选择光伏发电系统供应商?

十大要点搞清楚如何选择光伏系统供应商. 1.营业执照(注册时间不得少于3年,注册资金不得低于人民币8000万) 2.必备三级机电安装资质(国家网上可查,并与营业执照名称相同) 3.必备该企业<ISO9001质量管理体系>认证 4.必须让光伏发电系统供应商出具与光伏板厂家及逆变器厂家的购销合同及原厂发票(证明光伏板和逆变器的真假) 5.出具光伏板厂家和逆变器厂家的营业执照复印件(必须加盖公章) 6.选择光伏板厂家最好选上市公司前五名的板子(选择单晶板功率不低于285W,多晶板功率不低于265W)

站长利用微博营销推广的十大要点

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 微博营销推广十大要点 在2009年google中最热门的词是twitter,而在百度中最热门的词是微博,2010年几大门户都开通了微博平台,随着腾讯的加入,微博更加炙手可热.它的出现不仅改变新闻传播的方式,而且改变的着营销的方式.中国首届微博营销大赛"亿玛客微博大赛"也引起各方面的关注,微博作为一个新的网络营销平台,如何在