3

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

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

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

ServiceStack 序列化/反序列化是否可以从一个服务器平台工作到不同的客户端平台?

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

然而,在实践中它真的取决于 Mono 的 CLR 实现。

4

2 回答 2

2

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

相同的客户端库也可以在您安装了完整版 Mono 的地方使用,因此它也应该可以在 MonoMac 上使用。

但是 Xamarin 的 iOS 和 Android 移动平台确实需要针对每个平台进行自定义构建。我们以前不支持这些移动平台,但我们将在 ServiceStack v4 发布后开始提供自定义构建。最初使用 Android,因为它没有iOS 的 NoJIT 技术限制,然后在我们找到适合 iOS 限制的解决方法后使用 iOS。

于 2013-11-05T08:09:03.923 回答
1

我们的经验是使用带有 wcf soap1.1 客户端的 mono servicestack 服务主机存在问题。

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

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

他们最终放置了一个翻译层来去除有问题的 xml 属性。

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

我认为单声道的未来版本解决了反序列化问题。

希望这可以帮助。

于 2013-11-05T08:31:22.737 回答