ServiceStack 跨平台互操作性

3
我刚学习了解ServiceStack,从我所读到的评论来看,它似乎非常有前途,可以从WCF转换过来。
这篇文章说它运行在.NET和Mono上 ServiceStack vs ASP.Net Web API
我想知道一个在Windows服务器上托管的ServiceStack Web服务是否可以被客户端(例如Mac OSX上的Mono)使用。
ServiceStack序列化/反序列化是否可以在不同的服务器平台和客户端平台之间工作?
理论上来讲,这应该是可能的,因为我们的目标是CLR。
然而,在实践中,这确实取决于Mono对CLR的实现。

嗨,蒂姆,你能澄清一下吗?你是想使用SOAP/REST/JSON-RPC进行通信吗? - JTew
2个回答

2
服务堆栈的客户端和服务器dll可以直接在完整的Mono服务器上运行。例如,servicestack.net上的所有实时演示都是在Ubuntu/Mono/Nginx上托管的(已经有4年了)。
相同的客户端库也适用于安装了完整版本的Mono的位置,因此也应该可以在MonoMac上工作。
但是,Xamarin的iOS和Android移动平台需要为每个平台构建定制版本。我们以前没有支持这些移动平台,但是在发布ServiceStack v4之后,我们将开始提供定制版本。首先使用Android,因为它没有iOS的NoJIT技术限制,然后再通过寻找适当的解决方法来支持iOS。

1
我们的经验是,使用mono服务堆栈服务主机与wcf soap1.1客户端存在问题。 特别是基于的版本出现了问题,无法反序列化.net wcf 4.5客户端生成的消息。 我们向他们提供了c#数据契约类来构建服务。还有一个不兼容性问题,但我记不清楚了,我认为它与服务堆栈内的约定有关。 最初,数据合同在消息对象末尾具有Response一词。 服务堆栈在异步响应方面有一项约定,他们遇到了问题。 我们最终改名了合同。他们最终添加了一个翻译层以去除有问题的xml属性。 相反,即用iis托管的wcf基本http soap 1.1服务实现的mono客户机似乎要好得多。 我不记得这种实现有任何问题。 我认为未来的mono版本解决了反序列化问题。 希望能对您有所帮助。

1
我不建议在Mono中使用WCF/SOAP,因为它们的实现是不完整的。JSON、JSV C# Service Clients使用相同的src/impl,应该能够更好地工作。 - mythz
他们正在使用ServiceStack库。据我回忆,反序列化问题出现在Mono框架中,而不是ServiceStack代码库中。 - JTew
这就是我的意思,ServiceStack使用内置于.NET框架中的WCF/SOAP类,而在Mono中则不够完整/强大。相比之下,JSON/JSV格式完全由ServiceStack提供,因此使用与.NET相同的src/impl在Mono上运行。 - mythz
啊,好的。我明白了。我想知道Tim想要比较哪些协议,Tim? - JTew

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接