如果你的系统是大型的软件开发,那你就要做好更多层的分解,但是原则和理论上,我认为,不用分得太细。我们都知道,MVC模式把系统,分成Model、View、Controller。这样的分法是把表示层同逻辑层分开,也就是说把页面设计师同软件设计师分开。系统分析师再把各个功能写成接口,软件设计师就可以通过业务逻辑来写程序。
我所说的四层架构的分法,就是想把软件设计师工作量降下来,减少重复性的代码,提高开发速度,使软件有相当好的可维护、易扩展,这种四层架构对多人开发同软件来说,可以有个清晰的思路。我把系统分成表示层(UI)、业务逻辑层(Bussiness)、数据访问层(DataAccess)、数据实体层(DataEnity)。如果你还考虑到数据库设计的话,就是五层架构。我的出发点是从软件设计师角度,所以说是四层。其中,最好把所有的存储过程和SQL语句都写在数据库里,可以便于数据库的改变的修改和维护,同时也可以减少程序中的不稳定性。接下来,就是讲到如果更合理、更有效地把复杂的系统分析成多层,以达到系统的结构清晰、提高速度。
数据实体层(DataEnity)就是把实际数据库里的映射到内存中,也称为OMapping。其中有数据框架(.XSD格式)、也有微软提供的方法:继承DataSet、DataTable等。这层也是对微软技术的熟悉程度,对.net FrameWork类库中ADO.NET的学习是很关键的。
表示层主要就是做好合理的、适合客户的页面,这主要是美工的工作,程序员只需把对应的数据传过去就行了。当然,这就是你对ASP.NET控件的熟悉程度了。也是对微软技术学习中慢慢积累起来的。如果客户有需求你做电子商务,那你就要考虑用到Web Server,还要用到XML。从系统分析来说,表示层就是输入操作与输出操作的平台,你要把要输入的数据转换到下面一层及业务逻辑层(Bussiness)要可以操作数据,和把下层业务逻辑层(Bussiness)传出的数据,转成客户想要的效果,格式有很多种:是Office的格式(.doc/.exel等),还是图形图像,还是报表等及其它格式。对WEB技术来说,我们要把页面设计的一些元素统一管理,可以创建一个图书馆(Lib):图片放入(Images)、脚本放入(Js)、CSS。其中还有上传图片、附件 可以新建一个文件夹(LoadFilder)。做成这些程序设计外的准备以方便设计阶段的有上清晰的认识。
数据访问层(DataAccess)是.NET的核心技术的运用,当从这层的表面意思,你应该知道,这是对数据进行底层和原始数据的操作,要把提高开发速度与质量就是做好数据访问层的分析的优化。当然,业务逻辑层的业务逻辑分析很重要的,我现在讨论的数据访问层只对SQL Server数据库的操作,不讨论对其他数据库的操作。对数据库操作,要做到事务处理及异常捕获,及各种不种数据库之间联系。比如:对单表的操作、对联系表的操作,对不同数据库间的操作,从SQL语句来说,就是做好Insert、Select、update、delete的应用,对数据库的操作就是可以返回不同的数据类型,可是DataSet、DataTable、DataReader、Bool等,在.net架构里,可以把这一层基类写详细、写完善,把它生成DLL文件。只要通过组件的引用就可以现实数据访问的功能,所以你写好了,就可以把数据访问层的写代码量的时间省下来。数据访问层主要是能对数据进行四种常用操作,也就是数据读入输出的作用,可以用SQL语句,也可以用参数如:DataTable的变通方法。程序设计的开发,就是从数据库设计开始,这足以说明数据库设计的关键。
现在来谈谈业务逻辑层(Bussiness),我在学习其他的多层架构时,在想这多层架构嘛,只要一个就够了,只要能提高开发速度,达到可易维护性、可扩展,就行了。有一种架构,把页面写类库完全分开,这就是用到CodeBehind技术,在开源的时代,我个人认为这种代码才是最好实现隐藏性把页面与程序的彻底的分开,使系统有很大的扩展空间,这种方案有待下次讨论,这里先做个标记。此层关系系统是否可用的关键层,越是关键就越觉得模式的重要性,一种做法是:同数据访问层相对应,把概要设计分出的角色类添加方法、属性、事件、索引、接口。真正代码的实现部分就在这里,这是一个智慧的地方。可是没有人注意到这一点,只认为这一些的代码无非是对数据访问层的一种重用。第二种做法是:定义接口把它的代码实现部分包装起来。在这种做法中,可以用到多种设计模式。
有的人把通用的基类及通用的函数到通用层,或是把通用的基类写到各个层类。这是种不可取的方法。如果有一个框架层(FrameWork),这一层做什么用的呢?就是要通用的类库集中在这层。也是一个通用的基类,可以把一些常用的基类换在这层。也可以动态引用动态类库。对软件技术开发来说,对已有技术的一种引用是一种聪明的做法、也最有效的做法。
分层分得太多可能会增加软件的复杂程度。如果是小型性软件,要的就是简单与易用,没有必要分太多,对于扩展性的问题,可以运用框架层来解决。
你终爱算法吗?你会对程序结构追求一种完美吗?我们的目标就是要把程序开发变成一种智慧的净土,而不是伤心地,我们要追求的是一种艺术美,不是一种痛苦。痛恨那些把程序天堂变成地狱的魔鬼。
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=550566
分享到:
相关推荐
内容概要:本文详细介绍了基于MATLAB GUI界面和卷积神经网络(CNN)的模糊车牌识别系统。该系统旨在解决现实中车牌因模糊不清导致识别困难的问题。文中阐述了整个流程的关键步骤,包括图像的模糊还原、灰度化、阈值化、边缘检测、孔洞填充、形态学操作、滤波操作、车牌定位、字符分割以及最终的字符识别。通过使用维纳滤波或最小二乘法约束滤波进行模糊还原,再利用CNN的强大特征提取能力完成字符分类。此外,还特别强调了MATLAB GUI界面的设计,使得用户能直观便捷地操作整个系统。 适合人群:对图像处理和深度学习感兴趣的科研人员、高校学生及从事相关领域的工程师。 使用场景及目标:适用于交通管理、智能停车场等领域,用于提升车牌识别的准确性和效率,特别是在面对模糊车牌时的表现。 其他说明:文中提供了部分关键代码片段作为参考,并对实验结果进行了详细的分析,展示了系统在不同环境下的表现情况及其潜在的应用前景。
嵌入式八股文面试题库资料知识宝典-计算机专业试题.zip
嵌入式八股文面试题库资料知识宝典-C and C++ normal interview_3.zip
内容概要:本文深入探讨了一款额定功率为4kW的开关磁阻电机,详细介绍了其性能参数如额定功率、转速、效率、输出转矩和脉动率等。同时,文章还展示了利用RMxprt、Maxwell 2D和3D模型对该电机进行仿真的方法和技术,通过外电路分析进一步研究其电气性能和动态响应特性。最后,文章提供了基于RMxprt模型的MATLAB仿真代码示例,帮助读者理解电机的工作原理及其性能特点。 适合人群:从事电机设计、工业自动化领域的工程师和技术人员,尤其是对开关磁阻电机感兴趣的科研工作者。 使用场景及目标:适用于希望深入了解开关磁阻电机特性和建模技术的研究人员,在新产品开发或现有产品改进时作为参考资料。 其他说明:文中提供的代码示例仅用于演示目的,实际操作时需根据所用软件的具体情况进行适当修改。
少儿编程scratch项目源代码文件案例素材-剑客冲刺.zip
少儿编程scratch项目源代码文件案例素材-几何冲刺 转瞬即逝.zip
内容概要:本文详细介绍了基于PID控制器的四象限直流电机速度驱动控制系统仿真模型及其永磁直流电机(PMDC)转速控制模型。首先阐述了PID控制器的工作原理,即通过对系统误差的比例、积分和微分运算来调整电机的驱动信号,从而实现转速的精确控制。接着讨论了如何利用PID控制器使有刷PMDC电机在四个象限中精确跟踪参考速度,并展示了仿真模型在应对快速负载扰动时的有效性和稳定性。最后,提供了Simulink仿真模型和详细的Word模型说明文档,帮助读者理解和调整PID控制器参数,以达到最佳控制效果。 适合人群:从事电力电子与电机控制领域的研究人员和技术人员,尤其是对四象限直流电机速度驱动控制系统感兴趣的读者。 使用场景及目标:适用于需要深入了解和掌握四象限直流电机速度驱动控制系统设计与实现的研究人员和技术人员。目标是在实际项目中能够运用PID控制器实现电机转速的精确控制,并提高系统的稳定性和抗干扰能力。 其他说明:文中引用了多篇相关领域的权威文献,确保了理论依据的可靠性和实用性。此外,提供的Simulink模型和Word文档有助于读者更好地理解和实践所介绍的内容。
嵌入式八股文面试题库资料知识宝典-2013年海康威视校园招聘嵌入式开发笔试题.zip
少儿编程scratch项目源代码文件案例素材-驾驶通关.zip
小区开放对周边道路通行能力影响的研究.pdf
内容概要:本文探讨了冷链物流车辆路径优化问题,特别是如何通过NSGA-2遗传算法和软硬时间窗策略来实现高效、环保和高客户满意度的路径规划。文中介绍了冷链物流的特点及其重要性,提出了软时间窗概念,允许一定的配送时间弹性,同时考虑碳排放成本,以达到绿色物流的目的。此外,还讨论了如何将客户满意度作为路径优化的重要评价标准之一。最后,通过一段简化的Python代码展示了遗传算法的应用。 适合人群:从事物流管理、冷链物流运营的专业人士,以及对遗传算法和路径优化感兴趣的科研人员和技术开发者。 使用场景及目标:适用于冷链物流企业,旨在优化配送路线,降低运营成本,减少碳排放,提升客户满意度。目标是帮助企业实现绿色、高效的物流配送系统。 其他说明:文中提供的代码仅为示意,实际应用需根据具体情况调整参数设置和模型构建。
少儿编程scratch项目源代码文件案例素材-恐怖矿井.zip
内容概要:本文详细介绍了基于STM32F030的无刷电机控制方案,重点在于高压FOC(磁场定向控制)技术和滑膜无感FOC的应用。该方案实现了过载、过欠压、堵转等多种保护机制,并提供了完整的源码、原理图和PCB设计。文中展示了关键代码片段,如滑膜观测器和电流环处理,以及保护机制的具体实现方法。此外,还提到了方案的移植要点和实际测试效果,确保系统的稳定性和高效性。 适合人群:嵌入式系统开发者、电机控制系统工程师、硬件工程师。 使用场景及目标:适用于需要高性能无刷电机控制的应用场景,如工业自动化设备、无人机、电动工具等。目标是提供一种成熟的、经过验证的无刷电机控制方案,帮助开发者快速实现并优化电机控制性能。 其他说明:提供的资料包括详细的原理图、PCB设计文件、源码及测试视频,方便开发者进行学习和应用。
基于有限体积法Godunov格式的管道泄漏检测模型研究.pdf
嵌入式八股文面试题库资料知识宝典-CC++笔试题-深圳有为(2019.2.28)1.zip
少儿编程scratch项目源代码文件案例素材-几何冲刺 V1.5.zip
Android系统开发_Linux内核配置_USB-HID设备模拟_通过root权限将Android设备转换为全功能USB键盘的项目实现_该项目需要内核支持configFS文件系统
C# WPF - LiveCharts Project
少儿编程scratch项目源代码文件案例素材-恐怖叉子 动画.zip
嵌入式八股文面试题库资料知识宝典-嵌⼊式⼯程师⾯试⾼频问题.zip