2010-05-04 67 views
0

我正在设计一组Web服务,以允许我们的客户从他们的应用程序连接到我们的系统之一。我们的客户有各种框架开发的应用程序(.NET,Java,PHP,Python甚至偶尔的所有JS应用程序),所以显然WS是要走的路。设计可互操作的Web服务

调查一下真正的interop WS我发现要走的路是首先设计WSDL和XSD并从那里派生实现。

我真正想要的是指导,如果这真的是要走的路。我读过WCF创建可互操作的WS,但我不是MS创建标准的粉丝。

我应该使用WCF还是有一套很好的工具来设计WSDL和XSD,而没有我期待的痛苦。

在此先感谢

回答

1

如果您想与JavaScript进行互操作,那么最好制作更多REST风格的API。这基本上只是标准的HTTP调用,所以你可以从一开始就进行互操作。然而,你已经表明你想要使用SOAP,所以...

如果你打算使用SOAP/WSDL,我肯定会提倡使用服务器平台 - 是的,甚至是.NET - 来生成WSDL,然后简单地检查你正在使用的选项是否产生了良好的可互操作的WSDL。

我是一位Java开发人员,他拥有PHP & Perl的历史,并且在硬币两端(作为服务器和客户端)与许多WS项目上的.Net互操作。通常有没有大的问题 - 只是要小心两件事的:

  • 某些专有元素MS 与开放标准混合英寸例如,对于 示例,他们可能会提供NTLM样式的 身份验证,在大多数使用情况下,它们确实不是 ,特别是在您使用SSL 证书时。
  • SOAP已经采取了一些 不同的形式多年来 (文档/文字,RPC /编码,...) 你可能会发现你并不需要 担心这一点,因为RPC /编码 与旧框架死于一起,并 最现代的框架向 文件倾向于/文字
  • SOAP提供了一些 螺栓固定的标准(如MTOM &为附件DIME 和SOAP,WS为 认证)。尽量避免使用这些 螺栓,因为不同的平台 实现不同的子集。
  • 为了安全起见,我建议使用SSL来 信任&保密,然后 使用HTTP基本身份验证,或在您的SOAP请求定义简单地定制 字符串标记。

只要保持WSDL尽可能小,尽量在这个过程中很早就互操作,而你不应该有太多的问题

0

WSDL和XSD是独立的语言,你就必须有一些机制使用其他语言进行交流。对你来说好的事情是恕我直言的核心数据设计,所以你不需要太多的XSD用于相同的数据实体。

1

您可以使用WCF 契约优先发展。

如果互操作性是主要问题,那么我会建议使用WCF提供服务实现,而不是依靠WCF生成服务接口,以使用契约优先开发来对接口建模。

关于如何开发这种方式的一篇非常好的文章是Schema-based Development with Windows Communication Foundation

如果您打算推出自己的WSDL和模式,您可能希望获得像XmlSpy或LiquidXml这样的编辑器。我喜欢LiquidXML的价格(免费!),但我不记得是否需要为Web服务功能付费。

Visual Studio和WCF的契约优先开发另一个有趣的工具是WSCF.blue。我没有使用它,但似乎是基于WCSF.blue roadmap积极开发的。

0

我不确定当你问“我应该使用WCF”时你是什么意思? WCF是.NET上开发Web服务(以及其他类型的通信服务)的最新机制。目前没有其他机制。其他的已经过时,或者被认为是“传统技术”。

+0

您可以使用WCF或ASP.NET Web服务。我认为ASP .NET Web服务不是过时的,但我可能是错的。 – 2010-05-06 18:26:37

+0

@Zyd:你错了。见http://johnwsaundersiii.spaces.live.com/blog/cns!600A2BE4A82EA0A6!860.entry – 2010-05-06 19:02:48

+0

哦,我的!仅仅为了它的乐趣,我已经通过asmx web服务在线文档,并且我一直无法找到遗留技术警告。但是我认为我现在会坚持下去,因为我已经开发了一些代码。 – 2010-05-06 20:53:35