通过MVC Web API传输完整对象的好策略是什么?

时间:2014-01-06 11:03:34

标签: .net asp.net-mvc mvvm

我们希望通过Web API访问Model对象,将DAL和Model层与世界其他层分开。由于该模型不仅仅是DTO,因此序列化是唯一可以想到的解决方案。这是一个好模式吗?有没有更好的方法将Model对象暴露给远程客户端?

2 个答案:

答案 0 :(得分:1)

如果您使用的是Web API,则消费者必须反序列化他们从Web API收到的内容。一点点工作,但取决于要求。对于远程客户端,我认为这将是良好的轻量级清洁解决方案,但仅限于HTTP请求方法。

如果主要要求是分离域模型,则还有另一种称为 Model View ViewModel (MVVM) 的模式,您可以在其中将域模型(DM)与视图模型(VM)分开。

所有架构都保留在DM中,VM会执行客户验证,错误消息等。还有一个名为 Automapper 的好工具,可用于映射DM模型类如果它们之间存在差异,则为VM模型类。

答案 1 :(得分:0)

是。序列化就是这样。最常见的是在asp.net MVC中执行Json(对象)以序列化为Json对象,然后在客户端反序列化。

此外,当您在MVC API上执行Http Put或Http Post时,Json对象会自动反序列化&映射到属于参数的对象。

 [HttpPost]
 public ActionResult PutMemoboard(int id, Memoboard m)

在上述情况下,当您执行api / putmemoboard / 123并以Json格式发布Memoboard数据时,它会自动绑定。

同样,您只需使用Json(memoboard)在HttpGet操作中进行序列化。

  [HttpGet]
  public ActionResult GetMemoboard(int id)
  {
    Memoboard memoboard = repository.GetMemoboard(id);
    return Json(memoboard, JsonRequestBehavior.AllowGet);
  }