当前位置:网站首页 >> 体育

冷枫对三层结构的深入理解

时间:2019-06-20 01:44:57 来源:互联网 阅读:0次

  “三层结构”是什么?

  “三层结构”一词中的“三层”是指:“表现层”、“中间业务层”、“数据访问层”。其中:

  n 表 现 层:位于外层(上层),离用户近。用于显示数据和接收用户输入的数据,为用户提供一种交互式操作的界面。

  n 中间业务层:负责处理用户输入的信息,或者是将这些信息发送给数据访问层进行保存,或者是调用数据访问层中的函数再次读出这些数据。中间业务层也可以包括一些对“商业逻辑”描述代码在里面。

  n 数据访问层:仅实现对数据的保存和读取操作。数据访问,可以访问数据库系统、二进制文件、文本文档或是XML文档。

  对依赖方向的研究将是本文的重点,数值返回方向基本上是没有变化的。

  在一个

  如果只以分层的设计角度看,Duwamish7要比PetShop3.0复杂一些!而如果较为全面的比较二者,PetShop3.0则显得比较复杂。但我们先不讨论这些,对PetShop3.0和Duwamish7的研究,并不是本文的重点。现在的问题就是:既然“三层结构”已经被分派到各自的项目中,那么剩下来的项目是做什么的呢?例如PetShop3.0中的“Model”、“IDAL”、“DALFactory”这三个项目,再例如Duwamish7中的“Common”项目,还有就是在彬月论坛中的“Classes”、“DbTask”、这两个项目。它们究竟是做什么用的呢?

  对“三层结构”的深入理解——从一家小餐馆说起

  一个“三层结构”的Web应用程序,就好象是一家小餐馆。

  n 表 现 层,所有的.aspx页面就好像是这家餐馆的菜谱。

  n 中间业务层,就像是餐馆的服务生。

  n 数据访问层,就像是餐馆的大厨师傅。

  n 而我们这些站浏览者,就是去餐馆吃饭的吃客了……

  我们去一家餐馆吃饭,首先得看他们的菜谱,然后唤来服务生,告诉他我们想要吃的菜肴。服务生记下来以后,便会马上去通知大厨师傅要烹制这些菜。大厨师傅收到通知后,马上起火烧菜。过了不久,服务生便把一道一道香喷喷的、热气腾腾的美味端到我们的桌位上——

  而我们访问一个基于技术的站的时候,首先打开的是一个aspx页面。这个aspx页面的后台程序会去调用中间业务层的相应函数来获取结果。中间业务层又会去调用数据访问层的相应函数来获取结果。

  为什么需要“三层结构”?——初探,就从数据库的升迁开始

  一个站点中,访问数据库的程序代码散落在各个页面中,就像夜空中的星星一样繁多。这样一动百动的维护,难度可想而知。难以忍受的是,对这种维护工作的投入,是没有任何价值的……

  有一个比较好的解决办法,那就是将访问数据库的代码全部都放在一个程序文件里。这样,数据库平台一旦发生变化,那么只需要集中修改这一个文件就可以了。我想有点开发经验的人,都会想到这一步的。这种“以不变应万变”的做法其实是简单的“门面模式”的应用。如果把一个站比喻成一家大饭店,那么“门面模式”中的“门面”,就像是饭店的服务生,而一个站的浏览者,就像是一个来宾。来宾只需要发送命令给服务生,然后服务生就会按照命令办事。至于服务生经历了多少辛苦才把事情办成?那个并不是来宾感兴趣的事情,来宾们只要求服务生尽快把自己交待事情办完。我们就把程序就看成是一个来宾发出的命令,而把新加入的程序看成是一个饭店服务生,那么来宾发出的命令就是:

  “给我读出留言板数据库中的数据,填充到DataSet数据集中并显示出来!”

  而服务生接到命令后,就会依照执行。而程序,让服务生做的是:

  “把我的留言内容写入到数据库中!”

  而服务生接到命令后,就会依照执行。这就是TraceLWord2!可以在CodePackage/TraceLWord2目录中找到——

  把所有的有关数据访问的代码都放到文件里,程序文件如下:

  #001 using System;

  #002 using ta;

  #003 using eDb; // 需要操作 Access 数据库

  #004 using b;

  #005

  #006 namespace TraceLWord2

  #007 {

  #008 /// summary

  #009 /// LWordTask 数据库任务类

  #010 /// /summary

  #011 public class LWordTask

  #012 {

  #013 // 数据库连接字符串

  #014 private const string DB_CONN=@"PROVIDER=EDB.4.0;

  DATA Source=C:\DbFs\b";

  #015

  #016 /// summary

  #017 /// 读取数据库表 LWord,并填充 DataSet 数据集

  #018 /// /summary

  #019 /// param name="ds"填充目标数据集/param

  #020 /// param name="tableName"表名称/param

  #021 /// returns记录行数/returns

  #022 public int ListLWord(DataSet ds, string tableName)

  #023 {

  #024 string cmdText="SELECT * FROM [LWord] ORDER BY [LWordID] DESC";

  #025

  #026 OleDbConnection dbConn=new OleDbConnection(DB_CONN);

  #027 OleDbDataAdapter dbAdp=new OleDbDataAdapter(cmdText, dbConn);

  #028

  #029 int count=ll(ds, tableName);

  #030

  #031 return count;

  #032 }

  #033

  #034 /// summary

  #035 /// 发送留言信息到数据库

  #036 /// /summary

  #037 /// param name="textContent"留言内容/param

  #038 public void PostLWord(string textContent)

  #039 {

  #040 // 留言内容不能为空

  #041 if(textContent==null || textContent=="")

  #042 throw new Exception("留言内容为空");

  #043

  #044 string cmdText="INSERT INTO [LWord]([TextContent]) VALUES(@TextContent)";

  #045

  #046 OleDbConnection dbConn=new OleDbConnection(DB_CONN);

  #047 OleDbCommand dbCmd=new OleDbCommand(cmdText, dbConn);

  #048

  #049 // 设置留言内容

  #050 d(new OleDbParameter("@TextContent", ngVarWChar));

  #051 rameters["@TextContent"].Value=textContent;

  #052

  #053 try

  #054 {

  #055 en();

  #056 ecuteNonQuery();

  #057 }

  #058 catch

  #059 {

  #060 throw;

  #061 }

  #062 finally

  #063 {

  #064 ose();

  #065 }

  #066 }

  #067 }

  #068 }

汉森制药四磨汤
消化不良和积食区别
厌食症的饮食治疗

相关文章

一周热门

热点排行

热门精选

友情链接: 阿拉尔有哪些骨肿瘤科医院 上饶有哪些三丙医院 延安有哪些医院 抚州有哪些医院 延边有哪些医院 定西有哪些医院 拉萨有哪些医院 克拉玛依有哪些医院 文昌有哪些医院 三级医院 上海综合医院哪家好 神农架中医医院哪家好 眉山中医医院哪家好 铜陵中医医院哪家好 包头综合医院哪家好 上海高压氧科医院哪家好 上海小儿外科医院哪家好 上海小儿消化科医院哪家好 上海小儿耳鼻喉医院哪家好 上海麻醉科医院哪家好 广东地方病科医院哪家好 广东性病科医院哪家好 广东室缺医院哪家好 山东心血管医院哪家好 山东产前诊断科医院哪家好 山东感染内科医院哪家好 山东老年病科医院哪家好 山东新生儿科医院哪家好 江苏免疫科医院哪家好 江苏小儿心内科医院哪家好 江苏牙周科医院哪家好 四川老年病科医院哪家好 四川体检科医院哪家好 四川复杂先心病医院哪家好 河北过敏反应科医院哪家好 河北小儿皮肤科医院哪家好 台州成瘾医学科医院哪家好 台州心外科医院哪家好 十堰手外科医院哪家好 襄阳干部诊疗科医院哪家好 荆门整形科医院哪家好 荆门超声科医院哪家好 荆门医学影像科医院哪家好 孝感小儿肾内科医院哪家好 孝感小儿整形科医院哪家好 黄冈口腔科医院哪家好 黄冈碎石中心医院哪家好 神农架中医男科医院哪家好 濮阳遗传咨询科医院哪家好 濮阳内分泌科医院哪家好 濮阳种植科医院哪家好 濮阳中医五官科医院哪家好 许昌烧伤科医院哪家好 许昌正畸科医院哪家好 许昌牙周科医院哪家好 三门峡小儿内科医院哪家好 承德急诊科医院哪家好 承德屈光医院哪家好 承德综合医院哪家好 沧州中医老年病科医院哪家好 沧州中医皮肤科医院哪家好 沧州中医消化科医院哪家好 沧州中医免疫内科医院哪家好 娄底神经外科医院哪家好 娄底泌尿外科医院哪家好 娄底功能神经外科医院哪家好 娄底牙周科医院哪家好 娄底眼外伤医院哪家好 娄底针灸科医院哪家好 娄底民族医学科医院哪家好 合肥小儿眼科医院哪家好 阜阳有哪些新生儿科医院 阜阳有哪些小儿精神科医院 芜湖眼底医院哪家好 芜湖角膜科医院哪家好 芜湖眼整形医院哪家好 阜阳有哪些心理咨询科医院 芜湖核医学科医院哪家好 宿州有哪些心血管内科医院 蚌埠骨肿瘤科医院哪家好 蚌埠小儿整形科医院哪家好 宿州有哪些中医儿科医院 蚌埠放射科医院哪家好 蚌埠结核病科医院哪家好 蚌埠肝炎医院哪家好 六安有哪些遗传咨询科医院 阿拉善盟有哪些麻醉科医院 西安有哪些呼吸科医院 阳泉器官移植医院哪家好 阳泉牙周科医院哪家好 铜川有哪些康复医学科医院 铜川有哪些小儿眼科医院 公主岭青光眼医院哪家好 公主岭中医内分泌医院哪家好 公主岭预防保健科医院哪家好 辽源营养科医院哪家好 辽源骨科医院哪家好 柳州实验中心医院哪家好 柳州动脉导管未闭医院哪家好 桂林泌尿外科医院哪家好
媒体合作:

Copyright (c) 2011 八零CMS 版权所有 备案号:京ICP0000001号

网站地图