日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

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

發布時間:2023/12/15 c/c++ 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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,防止循環引用)上下文工廠

?

以上專業寫法

CallContextHttpContext.Items內部對象(線程內唯一)

?

由于所有的DAO都實現了CRUD,so,封裝一個基類BaseDao.cs,并使用上下文工廠類創建對象

?

重點是DbSet<T>的使用

Dao層子類繼承超類,并實現IUserInfoDao接口

?

?

DAOBLL直接需要通信,so,新建一個會話層(工廠),目的是解耦合

定義一個利用反射的抽象工廠DAOAbsFactory.cs反射

在Bll層中調用工廠類,以接口類型返回dao層的實例,降低Bll層和Dao層耦合度

抽象工廠類----數據會話層

抽象工廠(反射)??業務層與數據訪問層解耦

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

?

抽象工廠引用程序集

?

?

?

創建會話類實現Idao中的會話接口

?

?

有了會話層之后,新建一個會話工廠(內部涉及到EF操作,線程內唯一)

DBSessionFactory.cs

?

?

03IBLL

引用

?

封裝IBLL層接口超類

?

子接口繼承

?

?

04BLL

引用

?

?

封裝BLL公共超類

?

?

子類

?

?

05WebApp

引用

?

MVC(測試略)

?

轉載于:https://www.cnblogs.com/zhhsdn/p/4794865.html

總結

以上是生活随笔為你收集整理的MVC+EF三层+抽象工厂项目搭建的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。