在 MS Web Forms 中实现业务逻辑的更好方法
我使用 C# Entity Framework 和 Asp.net Web Forms 4。
目前我正在开发 Cms 的管理员部分,因此我必须使用许多 GridView 控件来对我的数据进行 CRUD 操作。
我使用 EF 作为 DAL,并在每个 .aspx 页面中实现我的业务逻辑;页面按文件夹逻辑组织。
我的 BL 非常简单,例如:用户 A 从数据库中获取 X、Y、Z 并将其显示在 GridView 上,而用户 B 仅从数据库中获取 X 并显示在同一个 GridView 上。
根据我的一点经验,我发现自己花费了大量时间使用事件触发器 Web 表单机制将我的 BL 角色嵌入到每个 .aspx 中。我的问题是相同的页面可能具有相同的 BL,因此我必须将代码复制并粘贴到可能不同的 .aspx 页面中。
我的问题:
- 如何集中我的业务逻辑并在许多 GridView 中相应地显示数据,而不在每个编码 GirdView 的页面中实现 BL?
- 我对类有一些了解,在类中实现 BL 并使用 ObjectDataSource 将其附加到 GridView 是否有意义? 示例
- 根据您的经验,解决此类问题的更好方法是什么?
- MVC 方法可以作为解决方案吗?
感谢您抽出时间来讨论这个问题!
I use C# Entity Framework and Asp.net Web Forms 4.
At the moment I'm developing the Administrator section for a Cms so I have to work with many GridView Controls for CRUD operations on my data.
I use EF as DAL and I implement my Business Logic inside every .aspx page; Pages are organized logically by folders.
My BL are pretty simple like: for User A takes from DB X, Y, Z and display it on a GridView instead for User B takes from DB only X and display on the same GridView.
In my little experience I found my self spending a lot of time in embedding my BL Roles inside each .aspx using Event Triggers Web Form Mechanism. My problem is that same pages could have the same BL and so I have to copy and paste my code in may different .aspx pages.
My questions:
- How can I centralize my Business Logic and display data accordingly in many GridView without implement the BL in every page where the GirdView is codeded?
- I understand a bit about Classes, could make sense implement BL in a Class and attach it to a GridView using the ObjectDataSource? Example here
- In your experience what is the better approach to his kind of problems?
- Could MVC approach be a solution?
Thanks for your time on this!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您需要对应用程序进行分层 - 例如,在典型场景中,您可以拥有以下项目:
您已经选择 EF4 作为您的 DAL。您可以使用 POCO 实体(代码优先模型)将实体/DTO 类放在单独的项目中。就您的业务逻辑而言,将其放在业务层中,业务层实际上是一堆定义 API 的类。例如,
通常,业务层可以具有验证、安全检查、事务控制、业务事务所需的任何前/后处理等。
最后,您的 aspx 页面将是您的 UI 层,它将使用 BL 类来获取/更新数据。对于声明性数据绑定,您必须使用对象数据源。
You need to layer your application - for example, in a typical scenario, you can have following projects:
You are already made choice of EF4 as your DAL. You may use POCO entities (Code-First model) to have your entity/DTO classes in a separate project. As far as your business logic goes, put that in business layer which is actually bunch of classes that would define API. For example,
Generally, business layer can have validations, security checks, transaction control, any pre/post processing needed for the business transaction etc.
Finally, your aspx pages will be your UI layer that would use BL classes to get/update the data. For declarative data-binding, you have to use object data source.