架构-.net多层框架分层问题

问题描述

.net多层框架分层问题

举例说明IBLL层,IDLL层的好处?都说大项目接口方便扩展和维护?反射获取接口下的实例?

解决方案

分层的作用是,层可以单独替换,而不需要修改别的层的代码。一个典型的场景是,你的程序需要同时适配mysql sqlserver oracle等数据库,你肯定不希望差不多的代码写三份,那么就把数据库独立出来(不叫dll,叫dal)
但是分层是牺牲灵活性作为代价的,分层后每一层的接口一旦变动,必须所有的实现类全部都要改。所以分层绝对不是为了什么“好处”。分层也绝对不会方便扩展和维护。

解决方案二:

ASP.NET的三层架构(DAL,BLL,UI)
BLL 是业务逻辑层 Business Logic Layer

DAL 是数据访问层 Data Access Layer

ASP.NET的三层架构(DAL,BLL,UI)
图形表示三层结构. 其中web即为USL层User Show Layer
1.表示层(USL):主要表示WEB方式,也可以表示成WINFORM方式。如果逻辑层相当强大和完善,无论表现层如何定义和更改,逻辑层都能完善地提供服务。
2.业务逻辑层(BLL):主要是针对具体的问题的操作,也可以理解成对数据层的操作,对数据业务逻辑处理。如果说数据层是积木,那逻辑层就是对这些积木的搭建。
3.数据访问层(DAL):主要是对原始数据(数据库或者文本文件等存放数据的形式)的操作层,而不是指原始数据,也就是说,是对数据的操作,而不是数据库,具体为业务逻辑层或表示层 提供数据服务.

解决方案三:

如果有一个商场租户管理系统,里面许多租户的租金计算方式都不一样!如何针对每一个店铺使用对应的算法计算就是一个变化很大的问题。
可以用到工厂方法模式通过接口的实现,创建相应的商店对象,通过反射实现决定创建哪一个对象,执行它的算法。
这里面我们创建Isho接口,创建Ashop继承Ishop,实现里面的计算方法。
创建Ifactroy接口,创建CreateAshop类继承IFactroy,实现里面创建Ashop对象。
然后使用反射机制
IFactory af = (IFactory)Assembly.Load("ProductEnity").CreateInstance("ProductEnity." + CreateAshop); //比如这样就创建了CreateAshop类
对象,里面就可以有属于A商店的算法。
以后增加了新的商店,我们就可以:
在IDAL层添加继承Ishop类,实现新商店的算法。
在IDAL层添加继承了IFactory的类,实现你要创建心得商店对象。
如何反射要调用哪个算法就ok了,方便以后的算法的扩充,和新增商店以后算法的创建,就只需要编译一下IDAL既可以。
例子:使用工厂方法模式

时间: 2024-10-29 22:40:26

架构-.net多层框架分层问题的相关文章

使用delphi 开发多层应用(三)Delphi常用多层框架介绍

    目前在delphi 开发多层应用的框架基本上集中在以下几种,每种开发框架都有自己的优缺点,没有最好的,大家可以根据 自己的实际需求选择相应框架,我把我本人在使用几种框架的体会与大家分享一下.如有不对之处,可以拍砖.      1. DELPHI 自身提供的DataSnap       从delphi 3 开始,delphi 自身就开始支持多层开发,后期的版本逐步加强三层开发功能,在delphi 6 以后, 把这一功能叫Datasnap,并且每个都有很多变化,包括DBExpress 的数据

.NET应用架构设计—重新认识分层架构(现代企业级应用分层架构核心设计要素)

阅读目录: 1.背景介绍 2.简要回顾下传统三层架构 3.企业级应用分层架构(现代分层架构的基本演变过程) 3.1.服务层中应用契约式设计来解决动态条件不匹配错误(通过契约式设计模式来将问题在线下暴露出来) 3.2.应用层中的应用控制器模式(通过控制器模式对象化应用层的职责) 3.3.业务层中的命令模式(事务脚本模式的设计模式运用,很好的隔离静态数据) 4.服务层作为SOA契约公布后DTO与业务层的DomainModel共用基本的原子类型 5.两种独立业务层职责设计方法(可以根据具体业务要求来搭

.NET架构设计、框架设计系列文章总结

从事.NET开发到现在已经有七个年头了.慢慢的可能会很少写.NET文章了.不知不觉竟然走了这么多年,热爱.NET热爱c#.突然想对这一路的经历进行一个总结. 是时候开始下一阶段的旅途,希望这些文章可以在发挥点价值作用.     架构设计: ElasticSearch大数据分布式弹性搜索引擎使用 (推荐) DDD实施经验分享-价值导向.从上往下进行(圈内第一个吃螃蟹DDD实施方案)(推荐) 软件工程-思考项目开发那些事(一)(推荐) SOA架构设计经验分享-架构.职责.数据一致性(推荐) .NET

selenium-webdriver(python) (七) 多层框架或窗口的定位

本节知识点: 多层框架或窗口的定位: switch_to_frame() switch_to_window() 智能等待: implicitly_wait() 对于一个现代的web应用,经常会出现框架(frame) 或窗口(window)的应用,这也就给我们的定位带来了一个难题. 有时候我们定位一个元素,定位器没有问题,但一直定位不了,这时候就要检查这个元素是否在一个frame中,seelnium  webdriver 提供了一个switch_to_frame方法,可以很轻松的来解决这个问题.

Spring Boot提倡的微服务是否和多层框架(Entity,dao,service等)有冲突?

问题描述 引用 Spring4倡导微服务的架构,针对这一理念,近来在微博上也有一些有价值的讨论,如这里和这里.微服务架构倡导将功能拆分到离散的服务中,独立地进行部署,SpringBoot能够很方便地将应用打包成独立可运行的JAR包,因此在开发模式上很契合这一理念.目前,SpringBoot依然是0.5.0的里程碑版本,因此相关的文档尚不完善,本文将会以一个简单的样例来介绍基于这个项目的开发过程.http://www.infoq.com/cn/news/2014/01/spring-boot 微服

Delphi XE程序设计系列 1-主从架构, 多层到JSON和REST

Delphi XE程序设计系列 1-主从架构, 多层到JSON和REST      从桌面开发,主从架构,一直到多层架构,虽然都是广泛被接受的观念和技术,但在信息技术的实作上却从不是开放, 相容的世界.Delphi从桌面开发到主从架构都是使用自己的数据传递格式以及通讯传递架构,到了多层架构虽然使用了Windows平台上的通讯协议,例 如COM/DCOM/COM+,但是在传递的数据格式方面仍然是使用自己的架构,COM/DCOM/COM+也是MS专属的通讯协议,和其它平台上使用的 通讯协议也不一样.

Swift项目开发实战-基于分层架构的多版本iPhone计算器-直播公开课

Swift项目开发实战-基于分层架构的多版本iPhone计算器-直播公开课 本课程采用QQ群直播方式进行直播,价值99元视频课程免费直播.完整的基于Swift项目实战,手把手教你做一个Swift版iPhone计算器.(直播过程也有惊喜!)直播QQ群:362298485(直播时点击群视频即可进入直播课堂)直播时间:8月26日(周二),9月2日(周四),每天20:00-22:00欢迎咨询客服QQ:1575716557直播后希望继续深入学习了解本课程可在51CTO学院购买本课程,定价99元.购买课程更

java-分层开发模式,分层架构

问题描述 分层开发模式,分层架构 问:? 10 分层开发模式那个分层开发,Sql语句是写在数据库访问层还是说写在业务逻辑层然后将语句传到数据库访问层?或者说是将实体传到数据库访问层,在数据库访问层编写sql语句 解决方案 一般分为三层 1.表现层(UI):通俗讲就是展现给用户的界面,即用户在使用一个系统的时候他的所见所得. 2.业务逻辑层(BLL):针对具体问题的操作,也可以说是对数据层的操作,对数据业务逻辑处理. 3.数据访问层(DAL):该层所做事务直接操作数据库,针对数据的增添.删除.修改

AWS上的Serverless架构详谈

这篇文章摘录自彼得·萨巴斯基(Peter Sbarski)和萨姆·克鲁内伯格(Sam Kroonenburg)合著的<AWS上的无服务器架构>一书,概述了无服务器架构的五大原则. 彼得·萨巴斯基和萨姆·克鲁内伯格合著的<走无服务器道路>(Go Serverless)一书. 如果你问软件开发人员何谓软件架构,可能会得到五花八门的答案:软件架构"是蓝图或计划"."概念模型"或"大局",不一而足.毫无疑问,架构或缺少架构关系到软