构建服务层 - 走哪条路?

时间:2011-05-02 22:33:18

标签: c# json rest architecture .net-3.5

我有一个当前的应用程序,其中客户端ClickOnce应用程序点击ASMX Web服务以获取各种信息。它工作正常,但有点慢。问题的一部分是它返回大型对象,当分解为SOAP时,将大型对象变成一个混乱的XML标记,这会大大增加有效负载的大小。

无论如何,为了解决这个问题,我正在考虑使用我听过很多关于的技术来重写这个设置,但是从来没有真正用过“Hello World”应用程序。

所以我在考虑做一个返回JSON对象的REST API。赋予JSON更紧凑的格式,这应该可以减轻消息问题的大小。并且,除非有一些我不知道的东西,否则解析并不比SOAP XML更强。

问题:

  1. 我的假设是否合理?
  2. 我应该使用哪些技术来实现REST和JSON?我听说过WCF Web API,但它看起来还不完整。我有什么选择?
  3. 在我开始讨论之前,我应该知道WCF,REST和JSON有什么令人讨厌的事吗?

2 个答案:

答案 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);
}