框架用到的技术: EF、UnitOfWork+Repository、Ninject、log4net、WCF、MVC、T4、windows服务、AOP
前端技术:Bootstrap、layer、jQuery、H5+CSS3

框架设计原则(目标):低耦合、高性能、稳定可靠。

主要设计点:
1、EF作为数据底层,采用DbFirst方式,无实体模型edmx,采用T4+ELinq生成实体类;
2、通过Repository封装EF单个实体的持久化操作,并结合UnitOfWork实现数据上下文统一管理;
3、保证系统内UnitOfWork以及对应的DBContext唯一性(单例);
4、业务逻辑层调用IUnitOfWork接口提供的方法(抽象、多态);
5、各层之间(数据底层、Repository+UnitOfWork、业务逻辑层、UI层、服务层)采用Ninject实现IOC;
6、采用WCF作为对外服务层,并实现windows服务方式寄宿;
7、展示层采用MVC + Bootstrap + layer + jQuery + H5实现;
8、自定义异常处理;

架构结构如图所示:

WedeNet2018.Infrastructure-基础设施层
1、包含用来生成EF entitis、WCF entitis、DB组件类的T4工具;
2、包含引用外部的程序集;
3、包含生成的entitis和UnitOfWork+Repository组件类;

WedeNet2018.Common-公用类层
1、包含系统公用的各种帮助类;
2、包含自定义异常类;
3、包含一些自定义属性类和扩展类;

WedeNet2018.BussinessLogic-业务逻辑层
1、引用基础设施层,实现各业务模块UnitOfWork操作;
2、实现与上下层之间的关系解耦;

WedeNet2018.Web-UI层
1、MVC4、Bootstrap、layer、jQuery、H5等实现展示层;
2、与业务逻辑层解耦;
3、实现log4net不同业务模块的配置;
4、配置Ninject;
5、实现UI层js基础类库和帮助类;

WedeNet2018.WedeWcfServices-WCF服务层
1、包含要对外公布的服务契约及实现类;
2、与业务逻辑层解耦;

WedeNet2018.ServiceHosting-WCF服务寄宿层
1、实现批量寄宿WCF服务;
2、实现服务的安装和卸载;
3、实现log4net不同业务模块的配置;

框架测试点:
1、性能测试(处理一次请求所用的时间);
2、大数据环境下,测试查询性能;
3、高并发测试;

设计参考:
http://www.cnblogs.com/guomingfeng/archive/2013/05/28/mvc-ef-repository.html#autoid-1-0-0
http://www.cnblogs.com/kevin2013/p/5239195.html
https://github.com/i66soft/osharp-ns20
https://blog.csdn.net/a892886597/article/details/47708781
https://www.cnblogs.com/Ray-liang/p/3809822.html
https://martinfowler.com/eaaCatalog/unitOfWork.html

搭建自己的框架WedeNet(一)的更多相关文章

  1. 搭建自己的框架WedeNet(五)

    WedeNet2018.WedeWcfServices-WCF服务层:结构如下: 就是定义了服务契约接口和服务类,以OrderServices为例,如下: using System; using Sy ...

  2. 搭建自己的框架WedeNet(四)

    WedeNet2018.Web-UI层:结构如下: 首先,在Controller中定义BaseController,以便加入统一处理逻辑,如下: using log4net; using System ...

  3. 搭建自己的框架WedeNet(三)

    WedeNet2018.BussinessLogic-业务逻辑层:结构如下: 基类: using System; using System.Collections.Generic; using Sys ...

  4. 搭建自己的框架WedeNet(二)

    WedeNet2018.Infrastructure-基础设施层:结构如下: Tools结构如下: 考虑到系统可能会有多个数据上下文(暂时以两个为例),所以根据需要定义两个T4模板用来生成对应的ent ...

  5. 从零开始学 Java - 搭建 Spring MVC 框架

    没有什么比一个时代的没落更令人伤感的了 整个社会和人都在追求创新.进步.成长,没有人愿意停步不前,一个个老事物慢慢从我们生活中消失掉真的令人那么伤感么?或者说被取代?我想有些是的,但有些东西其实并不是 ...

  6. Xvfb+YSlow+ShowSlow搭建前端性能测试框架 - 前端技术 | TaoBaoUED

    Xvfb+YSlow+ShowSlow搭建前端性能测试框架 - 前端技术 | TaoBaoUED Xvfb+YSlow+ShowSlow搭建前端性能测试框架 作者:黑三 | 时间:2010-07-07 ...

  7. Windows环境搭建Web自动化测试框架Watir

    Windows环境搭建Web自动化测试框架Watir 一.前言     Web自动化测试一直是一个比较迫切的问题,对于现在web开发的敏捷开发,却没有相对应的敏捷测试,故开此主题,一边研究,一边将We ...

  8. 搭建App主流框架_纯代码搭建(OC)

    转载自:http://my.oschina.net/hejunbinlan/blog/529778?fromerr=EmSuX7PR 搭建主流框架界面 源码地址在文章末尾 达成效果 效果图 注:本文部 ...

  9. Unity 游戏框架搭建 (六) 关于框架的一些好文和一些思考

      在进行项目架构阶段,游戏框架可以解决一部分问题.剩下的架构问题还需要根据不同的项目解决.总之游戏框架是游戏架构的一部分. 关于锤子和钉子:   最近又拿起了<代码大全>和<暗时间 ...

随机推荐

  1. postman设置环境变量,实现一套接口根据选择的环境去请求不同的url

    一个系统,有本地,开发,测试,生产等不同的环境,如果写不同的url配置多套会比较麻烦,可以设置不同的环境实现不同的url之间的切换.配置之后如下: 第一步: 第二步: 添加环境变量 ps::不同的环境 ...

  2. Oracle Database的基本概念

    一个 Oracle 服务器:是一个关系数据库管理系统(RDBMS),它提供全面的, 近乎完整的信息管理由Oracle 实例和Oracle 数据库组成Oracle 数据库 和 Oracle 实例Orac ...

  3. document.querySelectorAll遍历

    document.querySelectorAll兼容性良好,在之前的项目中就其遍历方式出了错误,先做个小结: 1.for循环 传统遍历方法 for(var i= 0; i< document. ...

  4. piggy back是什么意思?

    遇到这么一句话. // Connect the Socket.IO framework up to the web server to piggy back on its connection // ...

  5. PHP yii2.0框架利用mpdf导出pdf

    安装: composer require mpdf/mpdf 使用: use Mpdf\Mpdf;//(php7以前) //获取页面内容 $res = $this->controller-> ...

  6. python 连接 hive

    1.python连接hive,其实是连接hiveserver,连接的包的impyla impyla安装: error: cc1plus 没有文件或目录 需要安装gcc 和g++,并且版本保持一致 er ...

  7. panic 捕获及 throw 崩溃

    一,go 语言 panic 报错捕获  使用 go 语言的同学在真实项目中应该经常出现空指针使用等 panic 报错,这类报错与 C++ 中的 try-catch 模块不同,go 语言会一直将当前 p ...

  8. Delphi7-TClientDataSet: 查找

    TClientDataSet[12]: 查找 方法有:1.Locate: 根据字段列表和对应的字段值查找并定位, 找到返回 True.2.Lookup: 根据字段列表和对应的字段值查找, 返回需要的字 ...

  9. Python之滑动窗口

    需求 对于一个数组array = ["n","v","l","f",...,"y","c& ...

  10. Y2K Accounting Bug POJ2586

    Description Accounting for Computer Machinists (ACM) has sufferred from the Y2K bug and lost some vi ...