Java与.NET的SOA互操作简易教程 - 编程入门网
没有使用名称/键值对:我们仅仅使用完整的POST内容主体,这有点超出HTTP 规范涵盖的范围了。不过,这只是个人喜好的问题——只要在服务器端和客户端 相同就可以了。
在请求传入时,我们使用XStream将XML反序列化成一个命令对象,然后合 理地进行处理就可以了。 编写.NET服务器的代码 用于.NET服务器端的代码要简单得多——我们仅需使用Internet Information Server(IIS)和.NET的内建XML序列化机制就可以了。内建的序列 化机制要求C#属性将字段标记成XML元素而不是XML属性。当然,还存在着 XStream的一个.NET移植版本,不过我们还没有拿它做过实验,而我们也听说过 开源社区还将有另外一个移植版本发布。 编写Java客户端的代码 对于Java客户端,除了XStream以外,我们还得使用Apache的HttpClient类库 (以及相应的依赖类库)。 请参见http://jakarta.apache.org/commons/httpclient。 HttpClient类库用起来很简单,并且允许POST操作在执行之前被以编程的方 式创建。记住,POST内容主体完全是用XStream生成的XML,形式可以是名称/键 值对,或者是除去HTTP构造的完整请求。如果你希望为服务创建一个测试Web表 单,那么前者可能更有吸引力一些。 Java与.NET的SOA互操作简易教程(4)时间:2011-06-11 infoq Paul Hammant 译:Jason编写.NET客户端的代码 对于.NET客户端,只要有.NET框架就没问题了,不管是1.1或者2.0都可以。 对于POST操作,可以使用内建的WebRequest类和内建的序列化机制。 提升服务的可扩展性和兼容性 简单POST表达命令的XML的好处在于,我们可以在稍后加入更多的命令,而不 需要改变我们的消息实现方式。服务器可以在运行期决定是否可以处理相应的 XML: 要处理今后可能出现的多种类型,好的解决方案是为每个类型注册一个处理 器,如此一来就可以避免大量的if/else或者switch/case代码块了: 在使用XML是,人们面临着过分依赖于相关Schema的诱惑,我们必须仔细了解 Schema验证和客户实际所需信息之间的差别。 如果Schema验证在运行期执行,会带给开发人员不恰当的安全感。错误仍然 可能发生——可能错误的XML还是会被发出。但这时候出现了什么?答案是会有 一个Schema无效的异常信息被抛出。使用把XML映射到类定义的方法,可能存在 两种情况:要么得到一个正确的对象,要么该对象会丢失某些字段。在这种情况 下,可以抛出一个带有真实原因的真正异常,它可以很容易地被转换回一条清晰 的XML回复信息提供给客户。关键的区别在于,异常只在必要信息缺失的情况下 抛出——其它东西都可以有变更。 这种设计所固有的可能性在于,XML中可以加入新的元素(对应于类中的字段 ),从而使得让API在表义性上更上一层楼成为可能。经过仔细的测试之后,服 务将可以支持客户发送旧版本的请求文档。一般意义上的API变更,以及“额外 字段”级别上的变更,也会变得更加意义深远: 不过,要是把版本号也加入URL就更好了: http://x.com/weather/WeatherQuery/2.0 Java与.NET的SOA互操作简易教程(5)时间:2011-06-11 infoq Paul Hammant 译:Jason以Web服务的形式包装服务 如果你要在同一台服务器上放上另外一个服务,用于使刚才的服务处理标准 的Web服务请求,那么没有什么可以阻止你这样去做。你所需要的,不过是WSDL 指定的方法而已,就像这样: 在工具上的选择,包括:.NET平台下的WSE 2.0/3.0,Java平台下是Glue、 AXIS、JAX-WS或者J2EE容器内建的适配器。进行SOAP编码的方法可以简单交给为 纯REST实现开发的反序列化-执行-序列化的代码来完成。这样一来,你就可以避 免负责公司标准监控的人来找麻烦了。 将服务扩展至消息传送(Messagi |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |