zoukankan      html  css  js  c++  java
  • 架构那些事~MVC系统架构中哪些应该进行抽象

    今天主要想说一个MVC+LinqTOSql的系统架构中哪些东西可以,也应该进行抽象.

    MVC的WEB层应该进行抽象的是:

    统一的Controller,将其它controller公有的属性和方法进行一个抽象,方便以后扩展和维护.

    代码可能是这样:

        /// <summary>
        /// Controller基类
        /// </summary>
        public abstract class ControllerBase : Controller
        {

            /// <summary>
            /// 通用信息(一般由service层返回的)
            /// </summary>
            protected Entity.VMessage VMessage { get; set; }

        }

    Service层应该进行抽象的是:

    统一的业务逻辑对象,所有Service类都继承自它,它可能有一个数据抽象方法LoadRepository<T>(),它主要负责所有最基础数据操作的调用,哪最简单的增,

    删,改,查,在业务逻辑层的具体Service类中在对具体操作进行组合与封装,完成一个完善的,最直接的对WEB层的数据操作接口.

    代码可能是这样:

      /// <summary>
        /// 业务层抽象基类
        /// </summary>
        public abstract class ServiceBase
        {
            /// <summary>
            /// 通用消息
            /// </summary>
            protected VMessage VMessage { get; set; }
            /// <summary>
            /// 数据层统一(基础)操作对象
            /// </summary>
            /// <typeparam name="TEntity"></typeparam>
            /// <returns></returns>
            protected IRepository<TEntity> LoadRepository<TEntity>() where TEntity : class,Entity.IEntity
            {
                return new Repository<TEntity>();
            }

    Data层对数据上下文操作的封装,将DBContext的基础操作进行重新封装,对DATA层其它子类只公开封装后的方法和属性,也是方便维护和扩展的.

    代码可能是这样:

      /// <summary>
        /// 数据操作基类
        /// </summary>
        public abstract class TestRepositoryBase
        {
            /// <summary>
            /// 数据库基类
            /// </summary>
            protected  LinqTESTDataContext db = ...
            /// <summary>
            /// 统一提交动作
            /// </summary>
            protected virtual void SubmitChanges()
            {
               ...
            }

  • 相关阅读:
    Python-OpenCV学习(三):图像的表示
    Python-OpenCV学习(一):OpenCV结构
    Numpy安装+导入出错的解决方法
    可信链测评
    《机器学习》第二周 多元线性回归
    《机器学习》第一周 一元回归法 | 模型和代价函数,梯度下降
    Ubutu16.04安装Transmisson
    Ubuntu “载入软件包列表失败” |“ 下载软件仓库信息失败”的解决方法
    《机器学习》第一周 Introduction | 监督学习与非监督学习的基本概念
    有道词典在Ubutu16.04上的安装
  • 原文地址:https://www.cnblogs.com/lori/p/2316713.html
Copyright © 2011-2022 走看看