MVC+EF三层+抽象工厂项目搭建

 

注意:项目经过两次搭建,所以截图中顶级命名空间有ZHH和ZHH2区别,但是架构的内容是一样的,可以将ZHH和ZHH2视为同一命名空间

一:权限管理

二:搜索

|-Lucene.net(速度快)+盘古分词(搜索词拆分)---比模糊查询更模糊

|-模糊查询like效率慢,全盘扫描,不能拆分

盘古分词,分出来的词,用文件存在磁盘内 ,文件并发 ----lock锁->新的问题,效率慢,用户需要等待

生产者消费者模式---优化文件并发

分词放在队列中(内存集合中),Redis分布式队列

*sesion只能在一台服务器存储信息

-进程外数据库中存session,性能差,没人用

分布式存储Session数据

1-Memcached 内存操作,速度快.

2-分布式文件(图片)存储

3.反向代理服务器:Nginx

4.WebService  wcf

|-热词统计

三:工作流 WF

项目框架:三层+抽象工厂+spring.Net

01IDao层

引用Model层,接口规范,查询返回IQueryable<T>,延迟加载,调用才会去生成查询,优化性能

Expression--Lambda树

查询:

IQueryable<UserInfo> LoadEntities(Expression<Func<UserInfo,bool>>where);

分页:

IQueryable<UserInfo> LoadPageEntities<Tkey>(int pageIndex, int pageSIze, out int totalCount, Expression<Func<UserInfo, bool>> where, Expression<Func<UserInfo, Tkey>> orderBy);

增:

UserInfo AddEntity(UserInfo entity);

删:

bool DeleteEntity(UserInfo entity);

改:

bool UpdateEntity(UserInfo entity);

由于每一个接口,都需要定义CURD,那么造成重复,so,封装Base接口

继承基接口

对外提供会话接口IDBSession

02Dao层

引用IDao层和Model层,Dao实现IDao中的接口规范,因为涉及具体数据库操作,so,引用EF组件

Dao层引用EntityFramework组件

引发问题:再一次请求内不能多次创建上下文实例

单例模式:控制对象在整个应用程序周期内只有一份,

单例虽然可以解决,但是新的问题

,当前应用程序所有的用户都用同一个对象,并且追加数据操作到上下文对象中,会导致内存占用越来越大,难以释放

每次请求创建一个EF上下文实例,(线程内唯一)

当请求结束释放

HttpContext 是一个线程内唯一对象

在Dao层定义DBContextFactory.cs(定义在Dao层,防止循环引用)上下文工厂

以上专业写法

CallContext是HttpContext.Items内部对象(线程内唯一)

由于所有的DAO都实现了CRUD,so,封装一个基类BaseDao.cs,并使用上下文工厂类创建对象

重点是DbSet<T>的使用

Dao层子类继承超类,并实现IUserInfoDao接口

DAO和BLL直接需要通信,so,新建一个会话层(工厂),目的是解耦合

定义一个利用反射的抽象工厂DAOAbsFactory.cs反射

在Bll层中调用工厂类,以接口类型返回dao层的实例,降低Bll层和Dao层耦合度

抽象工厂类----数据会话层

抽象工厂(反射)  业务层与数据访问层解耦

-只需要改配置文件,就可以切换dao层

抽象工厂引用程序集

创建会话类实现Idao中的会话接口

有了会话层之后,新建一个会话工厂(内部涉及到EF操作,线程内唯一)

DBSessionFactory.cs

03IBLL

引用

封装IBLL层接口超类

子接口继承

04BLL

引用

封装BLL公共超类

子类

05WebApp

引用

MVC(测试略)

MVC+EF三层+抽象工厂的更多相关文章

  1. 转载——Asp.Net MVC+EF+三层架构的完整搭建过程

    转载http://www.cnblogs.com/zzqvq/p/5816091.html Asp.Net MVC+EF+三层架构的完整搭建过程 架构图: 使用的数据库: 一张公司的员工信息表,测试数 ...

  2. Asp.Net MVC+EF+三层架构的完整搭建过程

    架构图: 使用的数据库: 一张公司的员工信息表,测试数据 解决方案项目设计: 1.新建一个空白解决方案名称为Company 2.在该解决方案下,新建解决方案文件夹(UI,BLL,DAL,Model) ...

  3. Asp.Net MVC+EF+三层架构

    架构图: 使用的数据库: 一张公司的员工信息表,测试数据 解决方案项目设计: 1.新建一个空白解决方案名称为Company 2.在该解决方案下,新建解决方案文件夹(UI,BLL,DAL,Model) ...

  4. MVC ---- EF三层代码

    1.DAL层 using Night.Models; using System; using System.Collections.Generic; using System.Data.Entity. ...

  5. MVC与三层架构的区别

    我们平时总是将三层架构与MVC混为一谈,殊不知它俩并不是一个概念.下面我来为大家揭晓我所知道的一些真相. 首先,它俩根本不是一个概念. 三层架构是一个分层式的软件体系架构设计,它可适用于任何一个项目. ...

  6. MVC与三层架构

    我们平时总是将三层架构与MVC混为一谈,殊不知它俩并不是一个概念.下面我来为大家揭晓我所知道的一些真相. 首先,它俩根本不是一个概念. 三层架构是一个分层式的软件体系架构设计,它可适用于任何一个项目. ...

  7. 从MVC和三层架构说到SSH整合开发

    相信很多人都认同JavaWeb开发是遵从MVC开发模式的,遵从三层架构进行开发的,是的,大家都这么认同.但是相信大家都会有过这样一个疑问,if(MVC三层模式==三层架构思想)out.println( ...

  8. MVC+Ef项目(3) 抽象数据库访问层的统一入口;EF上下文线程内唯一

    抽象一个数据库访问层的统一入口(类似于EF的上下文,拿到上下文,就可以拿到所有的表).实际这个入口就是一个类,类里面有所有的仓储对应的属性.这样,只要拿到这个类的实例,就可以点出所有的仓储,我们在 R ...

  9. C# 框架是什么?MVC是什么 ?工厂模式是什么?设计模式是什么?三层架构是什

    C# 框架是什么?MVC是什么 ?工厂模式是什么?设计模式是什么?三层架构是什么?如果要学我该从何学起??? C# 框架看这里http://download.csdn.net/source/25784 ...

随机推荐

  1. Codeforces 1188C DP 鸽巢原理

    题意:定义一个序列的beauty值为序列中元素之差绝对值的最小值,现在给你一个数组,问所有长度为k的子序列的beauty值的和是多少? 思路:(官方题解)我们先解决这个问题的子问题:我们可以求出bea ...

  2. Qt pro使用sql之类的需要添加的模块

    举个栗子,当要使用QSqlQuery 的时候需要在pro中添加Qt +=sql 然后在.h里面#include<QSqlQuery>即可使用sql. 同理要使用media或者net的时候只 ...

  3. 项目部署错误 HTTP Error 500.19 - Internal Server Error

    HTTP Error 500.19 - Internal Server Error配置错误: 不能在此路径中使用此配置节.如果在父级别上锁定了该节,便会出现这种情况.锁定是默认设置的 (overrid ...

  4. <自动化测试>之<使用unittest Python测试框架进行参数化测试>

    最近在看视频时,虫师简单提到了简化自动化测试脚本用例中的代码量,而python中本身的参数化方法用来测试很糟糕,他在实际操作中使用了parameterized参数化... 有兴趣就查了下使用的方法,来 ...

  5. centos6 sersync2使用

    接收端rsyncd搭建 http://www.cnblogs.com/hanxiaohui/p/8675409.html 推送端sersync2使用 安装 源码包D:\share\src\sersyn ...

  6. TDengine陶建辉 自带聚光灯&BGM的半百少年

    TDengine,这款定位为“专为物联网而生的大数据平台”,引爆了2019年夏天的软件圈. 2019年7月12日,涛思数据宣布将TDengine的内核(存储和计算引擎)以及社区版100%开源. 201 ...

  7. C++ placement new与内存池

    参考:https://blog.csdn.net/Kiritow/article/details/51314612 有些时候我们需要能够长时间运行的程序(例如监听程序,服务器程序)对于这些7*24运行 ...

  8. PHP导出大量数据到csv表

    对于做后台开发的码农来说,从excel导入数据到数据库亦或者是从数据库导出数据到excel都是很常见的操作.由于经常遇到这样的场景,也因为从数据库导出数据到表格所遇到的坑有很多,所以需要另辟途径来进行 ...

  9. PHP的Session机制解析 1

    一.php的默认session机制 php默认用磁盘文件来实现session在php.ini中session.save_handler = files定义session机制session.save_p ...

  10. 漫谈C语言结构体

    相信大家对于结构体都不陌生.在此,分享出本人对C语言结构体的学习心得.如果你发现这个总结中有你以前所未掌握的,那本文也算是有点价值了.当然,水平有限,若发现不足之处恳请指出.代码文件test.c我放在 ...