我有一个当前的应用程序,其中客户端ClickOnce应用程序点击ASMX Web服务以获取各种信息。它工作正常,但有点慢。问题的一部分是它返回大型对象,当分解为SOAP时,将大型对象变成一个混乱的XML标记,这会大大增加有效负载的大小。
无论如何,为了解决这个问题,我正在考虑使用我听过很多关于的技术来重写这个设置,但是从来没有真正用过“Hello World”应用程序。
所以我在考虑做一个返回JSON对象的REST API。赋予JSON更紧凑的格式,这应该可以减轻消息问题的大小。并且,除非有一些我不知道的东西,否则解析并不比SOAP XML更强。
问题:
答案 0 :(得分:2)
REST是一种利用HTTP的架构风格,因此我建议使用HTTP侦听器进行服务。
JSON是JavaScript Object Notation,因此您需要在服务器端使用JSON解析器。您可以在客户端流式传输JSON以进行响应; MIME类型为application/json。
我不知道WCF中有任何令人讨厌的惊喜,但我没有看到任何HTTP。
答案 1 :(得分:1)
您可以使用DataContractJsonSerializer进行序列化过程。
我不会使用WCF来创建JSON restful webservices。如果你使用ASP.NET MVC3,你可以使用更好的结构。更容易遵循代码,并且更容易创建RESTful路由。
要返回JSON,您只需返回您的viewmodel(使用http://mydomain.com/user/view/10获取):
public ActionResult View(int id)
{
var user = _repository.Get(id);
var viewModel = AutoMapper.Map<UserViewModel, User>(user);
return Json(viewModel);
}