我正在设计一组Web服务,以允许我们的客户从他们的应用程序连接到我们的系统之一。我们的客户的应用程序是在各种框架(.NET,Java,PHP,Python甚至偶尔的所有JS应用程序)中开发的,所以显然WS是可行的方式。
研究一下真正的互操作WS我发现要走的路是首先设计WSDL和XSD并从那里派生实现。
如果真的要走的话,我真正需要的是指导。我已经读过WCF创建了可互操作的WS,但我不是MS的粉丝创建标准的东西。
我应该使用WCF还是有一套很好的工具来设计WSDL和XSD而没有我期待的痛苦。
提前致谢
答案 0 :(得分:1)
如果您想与JavaScript进行互操作,那么最好制作更多REST风格的API。这基本上只是标准的HTTP调用,因此您可以从一开始就可以互操作。但是,你有点表示你想使用SOAP,所以......
如果您正在使用SOAP / WSDL,我肯定会提倡使用服务器平台 - 是的,甚至是.NET - 来生成WSDL,然后只需检查您正在使用的选项是否产生了良好的,可互操作的WSDL。
我是一名有PHP和PHP历史的Java开发人员。 Perl,我在硬件的两面(作为服务器和客户端)与许多WS项目上的.Net进行了互操作。通常没有重大问题 - 只要警惕几件事情:
尽可能保持WSDL尽可能小,尝试在流程的早期进行互操作,并且不应该有太多问题
答案 1 :(得分:1)
您可以使用WCF 和合同优先开发。
如果主要关注互操作性,那么我建议使用WCF来提供服务实现,而不是依靠WCF生成服务接口以使用契约优先开发来为接口建模。
关于如何开发这种方式的一篇非常好的文章是Schema-based Development with Windows Communication Foundation。
如果要打开自己的WSDL和模式,可能需要获得像XmlSpy或LiquidXml这样的编辑器。我喜欢LiquidXML的价格(免费!),但我不记得你是否需要为网络服务功能付费。
使用Visual Studio和WCF进行契约优先开发的另一个有趣工具是WSCF.blue。我没有使用过它,但它看起来似乎是基于WCSF.blue roadmap积极开发的。
答案 2 :(得分:0)
WSDL和XSD是独立于语言的,您只需要有一些使用其他语言进行通信的机制。你要做的好事是IMHO核心数据设计,所以对于相同的数据实体你不需要那么多的XSD。
答案 3 :(得分:0)
当你问“我应该使用WCF”时,我不确定你的意思吗? WCF是在.NET上开发Web服务(和其他类型的通信服务)的当前机制。目前没有其他机制。其他的已经过时,或者被认为是“遗留技术”。