【问题标题】:How to use existing 3-layered logic in ASP.NET MVC and ASP.NET Web Pages 2 projects?如何在 ASP.NET MVC 和 ASP.NET Web Pages 2 项目中使用现有的 3 层逻辑?
【发布时间】:2013-03-19 11:42:01
【问题描述】:

我有 5 个基本项目需要成为多个应用程序的一部分。 WinForms、ASP.NET、WPF 取决于我们的需求。

这些项目是:

Company.Business - Business Logic DLL
Company.Business.Model - Business Models 
Company.Business.DAL - Various DALs 
Company.Configuration.Classes - Classes that are used to initialize BOs 
Company.Utilities - General Utilities

我知道需要创建一些简单的应用程序,所以我不想走 MVC 的道路,并决定在 Web Pages 2 中完成它们。很快我将不得不创建 1-2 个 MVC 应用程序来做一些更复杂的事情。

所以基本上我的问题是在这两种情况下使用我现有架构的推荐方法是什么?

假设我将以上所有内容都引用到我的网站项目中。然后呢?

我应该在哪里初始化我的业务层对象?在每一页?曾经在某个地方? (网页案例)

我想在 MVC 应用程序中我会在每个控制器构造函数中初始化我的业务层对象?

【问题讨论】:

  • 您能在Company.Business 程序集中发布一个方法示例吗?这将有助于回答您的问题。

标签: asp.net asp.net-mvc asp.net-webpages


【解决方案1】:

使用面向服务的分层(不要与 SOA 混淆),您的业务对象(存储库、映射器等)的组合将发生在服务中。这只不过是一个容器或您的业务对象,它将成为访问应用程序业务逻辑的入口点。 然后,您将从控制器后面或内部的页面代码中使用服务。将它与 DI 框架的依赖关系传递给它。这是一个可以在您的应用中使用的简单服务。

public class SampleRepository : ISampleRepository
{
   public void Insert(Sample item)
   {
       //do something, save the item ?        
   }
}


public class SampleService : ISampleService 
{
   private ISampleRepository _repository;

   public SampleService(SampleService repository)
   {
        _repository = repository;
   }

   public void DoSomething(Sample item)
   {
       //put some logic here, validation , logging, etc..
        //.....

       //Call the repositoey      
       _repository.Insert(item);
   }
}

【讨论】:

  • 是的,Web Pages 是 WebForms 的简化版本,在同一页面中混合了 html 和 razor。获得站点中引用的服务项目后,您就可以从页面中的 razor 中初始化服务实例。
  • 所以我必须在每个页面加载中创建一个新的业务对象?
  • 网页和WebForms 是不一样的。网页没有 Page_Load.asp.net/web-pages/overview/getting-started/…
  • 我不想使用我不喜欢他们的理念的网络表单,所以我想为简单的应用程序使用网页,为更大的应用程序使用 MVC。
【解决方案2】:

MVC 的最佳解决方案是使用像 Ninject 这样的依赖注入。如果您想快速设置,请使用 Ninject 的 MVC 3 nuget 包。安装后,您可以将业务层的实现注入到 MVC 控制器中。

https://www.nuget.org/packages/Ninject.MVC3/

【讨论】:

  • 目前我不想进入控制反转。我正在努力将我现有的库引入简单的 ASP.NET 应用程序(网页 2 和 MVC)中。我只想知道如何处理我的对象的“生命”以及在哪里......
猜你喜欢
  • 2013-03-23
  • 1970-01-01
  • 1970-01-01
  • 2013-05-24
  • 2020-06-03
  • 1970-01-01
  • 1970-01-01
  • 2012-10-05
  • 2017-01-10
相关资源
最近更新 更多