【发布时间】:2013-01-05 13:24:29
【问题描述】:
我有一个多层系统,其中所有业务逻辑都可以通过 WCF 服务使用。
现在考虑以下场景:
- 用户打开我的 Web 应用程序 (ASP.NET MVC 4) 并从 WCF 服务请求一些实体
- WCF 服务从数据库中读取实体(使用 NHibernate)
- 实体通过安全层,我们发现用户不应该看到该实体的某些特定字段
- 表示层(没关系,它是什么 - Web 应用程序、移动应用程序)通常不应该知道用户的安全权限。表示层只获取它从服务接收到的每个字段并呈现它。
如何从服务上的实体中去除不必要的信息,并使我的表示层不知道服务不想返回的那些实体字段?实现这一目标的最佳做法是什么?
我想,我应该使用 DTO(数据传输对象),但显然我不能严格定义它们,因为在安全层(或其他一些字段过滤系统)启动之前,我不知道哪个用户可以访问每个字段。
【问题讨论】:
标签: c# wcf serialization dynamic data-transfer-objects