`
司空青云
  • 浏览: 7720 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

ASP.NET编程三层架构

阅读更多

一.三层架构图

 

二.系统各层次职责
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获取的返回值来查看业务的执行结果外,还需要截获所有的系统异常,并将其解释为友好的错误信息呈现给用户。

六.项目组织目结构
 以BAS系统为例。
1.主目录结构:
 
2.命名空间命名:每个dll的根命名空间即是该dll的名字,如EAS.BL.dll的根命名空间就是EAS.BL。每个根命名空间下面可以根据需求的分类而增加子命名空间,比如,EAS.BL的子空间EAS.BL.Order与EAS.BL.Permission分别处理不同的业务逻辑。
3.包含众多子项目的庞大项目的物理组织:
 
核心子项目Core的位置:

 
Core子项目中包含一些公共的基础设施,如错误处理、权限控制方面等。

七.发布服务与服务回调
以EAS系统为例。
 
1.同UI层的Page一样,服务也不允许抛出任何异常,而是应该以返回错误码(int型,1表示成功,其它值表示失败)的形式来表明服务调用出现了错误,如果方法有返回值,则返回值以out参数提供。
2. 如果BAS系统提供了WebService(Remoting)服务,则BAS必须提供BAS.Entrance.dll。 BAS.Entrance.dll封装了与BAS服务交换信息的通信机制,客户系统只要通过BAS.Entrance.dll就可以非常简便地访问BAS 提供的服务。
3.如果BAS需要通过WebService(Remoting)回调客户系统,则必须提供仅仅定义了接口的BAS.CallBack.dll,客户系统将引用该dll,实现其中的接口,并将其发布为服务,供BAS回调。
4.当WebService的参数或返回值需要是复杂类型――即架构图中的Service Entity,则Service Entity应该在对应的BAS.EntranceParaDef.dll或BAS.CallBackParaDef.dll中定义。 WebService定义的方法中的复杂类型应该使用Xml字符串代替(注意,Entrance和CallBack接口对应服务的方法的参数是强类型的),而Xml字符串和复杂类型对象之间的转换应当在BAS.Entrance.dll或BAS.CallBack.dll中实现。 

分享到:
评论

相关推荐

    ASP.NET 标准三层架构留言本

    ASP.NET 标准三层架构留言本是一个基于.NET框架的Web应用程序,主要采用了.NET源码进行开发,能够运行在ASP.NET平台之上,同时支持ACCESS和MSSQL两种数据库环境。三层架构是软件设计中的一个常见模式,它将应用程序...

    asp.net标准三层架构源码

    ASP.NET标准三层架构是一种常见的软件开发模式,它将应用程序分为数据访问层、业务逻辑层和表示层,以实现代码的高可复用性、模块化和低耦合性。这种架构设计有助于团队协作,便于代码维护和扩展。 **数据访问层...

    基于c#的asp.net三层架构的博客系统

    【标题】:“基于C#的ASP.NET三层架构的博客系统” 在软件开发中,三层架构是一种常见的设计模式,尤其在企业级应用中被广泛应用。它将应用程序分为三个主要部分:表现层(UI)、业务逻辑层(BLL)和数据访问层...

    基于asp.net(三层架构)运动商城.rar

    【标题】:“基于asp.net(三层架构)运动商城.rar”是一个使用ASP.NET技术构建的电商系统,采用三层架构设计,专为运动商品销售而开发。这个项目提供了完整的源代码供学习和参考。 【描述】:“源码参考,欢迎下载”...

    ASP.NET三层架构留言本项目源码

    ASP.NET三层架构是一种常见的软件设计模式,用于组织和分离应用程序中的业务逻辑、数据访问和用户界面层。在ASP.NET环境中,这种架构可以帮助开发者创建可维护、可扩展且易于复用的代码。在这个“ASP.NET三层架构...

    asp.net非三层架构的图书管理系统(快速开发)

    《ASP.NET非三层架构的图书管理系统》是一款基于C#编程语言和ASP.NET技术构建的图书管理软件,旨在提供快速开发的解决方案。不同于传统的三层架构,该系统可能采用更简洁、直接的设计模式,使得开发过程更为高效,...

    简单的asp.net三层架构学习代码

    这个“简单的asp.net三层架构学习代码”是一个很好的起点,对于想要理解并掌握ASP.NET三层架构的初学者来说非常有价值。 三层架构是一种设计模式,它将应用程序分为三个主要部分:表现层(UI)、业务逻辑层(BLL)...

    ASP.NET标准三层架构留言本项目源码

    ASP.NET标准三层架构留言本项目源码是一种常见的Web应用程序开发模式,它将业务逻辑、数据访问和用户界面分离,以实现更好的代码组织和模块化。在这个项目中,我们看到几个关键组成部分,包括图像资源、解决方案文件...

    ASP.NET 三层架构 GRIDVIEW 实现增删改查

    ASP.NET三层架构是一种常见的软件设计模式,用于构建可维护性和扩展性良好的Web应用程序。在这个模式中,业务逻辑、数据访问和用户界面被分离为三个独立的层:表现层(UI)、业务逻辑层(BLL)和数据访问层(DAL)。...

    用asp.net做的商品房销售系统(三层架构)

    在提供的压缩包文件中,"ASP集中营.txt"可能包含了一些关于ASP.NET编程的基础知识或技巧,帮助开发者更好地理解和使用该技术。"安装说明.txt"应提供了部署和运行此商品房销售系统的步骤,包括设置环境、导入数据库等...

    基于ASP.NET三层架构的学生选课系统 源代码 毕业设计

    【ASP.NET三层架构】 ASP.NET三层架构是一种常见的软件开发模式,用于构建可扩展、易于维护的Web应用程序。这种架构将应用程序分为三个主要层次:表现层(Presentation Layer)、业务逻辑层(Business Logic Layer...

    asp.net三层架构班级论坛

    【asp.net三层架构班级论坛】是一个基于C#编程语言,使用Visual Studio 2010开发的班级讨论平台。这个项目充分利用了ASP.NET的三层架构设计模式,旨在提供一个高效、可扩展且易于维护的系统。三层架构是一种常见的...

    ASP.NET简单三层架构源码

    标题“ASP.NET简单三层架构源码”表明这是一个用于教学目的的代码示例,涵盖了从简单的单层架构到进阶的三层架构的实现。对于初学者来说,这是一个很好的起点,可以让他们理解不同架构层次的概念以及如何在ASP.NET中...

    基于ASP.NET三层架构系统

    总结来说,"基于ASP.NET三层架构系统"是一个典型的Web应用开发案例,展示了如何通过ASP.NET平台,结合C#编程语言,利用JavaScript和CSS增强用户界面,以及采用三层架构实现模块化和高效率的系统设计。理解并掌握这种...

    ASP.NET 三层架构 外卖网站 方面初学者学习

    ASP.NET 三层架构是开发大型、可扩展且易于维护的Web应用程序的一种常见设计模式,尤其适合外卖网站这样的业务系统。这种架构将应用分为三个主要层次:表现层(UI)、业务逻辑层(BLL)和数据访问层(DAL),每个...

    asp.net 三层架构公共资源管理系统

    本系统"asp.net 三层架构公共资源管理系统"是基于这种模式,利用Microsoft的asp.net技术和C#编程语言实现的,旨在高效管理和分配公共资源。下面将详细讲解这个系统的相关知识点。 首先,三层架构(也称为N层架构)...

    asp.net登录注册——三层架构学习

    综上所述,这个“asp.net登录注册——三层架构学习”项目涵盖了ASP.NET基础、三层架构设计原则、用户认证授权机制、数据库设计以及异常处理等多个关键知识点。对于初学者来说,这是一个很好的实践项目,可以帮助他们...

    最简单的ASP.net三层架构模型

    对于初学者来说,理解并实践ASP.NET三层架构是提升编程技能的重要步骤。它有助于理解如何组织代码以实现更好的结构和解耦,同时为今后的复杂项目打下坚实的基础。在实际开发中,还可以结合其他设计模式,如工厂模式...

    三层架构Asp.Net+MVC+Linq to SQL2005 入门实例

    总的来说,这个实例为初学者提供了一个很好的起点,让他们了解如何在Asp.Net环境中结合MVC模式和Linq to SQL技术来构建一个包含用户管理、产品管理和分页功能的三层架构应用程序。通过研究和实践这个实例,学习者...

    asp.net电脑商城(三层架构、sqlserver)

    【标题】"asp.net电脑商城(三层架构、sqlserver)" 涉及到的核心技术是ASP.NET,这是一种由微软开发的服务器端Web应用程序框架,主要用于构建动态网站、 web 应用程序和 web 服务。它基于.NET Framework,提供了一...

Global site tag (gtag.js) - Google Analytics