【问题标题】:using Autofac in a multi-layered architecture在多层架构中使用 Autofac
【发布时间】:2011-01-13 00:54:54
【问题描述】:

我对 DI/IoC 概念还很陌生,想在 3 层 ASP.NET Webforms 应用程序中使用 Autofac。

  • UI 层:一个 ASP.NET 网络表单网站。
  • BLL:调用 DAL 上的存储库的业务逻辑层。
  • DAL:.EDMX 文件(实体模型)和 ObjectContext 以及用于抽象每个实体的 CRUD 操作的存储库类。
  • 实体:POCO 实体。执着无知。由 Microsoft 的 ADO.Net POCO 实体生成器生成。

我问了一个更笼统的问题here。基本上,我想在我的 DAL 中为每个 HttpContext 创建一个对象上下文。但我不想在 UI 中添加对 DAL 的引用,也不想直接在 DAL 中访问 HttpContext。我想这就是 IoC 工具发挥作用的地方。我上一个问题的答案是使用温莎城堡的一个很好的例子。我想使用 Autofac 作为我的 IoC 工具,但不知道如何实现这一点。 (如何访问 application_start 中的 DAL 以注册组件,而我不想在我的 UI 中引用它,能够在 Autofac 的 BLL 中使用 DAL 组件的正确引用是什么,我应该将 BLL 注册为 Autofac 的组件吗?也)

抱歉,没有提供明确的问题并要求提供一种工作示例,但我对整个 IoC 概念非常陌生,我认为我无法将其用于当前的限时项目。

【问题讨论】:

    标签: entity-framework-4 asp.net-4.0 autofac


    【解决方案1】:

    Autofac 模块是您正在寻找的技术:http://code.google.com/p/autofac/wiki/StructuringWithModules

    一个模块组相关的配置,例如您的 DAL 类型,并且可以通过 Web.config 加载到应用程序中:http://code.google.com/p/autofac/wiki/XmlConfiguration#Modules

    这将避免在您的网络应用和 DAL 之间进行任何硬引用。

    如果您想按请求注册 DAL 组件,请使用 InstancePerLifetimeScope() 共享修饰符。这与InstancePerHttpRequest() 的工作方式相同,除非您在应用中自定义生命周期层次结构(不太可能)。

    祝你好运!

    尼克

    【讨论】:

    • 谢谢尼克。不知道我可以将 Web.config 与 Autofac 一起使用。
    • 嗨@nicholas-blumhardt,您知道是否有任何带有实体数据模型-autofac-mvc4 的项目示例可供下载?提前致谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-22
    • 2013-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多