从零开始编写自己的C#框架(5)——三层架构介绍

原文:从零开始编写自己的C#框架(5)——三层架构介绍

  三层架构对于开发人员来说,已经是司空见惯了,除了大型与超小型项目外,大多都是这种架构来进行开发。

  在这里为初学者们简单介绍一下三层架构:

  (下面内容摘自《趣味理解:三层架构与养猪—《.NET深入体验与实战精要》》,这是以前看到的关于三层架构介绍,觉得挺经典的,大家有时间的话认真看看)

  

  对比以上两图,我们可以看出:
  1)数据库好比猪圈
,所有的猪有序地按区域或编号,存放在不同的猪栏里。
  2)DAL
好比是屠宰场 ,把猪从猪圈取出来进行(处理)屠杀,按要求取出相应的部位(字段),或者进行归类整理(统计),形成整箱的猪肉(数据集),传送给食品加工厂( BLL
)。本来这里都是同一伙人既管抓猪,又管杀猪的,后来觉得效率太低了,就让一部分人出来专管抓猪了( DBUtility
),根据要求来抓取指定的猪。
  3)BLL 好比食品加工厂
,将猪肉深加工成各种可以食用的食品(业务处理)。
  4)Web 好比商场
,将食品包装成漂亮的可以销售的产品,展现给顾客( UI 表现层)。
  5)猪肉好比 Model
,无论是哪个厂(层),各个环节传递的本质都是猪肉,猪肉贯穿整个过程。
  6)通用类库 Common
相当于工人使用的各种工具,为各个厂(层)提供诸如杀猪刀、绳子、剪刀、包装箱、工具车等共用的常用工具(类)。其实,每个部门本来是可以自己制作自己的工具的,但是那样会使效率比较低,而且也不专业,并且很多工作都会是重复的。因此,就专门有人开了这样的工厂来制作这些工具,提供给各个工厂,有了这样的分工,工厂就可以专心做自己的事情了。

  我们的框架结构

  接下来要和大家一起开发的是基于SubSonic3.0
ORM插件的框架,关于SubSonic3.0的具体介绍将会在下一章节详细说明。

  在此要向大家声明的是,本框架主要应用于中小型项目,对于并发量非常大、对性能要求非常高的和有完美倾向的开发人员(如开发中必须统一使用一种开发结构,要求三层架构必须使用面向对象的朋友),请拐弯,因为本框架可能不符合你的审美观。

  本框架不会完全使用面向对象的方式来进行开发,本框架追求的思想是合适与快捷。即在合适的地方使用适合的插件或技术,整个框架完成后添加新功能、做二次开发或维护时,能方便快捷(速度流)。

  比如该用存储过程实现的业务逻辑,就不用强制使用代码来实现,因为有些逻辑使用代码来实现,无论在开发时间、代码量、并发处理、性能上都与存储过程处理没法比;在需要使用ADO.NET来执行SQL语句时,就不会为了统一框架底层调用方法,强制使用SubSonic插件的相关方法来实现,如果你看到这种代码心理很不舒服的话,那只能说我们不在一个频道上,对于我这种实用型开发者来说,所追求的编程模式方向可能与你不同。

  下图是本框架的扩展结构发给大家参考一下,以后的章节重点讲解的是红框框住的几个项目,详细讲述本框架底层架构是怎么搭建的,指导初学者们一步步搭建好自己的框架架构。

  

  对比前面的三层架构,大家可能会很奇怪,怎么没有看到Model层的?这是因为我们使用的SubSonic3.0插件所附带的效果,该插件附带的T4模板所生成的Model与DAL混合在一起,很难进行分开。SubSonic插件为了实现更新数据的时候,自动将它所生成的SQL语句剔除掉未赋值字段,只更新已赋值的字段内容,而对实体类的Set进行了改造(如下图)。(注:常见的SQL语句生成框架是没有这种过滤功能)

  

  这样处理将会减少更新数据长度,减少对实体类字段赋值操作(对使用默认值的字段不用再进行赋值操作),减少代码工作量。例如:有些订单表里有几十个字段,其中大部分在创建时使用默认值就可以了,这时只需要对需要的几个字段赋值即可。

  框架各项目功能说明


























序号 名称 说明
1 Solution.Common 公共函数类
2 SubSonic.Core SubSonic3.0.0.4插件源码
3 Solution.DataAccess 数据访问层
4 Solution.Logic.Managers 业务逻辑层
5 Solution.Web.Managers UI层(后台管理系统)

  各层之间调用说明
  1)  
 Solution.Commom,主要存放系统要调用到的各种常用工具函数,给其他所有层调用。
  2)   
SubSonic.Core,SubSonic3.0插件源码,主要负责与数据库进行交互,将业务转换成相应的SQL语句,对数据库进行各种增、删、改、查等操作;
  3)  
 Solution.DataAccess,主要存放T4模版生成的业务实体(Model)、数据库表结构、业务实体常用函数、存储过程调用函数,以及已封装好的各种数据库操作函数和ADO.NET数据库执行函数;
  4)    Solution.Logic.Managers,主要存放各种业务逻辑函数,其中SubSonic文件夹里的文件是由T4模版自动生成的常用逻辑函数(会将UI层所要用到的80%以上的函数自动生成出来)。这些逻辑函数主要是接收UI层的操作命令与参数,进行逻辑运算和处理后,提交给Solution.DataAccess层来处理,以实现对数据库表记录的增、删、改、查等操作;
  5)  
 Solution.Web.Managers层是UI层,用来展示管理系统的各个页面与功能。主要实现和用户的交互,接收用户请求或展示用户请求的数据结果。

 版权声明:

  本文由AllEmpty原创并发布于博客园,欢迎转载,未经本人同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利。如有问题,可以通过[email protected]
联系我,非常感谢。

  发表本编内容,只要主为了和大家共同学习共同进步,有兴趣的朋友可以加加Q群:327360708
或Email给我([email protected]),大家一起探讨。

  更多内容,敬请观注博客:http://www.cnblogs.com/EmptyFS/

从零开始编写自己的C#框架(5)——三层架构介绍,布布扣,bubuko.com

时间: 2024-08-03 19:04:27

从零开始编写自己的C#框架(5)——三层架构介绍的相关文章

从零开始编写自己的C#框架(1)——前言

原文:从零开始编写自己的C#框架(1)--前言 记得十五年前自学编程时,拿着C语言厚厚的书,想要上机都不知道要用什么编译器来执行书中的例子.十二年前在大学自学ASP时,由于身边没有一位同学和朋友学习这种语言,也只能整天混在图收馆里拼命的啃书.而再后来也差不多,自学了很多不同的知识,都一直只能自己默默的克服一个又一个困难.所以这几年带一些应届生或只有一两年经验的新人时,都会同他们讲:你们现在太幸福了,有问题可以找度娘,还可以找我来解决.做为过来人,能深深的体会到刚入门的时候,没有系统的介绍和老师指

从零开始编写自己的C#框架(9)——数据库设计与创建

对于千万级与百万级数据库设计是有所区别的,由于本项目是基于中小型软件开发框架来设计,记录量相对会比较少,所以数据库设计时考虑的角度是:与开发相结合:空间换性能:空间换开发效率:减少null异常......当然不同的公司与项目要求不同,初学者要学会适应不同的项目开发要求,使用本框架开发时,必须严格按照本章节的要求来设计数据库,不然可能会产生不可控的异常. 从零开始编写自己的C#框架 数据库设计规范   文件状态: [√] 草稿 [  ] 正式发布 [  ] 正在修改 文件标识: C#框架 当前版本

从零开始编写自己的C#框架(14)——T4模板在逻辑层中的应用(三)

原本关于T4模板原想分5个章节详细解说的,不过因为最近比较忙,也不想将整个系列时间拉得太长,所以就将它们整合在一块了,可能会有很多细节没有讲到,希望大家自己对着代码与模板去研究. 本章代码量会比较大,基本将Web层要使用到的大部分函数都用模板生成了出来,而模板中的函数,很多也是互相关联调用的.另外在DotNet.Utilities(公共函数项目)中也添加与修改了一些类和函数. 需要特别说明的是,在逻辑层添加了July大神编写的超强上传类,具体怎么使用功能怎么强大,在后面调用到时会用一个章节详细说

从零开始编写自己的C#框架(18)——Web层后端权限模块——菜单管理

从本章开始,主要讲解的是页面中对框架相关功能的调用方法,比如列表页面(又分为有层次感列表和普通列表).编辑页面.多标签页面等,只要熟悉了这些函数的使用方法,那么开发起来就会很便捷了. 1.如图先创建菜单列表与编辑页面 MenuInfoList.aspx 1 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="MenuInfoList.aspx.cs" Inherits=&quo

从零开始编写自己的C#框架——框架学习补充说明

非常感谢轩辕公子提出了对本框架的看法与意见,所以这里也将回复贴出来,让大家都了解一下 本系列的快速开发指的是,框架构建完毕后,在这个基础上开发新功能非常快捷方便,基本不用写太多代码就可以在短时间内完成大量的基本功能.当然如果直接将全部代码贴出来,直接上例子的话可能更容易理解,但这样的话对于很多想了解整个框架实现过程的朋友来说,一下子太多代码就很难理解最初的思路了,同时大家也看到每一章都会附上独立的解决方案也是这么一回事,通过循序渐进的方式来进行学习.原本想要写得更细更多章节的,但由于个人空闲时间

从零开始编写自己的C#框架(24)——测试

导航 1.前言 2.不堪回首的开发往事 3.测试推动开发的成长——将Bug消灭在自测中 4.关于软件测试 5.制定测试计划 6.编写测试用例 7.执行测试用例 8.发现并提交Bug 9.开发人员修复Bug 10.对已修复Bug进行返测 11.将修复完成的Bug关闭,对未修复的Bug重新激活 12.灵活使用压力测试工具 13.测试与版本控制 14.小结 15.附件下载 1.前言 对于测试,很多公司并不看重,接触过不少朋友或客户,打开网站随便点击一下,就可以很容易发现爆黄页.404.UI变型(浏览器

从零开始编写自己的C#框架(15)——Web层后端登陆功能

对于一个后端管理系统,最重要内容之一的就是登陆页了,无论是安全验证.用户在线记录.相关日志记录.单用户或多用户使用帐号控制等,都是在这个页面进行处理的. 1.在解决方案中创建一个Web项目,并将它设置为启动项 2.添加引用 3.添加WebManage文件夹与Login.aspx文件 4.添加登陆页面HTML代码 1 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Login.aspx

从零开始编写自己的C#框架(4)——文档编写说明

原文:从零开始编写自己的C#框架(4)--文档编写说明 在写本系列的过程中,了解得越多越不知道从哪里做为切入点来写,几乎每个知识点展开来说都可以写成一本书.而自己在写作与文档编写方面来说,还是一个初鸟级别,所以只能从大方面说说,在本框架开发所需的范围内来讲述相关要用到的知识点,至于要更深入的去了解,请大家观看其他大牛的博客或购买书籍来学习. 为了加快进度,会对目录进行修改,将一些知识点合并或在后面使用的章节再进行描述. 谢谢大家的支持,如果您觉得本文对您有所帮助,请帮忙点击支持或发表评论. 在开

从零开始编写自己的C#框架(3)——开发规范

原文:从零开始编写自己的C#框架(3)--开发规范 由于是业余时间编写,而且为了保证质量,对写出来的东西也会反复斟酌,所以每周只能更新两章左右,请大家谅解,也请大家耐心等待,谢谢大家的支持. 初学者应该怎样学习本系列内容呢?根据我自己的学习经验,一般直接看一遍的方法,学习与认知都会比较浅,很快就忘了.而看完后写笔记.手抄或将所看的内容照着打一遍或多次的,可以比较深刻的理解文章或代码中的思想,并能将里面的核心内容牢记在心. 对于开发规范,都是老生常谈的事情了,很多正规一些的公司都有一套规范来约束,