2013-11-05 54 views
3

我剛剛瞭解了ServiceStack,並且從我讀過的評論中得知,看起來很有希望從WCF進行切換。ServiceStack跨平臺互操作性

這個帖子說,它運行在.NET和Mono ServiceStack vs ASP.Net Web API

我想知道,如果託管在Windows服務器上的ServiceStack Web服務可以通過客戶端,比如,單在Mac OSX消耗。

ServiceStack是否將序列化/反序列化從一個服務器平臺工作到不同的客戶端平臺?

從理論上講,這應該是可能的,因爲我們的目標是CLR。

但是,實際上它實際上取決於Mono的CLR實現。

+0

你好蒂姆,你能澄清嗎?您是否正在使用SOAP/REST/JSON-RPC進行通信? – JTew

回答

2

ServiceStack客戶端和服務器dll確實可以在完整的Mono服務器上正常工作。例如。所有在servicestack.net上的實時演示一直都在Ubuntu/Mono/Nginx上(即超過4年)。

相同的客戶端庫也可以在Mono安裝完整版本的情況下工作,因此它也適用於MonoMac。

但Xamarin的iOS和Android Mobile平臺確實需要爲每個平臺定製構建。我們以前沒有支持這些移動平臺,但是我們將在ServiceStack v4發佈後開始提供定製構建。最初與Android一樣,因爲它沒有iOS's NoJIT technical limitations,所以稍後在iOS中找到適用於iOS限制的解決方法後即可。

1

我們的經驗是,在使用wcf soap1.1客戶端時使用單一服務堆棧服務主機時出現了問題。

特別是,服務主機基於的mono版本對將.net wcf 4.5客戶端生成的消息進行反序列化存在問題。

從內存中,他們無法處理xml中的名稱空間。我們向他們提供了c#數據合同類來構建服務。還有一種不兼容,但我不記得那是什麼,我認爲這是與服務堆棧中的約定有關。最初數據合同在消息對象的末尾有Response。服務棧有一個圍繞異步響應的約定,它們遇到了問題。我們最終重新命名了合同。

他們最終放置了一個翻譯層去掉有問題的xml屬性。

反過來說,即iis託管wcf基本http soap 1.1服務的單用戶客戶端的實現似乎效果更好。我不記得在這一輪實施過程中遇到任何問題。

我認爲單聲道的未來版本修復了反序列化問題。

希望這會有所幫助。

+1

我不會推薦在Mono中使用WCF/SOAP,因爲它們的實現是不完整的。 [JSON,JSV C#服務客戶端](https://github.com/ServiceStack/ServiceStack/wiki/C%23-client)使用相同的src/impl,因此應該更好。 – mythz

+0

他們使用的是服務堆庫。反序列化問題出現在單聲道框架中,而不是我記憶中的服務堆代碼庫中。 – JTew

+0

這就是我所說的,ServiceStack使用.NET框架中內置的WCF/SOAP類,它在Mono中不太完整/健壯。相比之下,JSON/JSV格式完全由ServiceStack提供,因此它使用與運行在Mono上的.NET完全相同的src/impl。 – mythz