【问题标题】:How to implement Unity 3 + N-Tier architecture?如何实现 Unity 3 + N-Tier 架构?
【发布时间】:2013-09-09 23:54:20
【问题描述】:

我正在尝试了解 Microsoft.practices.Unity。

所以,我有这个解决方案:

  • 网络项目
  • 业务类库项目作为我的逻辑层
  • 数据类库项目作为我的数据访问层

我想使用 Unity 将 Web 层与逻辑分离,并将逻辑层与数据分离,使用 DI。

我在我的 Web 项目中创建了一个 unity.config 文件,因为我想从配置文件控制注册,而不是在二进制代码中。这对我来说没问题。我正在使用 Unity.MVC4。

但是,我只解决了从 Web 到业务层的依​​赖注入。我怎样才能为企业到数据层做同样的事情?

我已经看过一些网络示例,但我仍然感到困惑,因为没有示例向我展示了通过网络层到数据层的过程,逐步了解如何实现 Unity DI。

我想看一个简单的例子,它是一个使用 Unity 实现完全 DI 的 n 层解决方案。

【问题讨论】:

标签: asp.net-mvc-4 unity-container n-tier-architecture


【解决方案1】:

防止使用配置文件注册依赖项。这是脆弱且容易出错的,你只能做你可以在代码中做的事情的一个子集。如果你这样做是因为你想防止依赖引用,请注意,通过使用配置文件,相同的引用仍然适用,但现在它是隐式的,没有编译时间检查可以帮助你。

这并不意味着您永远不应该使用配置文件,但您应该只使用它来配置在部署期间或之后可能实际更改的内容。在此期间大部分内容不应更改,因为大多数更改必须由开发人员更改,要么通过启动应用程序手动更改,要么使用单元测试以自动方式进行更改。

也不会将类名放在配置文件中,原因与它易碎的原因相同。使用配置开关通常会更好,因为这允许您将类名移动到代码中(使用 switch case 语句或 if 语句来根据配置设置更改配置)并启用编译时检查。

对于您的其他问题,Tuzo 的link 可能会为您提供足够的信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-17
    • 1970-01-01
    • 1970-01-01
    • 2011-03-30
    • 2012-11-27
    • 2015-01-31
    • 1970-01-01
    相关资源
    最近更新 更多