如何在ASP.NET MVC和ASP.NET Web Pages 2项目中使用现有的3层逻辑?

时间:2013-03-19 11:42:01

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

我有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页面2中完成它们。很快我将不得不创建1-2个MVC应用程序来做一些更复杂的事情。

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

让我说我将上述所有内容都引用到我的网站项目中。什么?

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

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

2 个答案:

答案 0 :(得分: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);
   }
}

答案 1 :(得分:0)

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

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