【发布时间】:2014-05-07 16:08:32
【问题描述】:
这可能是一个哲学问题,但我想我会在这里问,因为我有点分析麻痹。
我目前正在开发一个基于浏览器的游戏(客户端 HTML/Javascript 和到达后端的 WCF Web 服务),并且我正在非常努力地拥有一个漂亮、丰富的域模型。
所以这是我的问题。我有一个班级叫 Squadron
public class Squadron
{
public string SquadName { get; set; }
public User Owner { get; set; }
public int XPosition { get; set; }
public int YPosition { get; set; }
public int XTarget { get; set; }
public int YTarget { get; set; }
}
中队归用户所有
public class User
{
public string Username { get; set; }
public string Password { get; set; }
public string Email { get; set; }
public int UserID { get; set; }
public List<string> Roles { get; set; }
}
我还有一个 Squadron 存储库,它根据它的 ID 返回一个完全填充的 Squadron 对象。我有一个应该返回中队的网络服务(基本上是 GetSquadron)。但是,附加的 User 对象有一些我可能不想暴露给任何客户端的信息(密码,作为一个明显的例子)。虽然看起来密码应该是这个域对象的一部分......它似乎不是我一直想要填充的东西。
我考虑添加另一层逻辑(在填充域对象之后),以确保调用用户可以访问某些字段,但我想知道我可以在社区中找到哪些最佳实践。我尝试了谷歌搜索,但运气不佳。
谢谢!
编辑:在任何人对它竖琴之前,密码已经过哈希处理。我从不在数据库中存储明文密码。我只是想我可能不应该返回密码,无论是否加密。
编辑 2 (Phillip):我已经填充了 User 对象,因为我确实需要客户端中的几个字段(用户名和用户 ID,可能还有电子邮件)。也许创建一些 DTO 是问题的答案。我想我认为在所有层都有一个通用模型会很好。
【问题讨论】:
-
你总是可以只添加几个只读属性到中队,用户名,用户ID。
标签: c# wcf service dns repository