2015-07-10 80 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