我的团队正在设计一个域模型,它将在统一的存储库抽象背后隐藏各种不同的数据源。这种方法的主要驱动因素之一是这些数据源在不久的将来发生重大变化的可能性非常高,我们不希望在发生这种情况时重写业务逻辑。一个数据源是我们的会员数据库,它最初是使用默认的 ASP.Net Membership Provider 实现的。成员资格提供者与 System.Web.Security 命名空间相关联,但我们有一个设计指南,要求我们的域模型层不依赖于 System.Web(或任何其他实现/环境依赖项),因为它将在不同的环境中使用 -我们也不希望我们的网站直接与数据库通信。
我正在考虑将 MembershipProvider 方法与我们抽象的 n 层架构相协调的好方法。我最初的感觉是我们可以创建一个与域模型交互的“DomainMembershipProvider”,然后在模型中实现处理存储库和处理验证/业务逻辑的对象。然后,存储库将使用我们的(尚未确定的)ORM/数据访问工具来实现数据访问。
这种方法是否有任何明显的漏洞——我没有与 MembershipProvider 类密切合作,所以很可能会遗漏一些东西。或者,您认为有没有一种方法可以更好地满足我上面描述的要求?
提前感谢您的想法和建议。
问候,扎克