ServiceStack跨平台互操作性

时间:2013-11-05 05:07:55

标签: web-services serialization mono servicestack

我刚刚了解了ServiceStack,到目前为止我所看到的评论看起来非常有希望从WCF进行切换。

这篇帖子说它运行在.NET和Mono上 ServiceStack vs ASP.Net Web API

我想知道客户端是否可以使用托管在Windows服务器上的ServiceStack Web服务,例如Mac OSX上的Mono。

ServiceStack序列化/反序列化是否可以在一个服务器平台上运行到另一个客户端平台?

理论上,这应该是可能的,因为我们的目标是CLR。

然而,实际上它实际上取决于Mono对CLR的实现。

2 个答案:

答案 0 :(得分:2)

ServiceStack客户端和服务器dll可以按原样在完整的Mono Server上运行。例如。 servicestack.net上的所有现场演示一直在Ubuntu / Mono / Nginx上托管(即超过4年)。

相同的客户端库也适用于安装完整版Mono的地方,因此它也可以在MonoMac上运行。

但Xamarin的iOS和Android Mobile平台确实需要为每个平台定制构建。我们之前没有支持这些移动平台,但我们将在ServiceStack v4发布后开始提供自定义构建。最初使用Android时,因为它没有iOS's NoJIT technical limitations,所以稍后我们会找到适合iOS限制的解决方法。

答案 1 :(得分:1)

我们的经验是,使用wcf soap1.1客户端的mono servicestack服务主机时出现了问题。

特别是服务主机所基于的单声道版本在反序列化.net wcf 4.5客户端生成的消息时出现问题。

从内存中他们无法处理xml中的命名空间。我们为他们提供了c#数据合同类来构建服务。还有一个不兼容但我不记得那是什么,我认为它与服务堆栈中的约定有关。最初,数据协定在消息对象的末尾有“响应”一词。服务堆栈有一个围绕异步响应的约定,它们遇到了问题。我们最终重新命名了合同。

他们最终建立了一个翻译层,以消除有问题的xml属性。

相反,即使用iis托管wcf基本http soap 1.1服务的单一客户端的实现似乎工作得更好。我不记得以这种方式实现任何问题。

我认为未来版本的mono修复了反序列化问题。

希望这有帮助。