Quartet Lounge Team 2006
A dedicated team on the .Net open source frameworking.
posts - 10,  comments - 64,  trackbacks - 0

为了将业务规则从界面和数据库中剥离出来,通常的做法是抽象出一个业务逻辑层出来,专门负责对业务逻辑进行处理;一般多采用三层结构,既表现层,业务层和数据层。通常,开发的时候会将这三层耦合在一起,这样导致在用户需求发生变更,需要修改业务逻辑时,会连同表现层和数据层一起重新编译,全部重新发布;

为什么我们不能将业务层和表示层解耦,相对独立于程序之外呢?将负责实现业务逻辑的业务包转化为一个一个的组件,以插件一样的工作方式提供给业务层框架使用,当某个业务逻辑需要发生变化时,只要对该组件进行替换就可以了。最重要的是可以复用以前的资源,用以前的资源搭建项目;

整体框架如下图:


复用资源

业务逻辑独立于程序之外,存在的格式可以是:动态链接库(DLL),可执行程序(EXE)等;也可以说,业务逻辑组件也是软件,软件也可以是业务组件。

对于以前存在的成熟的资源进行复用,资源可以是程序,动态链接库等格式文件,不需要重新编译,拿来就用。例如:如果,有一套十分成熟的权限控制的资源,而在新的项目开发中需要使用到权限,那么,手中的权限控制资源,不需要和新的项目绑定,不需要重新编译,只要将其资源发布到业务逻辑容器中,表示层就可以正确使用了。

 

组装函数

客户善变的业务需求,常常导致我们会对业务逻辑组件进行修改,这样的重复的工作,只能消磨开发人员的对项目的信心和耐心!那么我们怎么才能减少修改,同时又满足客户的需求呢?我们能不能设想,业务逻辑通过外部配置,业务逻辑的修改,也可以通过修改配置文件完成,这样不是减少了对业务逻辑组件的反复修改吗?

如图:配置一个写数据的业务

 

 

 

可以对配置的业务进行修改,支持图形化的操作。这样对业务逻辑的变更,修改更容易,而且不需要修改存在的业务逻辑组件和客户端。除非是业务逻辑的重构,才会导致业务逻辑组建的重构;

组装函数是为了高度的业务逻辑组件复用。最初的思想是,希望供组装使用的函数,按一定的规则尽量细致得拆分,这样才能达到高速构建系统的目的。

分工的明确

由于业务逻辑层和表示层的彻底解耦,那么,我们可以将项目组成员细致定义为UI开发人员、业务逻辑开发人员、数据处理开发人员、模式设计人员和业务专家。各类人员的可以更专注于自己的研究领域,明晰工作范围,提高开发效率,减轻工作量;

结束语

    为了达到复用资源,我们不必去规定符合该容器的特定开发规则,在开发中还是需要发挥我们惯有的睿智,设计和复用符合项目的组件,让快乐注入到开发历程中;

在使用现有资源的情况下快速开发,既减轻了开发人员的工作量,同时又节省了项目开发的经费,何乐而不为呢? 
      新增链接:   Sloth简介(二)
posted on 2006-10-21 23:19 QuartetLounge 阅读(1694) 评论(19)  编辑 收藏

FeedBack:
2006-10-22 20:40 | 新东[未注册用户]
挺不错的一个想法, 支持LZ
 回复 引用   
2006-10-22 21:06 | withjun[未注册用户]
业务逻辑的业务包进行组件化,细化功能是否可以理解将一个大的dll 分化了多个松散藕合的dll?

不过说真的,看了三次还是不太了解LZ所说的:组装函数
“可以对配置的业务进行修改,支持图形化的操作。这样对业务逻辑的变更,修改更容易,而且不需要修改存在的业务逻辑组件和客户端”
------------------------------
理解能力有限,望LZ不吝赐教

 回复 引用   
#3楼[楼主]
2006-10-22 21:33 | QuartetLounge      
@withjun
1。类似于 工厂的流水线....将相对零散的函数,经过一定规则的业务拼凑,使其在组装后,形成新的函数
2。以前,我们写一段保存数据的程序, 会将一系列相关的类,绑定到一起

public bool svae(...)
{
DataAccess dataAccess=new DataAccess();
.....
.....
}
使用组装业务后,我们根本不会在代码中强耦合这些相关类,只是,通过图形化的设置,加上搭建业务必须的参数的来源设置,就能完成以前的业务逻辑
这样,在发生业务逻辑变更的时候,只要改动你对该业务的配置,客户端根本不需要变更
3。简单的说引入了构件化开发的思想。

接下来,我们将持续推出介绍文章及源代码,欢迎你提出宝贵意见...



 回复 引用 查看   
2006-10-22 22:13 | ec[未注册用户]
举个示例嘛,容易懂些
 回复 引用   
#5楼[楼主]
2006-10-22 22:42 | QuartetLounge      
@ec
呵呵,示例文章正在写,这不还得工作么。很快就推出,谢谢关注。。。

 回复 引用 查看   
2006-10-23 06:58 | 兰亭      
就是就是,先来个例子简单易懂
 回复 引用 查看   
2006-10-23 08:47 | Wisdom-zh      
感觉很粗糙,还不是个成熟的东西吧?
 回复 引用 查看   
2006-10-23 10:02 | noviceliu[匿名][未注册用户]
dddd
 回复 引用   
2006-10-23 13:18 | Eric[匿名][未注册用户]
re: Wisdom:
以前只是当工具使用,对于工具没有美化界面;Sloth已经投入了几个项目开发的实例了! 同时谢谢你的关注!

 回复 引用   
2006-10-23 13:24 | soa[未注册用户]
你这文章表明你已有了原始的类似SOA面向服务架构的思想,好,细化下去……
 回复 引用   
2006-10-23 14:05 | fangchongde[未注册用户]
你的框架大量使用了反射技术,效率怎么样啊。
 回复 引用   
#12楼[楼主]
2006-10-23 14:29 | QuartetLounge      
@fangchongde
反射主要是在从配置文件中获取信息后对业务对象调用时应用,Sloth中也有对象池的概念,当业务对象产生后会停留在对象池中,当再次使用时不会重复加载,但目前还没有自动销毁功能,只能由调用者显式销毁业务对象,在将来随着认识的深入会继续改进的,多谢关注。

 回复 引用 查看   
2006-10-23 14:51 | fish[匿名][未注册用户]
强烈支持。期待事例代码ing...
 回复 引用   
2006-10-23 17:13 | 飞鹰      
强烈支持。但理解能力有限,没弄懂是怎么一回事!
 回复 引用 查看   
2006-10-23 17:38 | 小风[匿名][未注册用户]
强烈支持,我也有这样的想法呢,一起开源,一起努力
 回复 引用   
2006-10-23 21:15 | white.wu      
不错的想法,期待实例
 回复 引用 查看   
2006-10-24 09:39 | taeheelive
"如果,有一套十分成熟的权限控制的资源" 很想了解~~~,
因为本人也想做个成熟的通用权限控制,包括 角色的菜单,按钮权限, 包括用户的数据权限。

 回复 引用   
#18楼[楼主]
2006-10-24 09:49 | QuartetLounge      
@taeheelive
我想您说的这个属于具体的一个业务组件。本身我们有自己的一套权限控制组件,但是也不是很完善(呵呵,完整的权限控制可能还要和流程控制相结合的),如果您有兴趣,欢迎加入我们的开发工作,我们的开源项目马上就要启动(介绍文档及代码正在完善整理中)。谢谢关注!

 回复 引用 查看   
2006-10-25 17:13 | noviceliu[匿名][未注册用户]
Good!
 回复 引用   
基于 .Net Framework 2.0 的 Runtime 业务组件管理框架完成! QQ讨论群: 27505400 演示程序及Sloth源代码发布 20061026 | QuartetLounge
昵称:QuartetLounge
园龄:5年4个月
粉丝:0
关注:0

<2012年2月>
2930311234
567891011
12131415161718
19202122232425
26272829123
45678910

搜索

 
 

常用链接

最新随笔

随笔分类(10)

随笔档案(10)

文章分类(3)

文章档案(3)

Code_DownLoad

Time

我们的OpenSource发布

积分与排名

  • 积分 - 14034
  • 排名 - 6792

最新评论

阅读排行榜

评论排行榜

推荐排行榜