我正在寻找一些关于具有一些特殊性的客户端/服务器解决方案架构的建议。
客户端是一个相当粗的客户端,将服务器主要留给持久性、并发性和基础架构问题。服务器包含许多包含敏感信息和公共信息的实体。例如,假设实体是人,假设社会安全号码和姓名是敏感的并且年龄是公开可见的。
启动客户端时,用户会看到许多实体,但不会泄露任何敏感信息。在任何时候,用户都可以选择登录并针对服务器进行身份验证,只要身份验证成功,用户就可以访问敏感信息。
客户端正在托管一个域模型,我正在考虑将其实现为某种“延迟加载”,使第一个请求实例化实体,然后用敏感数据刷新它们。实体获取器会在敏感信息未被披露时抛出异常,fe:
class PersonImpl : PersonEntity
{
private bool undisclosed;
public override string SocialSecurityNumber {
get {
if (undisclosed)
throw new UndisclosedDataException();
return base.SocialSecurityNumber;
}
}
}
另一种更友好的方法可能是有一个值对象来指示该值是未公开的。
get {
if (undisclosed)
return undisclosedValue;
return base.SocialSecurityNumber;
}
一些担忧:
- 如果用户登录然后退出,敏感数据已经加载,但必须再次披露。
- 有人可能会争辩说,这种类型的功能属于域内,而不是某些基础设施实现(即存储库实现)。
- 与往常一样,在处理大量属性时,这种类型的功能可能会使代码混乱
任何见解或讨论表示赞赏!