sar*_*ake 7 c# session business-logic
假设您有3层:UI,业务,数据.
如果Business层需要访问Sessions,这是否是设计不佳的标志?关于它的一些事情感觉不对.是否有专门针对Web应用程序定制的指南?
我使用c#2.0 .net
叹.
广泛的共识将是不对的; 业务层和控制器/网络层应该以不同的方式进行维护,因为它们是不同的问题.
事实上,你似乎把这个标记为"纯粹与现实"的问题,这个问题令人难以置信地短视而且有点令人讨厌.它也无视提问的问题; 如果你不考虑提出的意见,那么为什么要征求它们呢?
确实,事先将事情分开一点点需要更多的前期努力,更多的时间,最终可能会花费更多.你也许无法从这样做中感受到任何直接的好处.然而,数十年来大量程序员共享的大量啜泣故事表明,在可能的情况下,你所谓的"纯度"可以减少5年后的痛苦; 天哪; 你真的不得不指责并做一些重构,因为你的责任正在渗透的所有裂缝,这并不是很令人愉快.
设想Web应用程序层的稍微好一点的方法可能是考虑表示,交互,业务规则和数据; 从上到下.您的数据是数据库,数据访问等,业务规则对该数据强制执行任何其他约束,处理数据,计算等.然后交互然后在表示层(基本上是您的用户界面)和业务逻辑之间分支,执行驱动您的应用程序的用例.
到目前为止,用户界面并不重要; 如果用户在命令行应用程序中输入客户数据,或者使用存储在会话中的数据导航某些多页Web表单,则无关紧要.让我们说你选择后者; 将网络前端贴在上面.现在您关注的是编写相对简单的代码来处理检索所请求的数据并将其呈现给用户.关键是,您的Web应用程序; 前端,这是你的整个用户界面; 会议和所有.只有在您准备好说的时候,"嘿,让我们将客户数据粘贴到数据库中"您是否会调用那些精心制作的服务层,传递您的Web应用程序所获得的每一点信息藏匿; 用户输入,进行更改的用户的名称; 所有的废话.您的服务层处理它.或者,或者,母狗因为你忘记了必填字段.
因为你已经把事情彻底地分开了,你的应用程序的内容可以像其他人所建议的那样被改造(或"借用")以用于任何其他应用程序,并且服务层保持,无状态,干净并且随时可以处理的东西.它会进行验证,因此您的验证在任何地方都是一致的.但它不知道谁登录到Web前端,控制台应用程序或终端上运行的花哨的富客户端应用程序,并不关心,因为该细节仅对这些应用程序很重要.
需要添加新的验证规则吗?没问题; 使服务层执行验证,并在链中更高的位置处理用户界面问题.需要改变计算方式吗?在业务层更改它.没有别的东西需要受到影响.
我的感觉是,业务层是放置会话数据访问的唯一位置,因为它确实是逻辑的一部分。如果您将其烘焙到表示层中,那么如果您更改数据的存储位置(可以说,您不再希望使用会话状态),那么进行更改会更加困难。
我要做的是,对于会话状态的所有数据,我将创建一个类来封装该数据的检索。这将允许未来的改变。
编辑:UI 只能用于执行以下操作: 1. 调用业务层。2. 与用户交互(消息和事件)。3. 操作屏幕上的视觉对象。
我听说人们将会话数据访问视为数据层的一部分,这是语义的,并且取决于您对数据层的看法。
| 归档时间: |
|
| 查看次数: |
6534 次 |
| 最近记录: |