zoukankan      html  css  js  c++  java
  • MVC+EF+架构设计

    介于这段时间的学习,MVC 和 Entity Framework 再加上自己对框架这部分的理解,弄了这么个Demo,希望大家能给点意见,一起讨论讨论。本章中没有多么高深的理论知识,只是个人对于架构的理解,加上MVC 和 EntityFramework,可以说是个整体的部分

    先贴下我的项目的分布图:

    整个项目主要采用三层架构,面向接口的编程方式。

    界面层:User Interface  

    CinDou.Web主要放我们的Web页面,

    CinDou.Route主要放置MVC中Controller,

    这里我采用把Controller分离出来。个人考虑的原因是:项目比较清晰,职责比较单一。

    逻辑层:Business Logic Layer  

    CinDou.BFactory 是逻辑工厂层,用于创建逻辑层的接口,便于界面层调用。

    CinDou.IBLL 逻辑接口层

    CinDou.BLL 逻辑业务层 主要负责逻辑层中的业务。

    CinDou.Model 逻辑业务类

    数据库层:Data Accss Layer

    CinDou.DFacoty:数据工厂层,用于创建数据库层的接口,从而让逻辑层调用

    CinDou.IDAL : 数据库接口层

    CinDou.DAL : 数据库持久层

    CinDou.EFramework: Entity Framework层

    工具层:ToolKit

    CinDou.Tools 常用的工具类方法层

    Component :控件层

    大概的一个分层是这个样子的。其实园子里有很多同学都说过这个话题,每个人对分层有各自的看法,不过看了很多文章,总感觉有点语曰不详,或者可能是我没有找到,所以个人自己写个,希望有兴趣的同学们一起讨论下。

    貌似MVC现在比较热闹,所以,在这个项目中我也采取了MVC,但是MVC的Controller总是包含在站点文件夹中,这个总让我很不爽,至于为什么不爽,个人总感觉Controller是个页面的逻辑部分,一般在以前我们总放在aspx.cs文件中,但是mvc没有这个aspx.cs文件,所以,索性我们把这部分单独出来建立了CinDou.Route这个项目

    为了使这个Controller能单独出来,我们必须还要做一些其它的工作:

    Step1:在CinDou.Tools中建立

    IRegisterRoutes.cs

    using System.Web.Routing;
     
    namespace CinDou.Tools
    {
        interface IRegisterRoutes
        {
            void RegisterRoutes(RouteCollection Routes);
        }
    }

    CinDouRoutes.cs

    using System.Web.Routing;
    using System.Web.Mvc;
     
    namespace CinDou.Tools
    {
        class CinDouRoutes : IRegisterRoutes
        {
            public void RegisterRoutes(RouteCollection routes)
            {
                routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
                routes.MapRoute(
                    "Default", // Route name
                    "{controller}/{action}/{id}", // URL with parameters
                    new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
                );
            }
        }
    }

    CinDouApplication.cs

    using System.Web;
    using System.Web.Mvc;
    using System.Web.Routing;
     
    namespace CinDou.Tools
    {
        public class CinDouApplication : HttpApplication
        {
            protected void Application_Start()
            {
                CinDouRoutes pdr = new CinDouRoutes();
                AreaRegistration.RegisterAllAreas();
                pdr.RegisterRoutes(RouteTable.Routes);
            }
        }
    }

    我们在CinDou.Tools中建立好这三个文件后,然后在CinDou.Web中引用这个Dll即可。 同时,我们修改Global.asax文件使其指向我们刚刚建立的CinDouApplication文件。右键点击Global.asax文件,点"查看标记”然后修改为:

    <%@ Application Inherits="CinDou.Tools.CinDouApplication" Language="C#" %>


    我们在CinDou.Route中创建创建的ProductController就能起作用了~

     
    分类: ASP.NETMVC
    标签: ASP.NET MVC
  • 相关阅读:
    02 .NET CORE 2.2 使用OCELOT -- 路由
    01 .NET CORE 2.2 使用OCELOT -- 简单使用
    Winows上简单配置使用kafka(.net使用)
    【C#】 获取计算机的硬件信息
    使用NPOI进行Excel操作
    Xamarin 开发Android应用简易教程(1)
    【日常笔记】字符串加密
    【日常笔记】生成验证码图片
    [Winfrom] 使用一个启动快捷方式,打开2个不同的窗体并且共用一个缓存空间
    windows获取物理mac地址
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/2543256.html
Copyright © 2011-2022 走看看