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