如题啊,三层架构是指什么? 最近模糊了汗汗。。
解决方案 »
- Gridview外观样式的问题,求解答。。
- 请问ckeditor这个在线编辑控件,保存的按钮怎么用?
- 使用SmtpClient发送邮件,调试正确,部署错误,求助中
- Page对象和Form对象的区别与联系?
- 把英文格式(如:18 May 2006 12:09:51)转化为2006-06-18 00:00:00,怎样转化.
- 请教,页面标题动态绑定<title>????</title>
- 太急了:如何将一目录下的子目录和文件名写入指定格式的XML文件中......
- 一个登录验证窗口的问题。
- 请问如何在用户控件中触发主页面内的事件或方法
- http://europe.webmatrixhosting.net/已经停止免费.Net空间服务了,请问还有哪里有.Net免费空间??
- 论坛消息功能的表结构
- 有关js传值问题?
俺是来看高手的
1个项目是表示层(就是直接呈现给用户的,asp.net就是指的网站)
2个项目是逻辑层(项目的逻辑处理)
3个项目是数据层(数据库想关访问) 项目1调用项目2,项目2调用项目3 举个例. 如对用户等录功能来说. 你把根据用户名,密码查询用户信息的数据库操作放到项目3中(就是数据库层中出来)
项目2个调用项目3中所返回的用户信息,对其进行逻辑处理.比如.把返回的数据处理成
User类然后反回.
项目1(表示层)中 调用项目2(逻辑层)返回的User类 再对页面进行出来.
这样的好处是.最明显的是,代码重用,维护简单.移植性强. 如其他地方还要用到用户信息,可以直接调用数据层中的方法. 又如。系统以前是用的sqlServer,现在要改成Oracle那么.数据层的代码就有可能需要修改.
但对于逻辑层,表示层来说.不需要改动。
等等...
业务逻辑层BLL
页面设计层
阁下的表示层指的是.aspx文件还是.aspx.cs文件?
我理解:表示层一般在.aspx文件进行实现;逻辑层和数据层可以在.aspx文件或.aspx.cs文件加以实现,是可以啊
业务逻辑层,一些后台代码,脚本等
表示层,UI,user interface,界面,table,div+css等
业务逻辑层
数据层最简单的 说白了.写3个项目,一个项目调另一个项目.
=========================
这种理解是错误的,不是一个项目或一个(dll)就是一层
2、业务逻辑层(BLL):针对具体问题的操作,也可以说是对数据层的操作,对数据业务逻辑处理。
3、数据访问层(DAL):该层所做事务直接操作数据库,针对数据的增、删、改、查。
业务逻辑层BLL
页面设计层UI个别的有MODEL
调用ui-->BLL-->DAL
简称MVC
数据处理层DAL M Model
业务逻辑层BLL C Control
页面设计层 V View
业务逻辑层BLL
页面设计层
你可以查一下msdn
三层体系的应用程序将业务规则、数据访问、合法性校验等工作放到了中间层进行处理。通常情况下,客户端不直接与数据库进行交互,而是通过COM/DCOM通讯与中间层建立连接,再经由中间层与数据库进行交互。表现层(UI):通俗讲就是展现给用户的界面,即用户在使用一个系统的时候他的所见所得。
业务逻辑层(BLL):针对具体问题的操作,也可以说是对数据层的操作,对数据业务逻辑处理。
数据访问层(DAL):该层所做事务直接操作数据库,针对数据的增、删、改、查。
第二层是逻辑处理层 BussinessLogicLayer(根据业务需要 调用DataAccessLayer里类库构造函数)
第三层就是用户界面了 也就是页面
msdn里面有?怎么个搜索法?我搜索三层架构貌似找不到结果
业务逻辑层BLL
页面设计层
数据访问层:仅实现对数据的保存和读取操作。数据访问,可以访问数据库系统、二进制文件、文本文档或是XML文档。.NETK中也就是把这些参数数组添加在Command类的参数集合中.实现对数据库的操作把这些参数数组添加在Command类的参数集合中.实现对数据库的操作那为什么要使用三层架构呢?其实最大的一点就是 针对大型系统的应用,如果不用分层结构,在将来的维护中将非常麻烦.介绍微软.NET架构在CSDN有一篇很好的文章,我把它粘在这里:
Microsoft.NET 为三层结构做的准备
Microsoft .NET Framework是微软推出的一套下一代开发平台。.NET 基于开发人员的角度来说它是一个公共平台的类库(FCL),包含了近100 个命名空间(namespace)的近5000个类,想想看这是多的强大,还包括一个公共语言运行库(CLR)。因为只要符合.NET的公共运行规范(CLS的语言都可以 使用它提供的强大的类,并编译为微软的中间语言(MSIL),在其他的应用中就可以当作一个组件来调用。同时享受公共运行库带来的一切好处: 垃圾自动回收(GC)、实时编译(JIT)、跨语言互动、跨平台。 .NET 还可比喻是操作系统提供给开发人员的面向对像的API。 ASP.net是.net中的一部分。它最大的优点除了是编译执行速度快外,我觉得最大的优点是页面和代码分离的编写方式,再加上.net库提供的支持事件的各种WEB控件,以及.NET公共平台的类库(FCL),和以前编写网页方式相比可谓是一场革命.
三层架构图如下:
CIOCPServer
||
||
CCutomHPServer
||
||
CTestServer
以后我们要讨论的就是这个看上去并不复杂的三层架构图,下面就此架构图中的主要类进行简要说明。
CIOCPServer:
完成端口服务器基本通信类,它使用winnt/2000/xp平台特有完成端口特性,对通信模型进行封装,向它的派生类提供以下基本扩展接口(可被重载的虚函数):
1、有客户端连接时的处理接口;
2、客户端断开时的处理接口;
3、从客户端收完数据后的处理接口;
4、向客户端发送完数据后的处理接口;
5、网络通信及服务器处理出现错误时的处理接口。
CCustomHPServer:
典型的高性能服务器类,CIOCPServer是其基类之一(之一?难道还有另外的基类,回答是:当然,呵呵,别急,后面会介绍),此类在CIOCPServer的基础上,封装了三个数据队列及三类处理线程,介绍如下:
1、接收数据包队列及接收线程:用于存放刚收到的数据包,此数据包还没有进行逻辑意义上的拆解,接收线程从此队列中取出数据包,并将其形成一个逻辑意义上完整的数据包加入到“处理数据包队列”中;
2、处理数据包队列及逻辑处理线程:已经拆解成了逻辑意义上的数据包,逻辑处理线程对此类数据包进行逻辑解析,这里就是服务器的主要逻辑部分,有的数据包在处理完成后,可能是需要向客户端返回处理结果的,此时就需要逻辑线程在处理完成后将返回结果的数据包放入“发送数据包队列”中;
3、发送数据包队列及发送线程:待发送的数据包队列,由发送线程根据数据包里的客户端套接字发送给特定客户端。
CTestServer:
此类是一个测试类,主要用于演示如何在CCustomHPServer的基础上派生一个真正的应用服务器,并用于说明它需要重载实现CCustomHPServer的哪些重要虚函数。
基于以上的结构,我们的服务器通信模型,可以一层一层地实现,一层一层的测试。在CIOCPServer中,它本身是不带有任何数据队列的,所有的网络数据都是即来即处理,没有保存数据,实现的是即时响应。在CIOCPServer里,有两类重要线程:AcceptThread线程和WorkerThread线程。其中,AccetpThread线程使用Accept或AcceptEx函数来接收客户端的连接请求,并实现客户端socket与完成端口句柄的绑定,“有客户端连接时的处理接口”就是在这里封装的;而WorkerThread线程是我们在完成端口中常说的“工作者线程”,它由get函数触发工作,除“有客户端连接时的处理接口”之外的其它接口,都在这里进行封装。
通上面可以看出三层架构中,对每一层的分工非常明确。通过这个实习项目,我第一次接触三层架构,它给我的第一感觉就是易于维护,在实际开发中代码层次分得很清楚,开发起来效率高。其它方面我可能还不是很清楚。以后用多了可能慢慢就会深入了解
为了更好的代码重用.
为了代码组织更清晰.
为了团队分工协作.
为了测试工作方便进行....再好的架构师也不能应对保证系统以后的所有的变化,只能尽量再尽量的让系统有比较好的大的方向的扩充和替换能力
模型,视图,控制器
与业务层,数据访问层,表示层有什么区别吗
印象中在N年前看过一本书,好像是讲三层架构分为表现层,中间层,数据库层。
记得在看三层架构的时候也不知道什么数据库处理,实体,业务逻辑什么之类的。或许是年老不更事了,记错了,记不清了。。顺便再请教下闵老师啊,你所说的持久层是指?
按你所述我估计应该是数据库处理之类的封装。。或许包括文本读写操作。
但是个人理解持久层为数据库迷惑的是持久层到底是持久化数据的操作还是持久化数据保存的数据?
有没有更为权威的说话?
数据层(DataAccess)
逻辑层(Business Logic Layer)
表示层(Presentation Layer)根据微软Scott Mitchell讲解
用户界面,外部接口,会话管理
就是你的ASPX页面业务逻辑层
业务过程和规则,业务模型
写在app_code或.dll里的访问数据库的类和一些常用操作.数据访问层
数据访问和存储,数据管理
你的数据库.
然后看源代码
三层架构有哪些?界面层,业务层,数据层。
MVC和它一样吗?都有什么优点和缺点?
大家现在都在用MVC开发模式吗?呵呵,MVC只是听说,还不知怎么用的?
持久?何解,我暂不是很好理解,拿语法上讲,应该是个形容词吧?yaji_ya讲解讲解。
持久层,应该算是个名词吧,关键在层上了,这个层应该指的是哪部分?这样描述个人认为很容易误解吧。
个人比较偏向于持久到的层,即数据库或者硬盘甚至内存。可很多人往往指的却是持久化层。。难道持久层和持久化类封装没有区吗?就像数据层和数据访问层?两个一样?
系统各层次职责
1.UI(User Interface)层的职责是数据的展现和采集,数据采集的结果通常以Entity object提交给BL层处理。Service Interface侧层用于将业务或数据资源发布为服务(如WebServices)。
2.BL(Business Logic)层的职责是按预定的业务逻辑处理UI层提交的请求。
(1)Business Function 子层负责基本业务功能的实现。
(2)Business Flow 子层负责将Business Function子层提供的多个基本业务功能组织成一个完整的业务流。(Transaction只能在Business Flow 子层开启。)
3.ResourceAccess层的职责是提供全面的资源访问功能支持,并向上层屏蔽资源的来源。
(1)BEM(Business Entity Manager)子层采用DataAccess子层和ServiceAccess子层来提供业务需要的基础数据/资源访问能力。
(2)DataAccess子层负责从数据库中存取资源,并向BEM子层屏蔽所有的SQL语句以及数据库类型差异。
DB Adapter子层负责屏蔽数据库类型的差异。
ORM子层负责提供对象-关系映射的功能。
Relation子层提供ORM无法完成的基于关系(Relation)的数据访问功能。
(3)ServiceAccess子层用于以SOA的方式从外部系统获取资源。
注: Service Entrance用于简化对Service的访问,它相当于Service的代理,客户直接使用Service Entrance就可以访问系统发布的服务。Service Entrance为特定的平台(如Java、.Net)提供强类型的接口,内部可能隐藏了复杂的参数类型转换。
(4)ConfigAccess子层用于从配置文件中获取配置object或将配置object保存倒配置文件。
4.Entity侧层跨越UI/BEM/ResourceManager层,在这些层之间传递数据。Entity侧层中包含三类Entity,Aspect
Aspect贯穿于系统各层,是系统的横切关注点。通常采用AOP技术来对横切关注点进行建模和实现。
1.Securtiy Aspect:用于对整个系统的Security提供支持。
2.ErrorHandling Aspect:整个系统采用一致的错误/异常处理方式。
3.Log Aspect:用于系统异常、日志记录、业务操作记录等。规则
1.系统各层次及层内部子层次之间都不得跨层调用。
2.Entity object 在各个层之间传递数据。
3.需要在UI层绑定到列表的数据采用基于关系的DataSet传递,除此之外,应该使用Entity object传递数据。
4.对于每一个数据库表(Table)都有一个DB Entity class与之对应,针对每一个Entity class都会有一个BEM Class与之对应。
5.有些跨数据库或跨表的操作(如复杂的联合查询)也需要由相应的BEM Class来提供支持。
6.对于相对简单的系统,可以考虑将Business Function子层和Business Flow 子层合并为一个。
7.UI层和BL层禁止出现任何SQL语句。错误与异常
异常可以分为系统异常(如网络突然断开)和业务异常(如用户的输入值超出最大范围),业务异常必须被转化为业务执行的结果。
1.DataAccess层不得向上层隐藏任何异常(该层抛出的异常几乎都是系统异常)。
2.要明确区分业务执行的结果和系统异常。比如验证用户的合法性,如果对应的用户ID不存在,不应该抛出异常,而是返回(或通过out参数)一个表示验证结果的枚举值,这属于业务执行的结果。但是,如果在从数据库中提取用户信息时,数据库连接突然断开,则应该抛出系统异常。
3.在有些情况下,BL层应根据业务的需要捕获某些系统异常,并将其转化为业务执行的结果。比如,某个业务要求试探指定的数据库是否可连接,这时BL就需要将数据库连接失败的系统异常转换为业务执行的结果。
4.UI层(包括Service层)除了从调用BL层的API获取的返回值来查看业务的执行结果外,还需要截获所有的系统异常,并将其解释为友好的错误信息呈现给用户。
数据处理层Model 对数据库的操作。主要是SQL文,还有结构的定义
业务逻辑层Control 根据对页面的操作,选择做什么处理,调用哪个数据库操作,在此层做
页面设计层View 页面呈现
这样分层主要是结构清晰。程序修改和维护比较容易
如果只是对表的查询条件变化了,一般只需要修改Model层,其它地方不变。
呵呵,他的原话为:MVC是一种三层架构如果三层架构在他的思维里有很多种,哪MVC或许也是一种吧