C# (消费)可互换的WCF和JAX-WS服务

C# (消费)可互换的WCF和JAX-WS服务,c#,.net,wcf,jax-ws,C#,.net,Wcf,Jax Ws,我有N个“客户端”,每个客户端都必须为我的.Net应用程序实现一个web服务。我不想为每个客户机添加服务引用,因为它们可以随时更改,URL也可以随时更改,因此我将URL存储在数据库中,并根据我要访问的客户机创建端点 我想知道是否必须强制我的客户机编写相同类型的服务(WCF或JAX-WS),或者我仍然可以连接到一个或另一个,而无需编写某种条件逻辑 ie. If JAX-WS then "do this" ELSE IF WCF "do other stuff" 我还想知道,添加WS-*(wsht

我有N个“客户端”,每个客户端都必须为我的.Net应用程序实现一个web服务。我不想为每个客户机添加服务引用,因为它们可以随时更改,URL也可以随时更改,因此我将URL存储在数据库中,并根据我要访问的客户机创建端点

我想知道是否必须强制我的客户机编写相同类型的服务(WCF或JAX-WS),或者我仍然可以连接到一个或另一个,而无需编写某种条件逻辑

ie. If JAX-WS then "do this" ELSE IF WCF "do other stuff"
我还想知道,添加WS-*(wshttpbinding)安全性是否会增加这两种技术的互操作性(或互换性)的复杂性


如果您对这种方法有任何意见,我们将不胜感激。

首先从WSDL开始。如果你不知道这意味着什么,用谷歌搜索一下

这并不能保证互操作性,但它让您在这条道路上走了很长的路


至于添加WS-*,是的,这引入了一个额外级别的互操作挑战。

首先从WSDL开始。如果你不知道这意味着什么,用谷歌搜索一下

这并不能保证互操作性,但它让您在这条道路上走了很长的路


至于添加WS-*,是的,这引入了额外级别的互操作挑战。

不必使用if-else就可以实现这一点,所有客户端/实现(.NET和Java)都必须使用相同的契约(WSDL),这应该不是什么大问题

对于WS-*来说,仅使用.NET是非常容易的,但是从.NET到Java很难(并非不可能)让它正常工作,因此我通常使用SSL和基本身份验证(用户名/密码)或证书来完成基本HTTP。这比从.NET到Java的wsHttpBinding容易得多


正如Cheeso所说,从WSDL开始,即在.NET中创建一个客户机和服务,这将为您提供一个WSDL,然后获取该WSDL并使用它来实现Java客户机。

可以实现这一点,而不必使用if-else,所有客户机/实现(.NET和Java)都必须使用相同的契约(WSDL)这应该不是什么大问题

对于WS-*来说,仅使用.NET是非常容易的,但是从.NET到Java很难(并非不可能)让它正常工作,因此我通常使用SSL和基本身份验证(用户名/密码)或证书来完成基本HTTP。这比从.NET到Java的wsHttpBinding容易得多


正如Cheeso所说,从WSDL开始,即在.NET中创建客户机和服务,这将为您提供一个WSDL,然后获取该WSDL并使用它实现Java客户机。

请注意.NET生成的WSDL,在过去,我遇到过一些问题,Java无法正确读取WSDL,因为.Net将WSDL分解并链接在一起。这给我带来了问题,我不得不将WSDL展平,以便Java应用程序可以使用它。这就是我遇到这个问题的jdeveloper10。只要你坚持使用SOAP1.1,你应该会很好,1.2。可能会导致一些java环境问题。不过,我们使用eclipse时没有任何问题。如果有疑问,请在java端创建wsdl:)或xmlspy(如果您是核心用户)。使用Actional Diagnostics(免费)之类的工具,它将帮助您确定wsdl的WS-I合规性:非常感谢您的评论,我一直在尝试各种方法来实现这一点,这确实是一件令人头痛的事情:)请注意.Net生成的WSDL,在过去我遇到过一些问题,在.Net将WSDL分解并链接在一起时,Java无法正确读取WSDL。这给我带来了问题,我不得不将WSDL展平,以便Java应用程序可以使用它。这就是我遇到这个问题的jdeveloper10。只要你坚持使用SOAP1.1,你应该会很好,1.2。可能会导致一些java环境问题。不过,我们使用eclipse时没有任何问题。如果有疑问,请在java端创建wsdl:)或xmlspy(如果您是核心用户)。使用Actional Diagnostics(免费)之类的工具来帮助您确定wsdl的WS-I遵从性:非常感谢您的评论,我一直在尝试各种方法来实现这一点,这确实是一件令人头痛的事情:)