构建服务层——该走哪条路

本文关键字:条路 构建 服务 | 更新日期: 2023-09-27 17:54:33

我有一个当前的应用程序,其中客户端ClickOnce应用程序点击ASMX web服务获取各种信息。它工作得很好,但是有点慢。部分问题在于它返回大型对象,当分解为SOAP时,将大型对象变成一堆乱七八糟的XML标记,从而大大增加了有效负载的大小。

无论如何,为了解决这个问题,我正在考虑用一些更轻量级的技术重写这个设置,我听说过很多,但从来没有真正用于"Hello World"应用程序。

所以我在考虑做一个REST api返回JSON对象。考虑到JSON是一种更紧凑的格式,这应该会减轻消息大小的问题。而且,除非有我不知道的事情,否则它的解析并不比SOAP XML更密集。

问题:

  1. 我的假设合理吗?
  2. 我应该使用什么技术来实现REST和JSON?我听说过WCF Web API,但看起来它甚至都不完整。我有什么选择?
  3. 关于WCF, REST和JSON有什么讨厌的东西,我应该知道在我开始这个之前?

构建服务层——该走哪条路

REST是一种利用HTTP的架构风格,因此我建议为服务使用HTTP侦听器。

JSON是JavaScript对象表示法,因此您需要在服务器端使用JSON解析器。你可以在客户端为响应流传输JSON;MIME类型为application/json。

我不知道WCF有什么令人讨厌的意外,但我没有看到HTTP有任何意外

可以使用DataContractJsonSerializer进行序列化。

我不会使用WCF来创建JSON restful web服务。我的意思是,如果你使用ASP,你可以得到一个更好的结构。NET MVC3代替。更容易遵循代码,更容易创建RESTful路由。

要返回JSON,只需像这样返回视图模型(通过使用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);
}