2015-07-10 104 views
1

我有一個WCF服務需要使用JSON支持HTTP請求,但是默認的序列化程序(DataContractSerializer)不能很好地完成這項工作。我閱讀過有關Web API的最新發展,但我遇到的所有示例都需要使用模型,並且只能使用簡單的CRUD操作。我的WCF服務執行的不僅僅是CRUD操作。它也接受/返回數據類型,如字典列表。我應該如何處理這個問題的任何建議?使用ASP.NET Web API的WCF

+0

WCF真的是與json字典的痛苦。我已經轉向Web Api,它能夠非常直觀地處理序列化(使用newtonsoft)和反序列化。 – brando

回答

0

...默認的串行器(DataContractSerializer的)只是沒有做 工作非常好

什麼工作的DataContractJsonSerializer沒有做的非常好?我沒有遇到任何問題。無論如何,如果您想將它換成JSON.net,請參閱herehere

我讀到有關Web API是去這些天

那麼這是商榷的方式。如果你只是想要一個HTTP API,那麼像Nancy這樣的平臺比WebAPI更容易使用。但是你通常是正確的,WebApi更喜歡WCF webHttpBinding。

...只能使用簡單的CRUD操作。我的WCF服務比CRUD操作執行更多

這是不正確的,WebAPI可以以更多RPC樣式的方式使用。例如,你可以做這樣的事情:

[AcceptVerbs("POST")] 
public HttpResponseMessage DoSomeAction(Something actionParams) 
{ 
    ... 

    return new HttpResponseMessage(HttpStatusCode.OK) 
    { 
     Content = new StringContent("Action done") 
    }; 
} 

只是,這種違背REST校長,這就是爲什麼你看到的樣品一般不包括這種服務的操作。

至於推薦的方法我的優先順序是:

  • 南希作爲首選方案,在Windows服務中託管
  • 的WebAPI,如果有一個IIS託管需求
  • 的WebHttpBinding如果沒有IIS的要求,你已經大量投資於WCF