博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
(实践篇)剖析最近项目使用的一个框架
阅读量:6984 次
发布时间:2019-06-27

本文共 3622 字,大约阅读时间需要 12 分钟。

本篇用到的纯理论知识在此,大抵是引用一些网友的博文:

,理论过后,来看实战

前段时间完成了一个项目,照例过段时间应该总结一下,这里补上,

主要是关于系统架构的总结,这里记下作为以后参考:

1 先来看下系统的总体架构,如图

--------------------------------------

2 各层简要介绍:

bll:逻辑层

commonUtil 通用方法层(如处理字符串,excel导入到处,序列化等方法)

dal 数据层 

dbUtil层(主要是封装了访问数据库的一些操作)

dll  包含项目中引用的各种dll

entity 实体层,对应数据库中的每一张表

iterface 接口层,又分为ibll逻辑层接口,和idal数据层接口

web 展示层

-----------------------------------------

3 各层之间的引用关系:

web层,引用所有层

interface层,引用commonUtil,dbUtil,entity层

bll层,引用commonUtil,dbUtil,entity,dal,interface层

dal层,引用commonUtil,dbUtil,entity,interface层

------------------------------------------

4 以一个小例子来看各层展开之后,如图:

页面调用如下:

5 看完这个调用,估计你已经想到了,这里使用的是IOC依赖注入的方式来实现调用,

那么它又是怎么实现的呢,如下:

(1)首先在web.config里新增配置节:

 

Unity.config是一个标准的xml文件,内容如下图:

(2)commonUitl里新增容器处理类:

 
public class UnityContainerAccessor    {         private static IUnityContainer logicUnityContainer = null;        ///         /// 获取逻辑层IoC容器        ///         public static IUnityContainer  LogicContainer        {            get            {                if (logicUnityContainer == null)                {                     IUnityContainer container = new UnityContainer();                    UnityConfigurationSection section = (UnityConfigurationSection)ConfigurationManager.GetSection("unity");                    section.Containers["LogicContainer"].Configure(container);                    logicUnityContainer = container;                }                return logicUnityContainer;            }        }          private static IUnityContainer daoUnityContainer = null;        ///         /// 获取DAO层IoC容器        ///         public static IUnityContainer DaoContainer        {            get            {                if (daoUnityContainer == null)                {                     IUnityContainer container = new UnityContainer();                    UnityConfigurationSection section = (UnityConfigurationSection)ConfigurationManager.GetSection("unity");                    section.Containers["DaoContainer"].Configure(container);                    daoUnityContainer = container;                }                return daoUnityContainer;            }        }      }

 

(3)bll层里实现如下,实例如下:
public class ExampleMethodBLL:MyStructOne.INTERFACE.BLL.IExampleBLL    {        private MyStructOne.INTERFACE.DAL.IExampleDAL  _DAL = null;        private Database _dataBase;          public Database dataBase        {            get { return _dataBase; }            set            {                _dataBase = value;                _DAL.dataBase = value;            }        }          public ExampleMethodBLL()        {            _DAL = UnityContainerAccessor.DaoContainer.Resolve
(); dataBase = DatabaseFactory.CreateDatabase(System.Configuration.ConfigurationManager.ConnectionStrings["ExampleConnectionKey"].ConnectionString); } public DataTable ExampleMethod() { return _DAL.ExampleMethod(); } }

 

 
 (4)dal层里则是具体的数据操作和实现:
 
class ExampleMethodDAL:MyStructOne.INTERFACE.DAL.IExampleDAL    {       private Database _dataBase;          public Database dataBase        {            get { return _dataBase; }            set            {                _dataBase = value;                _dataBase = value;            }        }          public ExampleMethodDAL()        {                    }          public DataTable ExampleMethod()        {            string strSql = @"select top(10) * from UM_MENU";             return dataBase.ExecuteDataTable(strSql);        }     }

 

以上是抽取项目中的架构做的一个示例,留作参考之用!

转载于:https://www.cnblogs.com/jangwewe/archive/2013/04/01/2993871.html

你可能感兴趣的文章
今年光伏市场规模可达30GW 分布式有望占据三分江山
查看>>
因新漏洞问题 Firefox 49发布时间将延期一周
查看>>
WLAN产品形态之分层架构
查看>>
Chrome 隐藏 SSL 证书信息 禁止禁用 DRM
查看>>
AngularJS 的自定义指令
查看>>
《CCNA ICND2(200-101)认证考试指南(第4版)》——第1章定义生成树协议
查看>>
什么样的 RPC 才是好用的 RPC
查看>>
《Adobe Premiere Pro CC经典教程》——14.6 特殊颜色效果
查看>>
Debian 项目不再提供 CD 格式的 ISO 镜像
查看>>
《设计团队协作权威指南》—第1章1.3节甘为螺丝钉
查看>>
android 屏幕保持唤醒 不锁屏 android.permission.WAKE_LOCK
查看>>
《Unity 3D 游戏开发技术详解与典型案例》——1.3节第一个Unity 3D程序
查看>>
Airbnb数据科学团队进化论:如何由内而外实现数据驱动
查看>>
如何用机器学习预测超售,避免美联航“暴力赶客”悲剧
查看>>
css细节(实习第1天)
查看>>
腾讯Android自动化测试实战3.1.4 Robotium的控件获取、操作及断言
查看>>
《C语言点滴》一1.5 内功修炼
查看>>
linux 怎么完全卸载mysql数据库
查看>>
Dart的HTTP请求和响应(1)
查看>>
寻找最大的K个数,Top K问题的堆实现
查看>>