c# - 我们可以在领域驱动设计中使用 ASP.NET Identity 吗?

标签 c# asp.net asp.net-mvc domain-driven-design

我们的团队决定为我们的项目使用领域驱动设计架构。现在讨论的焦点是“我们可以在 DDD 中使用 ASP.NET Identity吗?”。

在 DDD 设计中使用 ASP.NET 标识有什么缺点吗?

我对做出决定感到困惑。

我已经搜索过了,但我没有任何想法。

任何帮助都将不胜感激。

最佳答案

这些问题揭示了几个误解:

您似乎将领域模型视为某种整体模型,您将每个应用程序都放入其中。相反,应专注于战略模式以区分限界上下文。将域视为几个松散互连的组件的组合。然后确定您的核心领域是什么,并在那里应用 DDD 战术模式。并非每个组件都需要 DDD。其中一些甚至不应该使用 DDD。特别是 - 通用域,例如身份验证。

DDD 与技术无关(在某种程度上),所以是的,您可以使用 ASP.NET Identity 或您喜欢的任何库。

身份验证通常属于应用层,而不是领域层。

但是 - 如果在您的域中有用户/客户/个人的概念,则可能需要使用身份组件提供的身份。但是您必须了解 User 在您的限界上下文中的含义与 User 在身份组件中的含义不同。这些不是同一个概念。尽管它们都指的是同一个人坐在某处并点击您应用程序的 GUI,但它们是他的 2 个不同模型(或投影),服务于不同的目的。因此,您不应该只是在限界上下文中重用 ASP.NET User 类。

相反 - 单独的上下文应该通过反腐败层进行通信。基本上,您必须在有界上下文中提供一些服务(仅限接口(interface)),以生成特定于上下文的用户对象。在基础设施层中实现的该接口(interface)将是 ASP.NET Identity 的包装器,它获取 ASP.NET Identity 用户并生成相应的有界上下文的用户。

关于c# - 我们可以在领域驱动设计中使用 ASP.NET Identity 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22778315/

相关文章:

javascript - window.location.reload(true) 发送get请求

c# - 如何在Windows 7下 "Install"/"Enable".Net 3.5 SP1?

c# - 如何在 XAML WPF 中创建强制依赖属性

c# - ASP.NET : Web service throws "Thread was being aborted"

JavaScript 未加载

asp.net-mvc - ASP.NET 5 客户端依赖管理 - Bower

c# - 如何传递 WebAPI Controller 数据,以便发布的模型可以在绑定(bind)/反序列化或验证时访问

用于大量条目的 C# LazyList

c# - MySqlDataReader dataReader =cmd.ExecuteReader() 不进入while循环弹出窗口Form

asp.net-mvc - 在Asp.net Core中openid connect登录后运行代码