CS结构的程序作三层式架构(控制层的实现)

本文探讨了在.NET环境中,如何基于预处理器、数据库实现三层架构的程序设计,包括表现层、控制层和数据层的分工。强调表现层不应直接访问数据层,并提出通过接口IMessenger实现两层间的交互,以及事务处理、异常管理和日志记录的抽象设计。欢迎读者提出建议。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目标:如题(.net中)

要求:1,三层(表现层,控制层,数据层),每一层都有明确的分工。

          2,表现层不能直接请求数据层。

          3,尽量把方式设计提炼出来(异常处理,事务处理和Log处理方式)

 

我设计的图如下:

说明如下:

图例说明:

1,黄色部分分别是表示层和数据层的抽象表示。

2,淡蓝色部分是项目需要具体实现的。

3,紫色部分是预留的接口,如果以后项目有需要,可以个别实现。

几个类的功能说明如下:

1RequestData:表现层传递给控制层的请求数据。

 

2Model:控制层计算的结果,从数据库检索,或者程序计算的结果放在KeyValueCollection对象中,同时如果表现层有相关性check,或者数据库check,这些check的结果作为Model成员(errData)也进行返回。

 

3ActionType:静态类,定义表现层所需要的动作。

 

4IProjectSupporter:个别业务共通的接口,在selfSupporter中进行实现,或者可以在

 

5RequestHandlerFactory:根据表现层的画面IDview层在初始化时候,读取配置文件到Appcontext中)获取RequestHandler对象,是RequestHandler类的工厂。

 

6RequestHandler:实现表示层的具体控制流程,它提供表现层调用控制层的统一接口方法(DoEvent)。SelfRequestHandler根据ActionType实现DoFlow方法,DoFlow方法实现了表现层到控制层的具体控制。

 

7ConcretController:提供设置和读取Model的方法,SelfController继承此类。SelfController是具体业务方法的门面。

 

8PreProcessorPostProcessor,根据现有业务,可以提供LOG操作的接口,如果实现此类,则具体的业务方法不需要关注LOG。这里存在分歧,如果写LOG在表现层实现,就不需要此类。但是可以作为接口在此保留。

    

9,这里的IMessenger主要是为了实现表现层和控制层的交互,比如,在一大段的事务中间,表现层要询问是否要做某件事情,如果要做,则控制层继续事务处理。当然,这里可以用事件来实现。

   

请大家多多指教。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值