快速业务通道

提高J2EE技术与.NET之间的互操作性,第3部分 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-18
nOccurs="1" name="price" type="s:float"/>          </s:sequence>        </s:complexType>        <s:element name="ArrayOfProduct" nillable="true" type="s0:ArrayOfProduct"/>      </s:schema>    </types>

elementFormDefault="qualified" 属性确保 targetNamespace 限定包括复杂类型 Product 在内的所有局部声明元素。假设有另一个单位使用相同的相关命名空间实现类似的 Product 类型。就像当使用 IBM® WebSphere® Studio Application Developer Integration Edition(Application Developer)BPEL 设计器从不同的伙伴链接中利用普通复杂类型将 Web 服务集成到业务流程中时使用 wsdl:import 及 xsd:import 一样,从普通模式中将这两个模式导入到 WSDL 文档中。

在本场景中,如果导入的两个模式有相同的目标命名空间,则很有可能发生命名冲突。用于在另一个平台上构建集成的工具必须确保相关 URI 是基于 RFC2396 标准文档树中的基本 URI 的。然而,在 WSDL 文档中基本 URI 并没有定义完善,默认的基本 URI 的解释取决于应用程序。最好的习惯是始终使用它自己的组织域名来确保命名空间唯一。

提高J2EE技术与.NET之间的互操作性,第3部分(2)

时间:2011-03-14 IBM

共享通用域名的唯一命名空间 URI

有人说命名空间污染是软件工程中最糟糕的污染。每个组织都有不同的命名习惯,所以工具通常生成的 Web 服务存根代码在另一个平台上的 WSDL 命名空间声明中或许有不同的解释。Web Services Interoperability Organization(WS-I)规范已经在消除命名空间声明中的模糊点方面有了重大改进,并且正在向统一命名空间解释方向前进,但其中仍有一些不足之处。

考虑两个假设,小型银行分部及大型银行投资分部的 .NET Web 服务。一个为客户创建校验帐户,另一个创建投资帐户:

清单 3. .NET 中的零售 AccountService

namespace Retail {  [WebService(Namespace="http://bigbank.com/retail")]  public class AccountService: WebService  {   public struct Customer {     public string name;     public string address;   }   [WebMethod]   public bool createCheckingAccount(Customer customer)   {     return true;   }   } }

清单 4. .NET 中的投资 AccountService

namespace Investment {   [WebService(Namespace="http://bigbank.com/investment")]   public class AccountService: WebService   {    public struct Customer {      public string name;      public string address;      public int collatoral_amt;    }    [WebMethod]    public bool createInvestmentAccount(Customer customer)    {      return true;    }   } }

上述两个帐户服务有相同的域,但有不同的分支: http://bigbank.com/retail 及 http://bigbank.com/investment。由于不同的需求,零售 AccountService 中有一个比投资 AccountService 中稍有不同的 Customer 复杂类型。两个 AccountService 类文件都命名为 AccountService.asmx。在 .NET 中这不会有问题,而实际上在 .NET 中是完全顺乎其理的,因为两个帐户服务都被限定为不同的 URL,他们都准确的反映出他们的域名及分支名。

现在,如果您准备在 Application Developer 中创建客户端项目并试图集成两个 Web 服务,情况就要有所变化。在 Java 代码中,当创建 Web 服务客户端时,包名是基于命名空间的域名的。http://bigbank.com/

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号