【问题标题】:Web service written in both WCF and Java用 WCF 和 Java 编写的 Web 服务
【发布时间】:2011-09-20 02:15:38
【问题描述】:

我能否使用 C#/WCF 和 Java Web 服务编写实现相同方法并返回相同自定义对象的 Web 服务?如果是这样,我是否可以使用单个 Web 引用但具有不同的地址来访问 Web 服务?

我之所以问,是因为我必须托管一个具有 GetCitations 和 GetTerms 方法的 Web 服务,用于公开公开我们的数据库内容。我们在 IIS 上,所以我打算用 WCF 来做。但是,该项目中的其他合作伙伴也必须托管等效的服务,并且它们都是基于 Java 的。

然后,我们正在构建一个软件应用程序,该应用程序需要连接到任意数量的这些服务(由用户在运行时定义)。我期望我们可以有一组类来连接到这些服务(但具有不同的端点地址),但我不确定我是否正确地期望它能够工作。

这可能吗? 有哪些注意事项/限制?

谢谢。

【问题讨论】:

  • 等等,那么您将拥有 2 个独立的 Web 服务,执行相同的操作,但实现完全不同?
  • 是的,2 个或更多。我们有多个组织希望实现他们自己的“标准”Web 服务实例,以便以通用方式公开他们自己的数据库内容。

标签: c# java .net wcf web-services


【解决方案1】:

如果您确保两个服务具有等效的 wsdl 文件并且您使用 http/soap 绑定,这应该不是问题。

不过,我不确定是否将二进制 (net.tcp) 与 WCF 一起使用。这可能是个问题。

【讨论】:

    【解决方案2】:

    一种方法是使用 JAX-WS (Java 6) 将方法公开为 Web 服务。

    JAX-WS 堆栈允许在运行时自动生成正确的 WSDL。

    .NET 团队然后可以采用该 WSDL,并使用标准工具创建该 WSDL 的模拟实现。然后将此模拟实现用作实际的 .NET 实现,然后您使用标准工具为 that Web 服务生成 WSDL。

    您现在必须使用具有相同语义的 Web 服务,每个服务都有自己的 WSDL。

    【讨论】:

      【解决方案3】:

      Java 和 .NET 都可以实现符合 SOAP 的 Web 服务,所以答案是肯定的,您可以编写实现相同 WSDL 的 .NET 和 Java Web 服务。

      【讨论】:

      • @fiver,@Thorbjørn。感谢您的输入。所以从你们所说的听起来是可能的。返回列表或自定义对象(例如 List)作为 Web 服务响应是否存在问题?
      • @fiver,@Thorbjørn。如果 WSDL 完全相同,那么我应该能够使用 svcutil.exe 生成的一个类在任一端点上调用相同的方法 - 对吧?
      • @Steve - WSDL 将对象定义为 XML; .NET 和 Java Web 服务中的实际对象不会相同(由于不同的实现),但它们会为了 Web 服务的目的而序列化为相同的 XML。所以是的,您将能够使用相同的代理调用这两个 Web 服务(只需更改地址)
      • 谢谢。我就是这么想的。我注意到,当我实现 WCF 服务时,它的 WSDL 包括我的命名空间,但也包括一个指向 schemas.microsoft.com/2003/10/Serialization 的命名空间。关于如何避免这种情况的任何提示?
      • @Steve - 这是个好问题;我建议作为一个单独的问题提出。
      猜你喜欢
      • 2015-01-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-14
      • 1970-01-01
      相关资源
      最近更新 更多