如何将Mvc Move应用程序转换为3层(项目:数据,业务和Web)

时间:2011-06-30 07:17:06

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

我在此示例应用中的http://www.asp.net/mvc创建了示例电影应用单层。但我想让3层应用程序分别是DataLayer,BusinessLayer和WebLayer。

有人有这个想法吗?

任何答案或建议都将不胜感激!

谢谢, Imdadhusen

1 个答案:

答案 0 :(得分:1)

您可以使用Visual Studio中的任何新MVC向导来创建MVC应用程序。这将成为UI层。您可以命名此项目,例如,Movie.UI。完成此操作后,您可以转到文件|添加| New Project ...并为您的数据访问层添加一个类库项目。您可以将此项目命名为Movie.Data。然后重复此步骤,并将另一个类库项目添加到您的解决方案中,该项目将用于您的业务逻辑层(即Movie.Business)。

在解决方案中拥有所有三个项目后,可以在它们之间添加必要的引用。通常,您的UI项目将引用您的业务层项目,您的业务层项目将依次引用您的数据访问项目。

<强>更新

您所指的这种沟通正是您通过引用项目所实现的目标。将项目A中的引用添加到项目B时,可以为项目A建立一种从项目B访问公共类型的方法。

我已经设置了最简单的可能示例,以展示如何在项目之间进行通信:

在Movie.Data项目中,添加MovieRepository类:

<强> MovieRepository.cs

namespace Movie.Data
{
    public class MovieRepository
    {
        public string[] GetMovies()
        {
            return new[] 
            { 
                "Gone with the Wind", 
                "Back to the Future", 
                "The Godfather", 
            };
        }
    }
}

然后在Movie.UI项目中,首先需要添加对Movie.Data项目的引用:

  1. 右键点击参考文献
  2. 点击添加参考...
  3. 在“项目引用”下,选择“Movie.Data”
  4. 最后,你的Movie.UI项目(为简单起见,我把它变成了一个控制台应用程序):

    <强> Program.cs的

    using System;
    using Movie.Data;
    
    namespace Movie.UI
    {
        class Program
        {
            private static MovieRepository _repo = new MovieRepository();
    
            static void Main(string[] args)
            {
                foreach (var movie in _repo.GetMovies())
                {
                    Console.WriteLine(movie);
                }
            }
        }
    }
    

    希望这有帮助。