在 MS Web Forms 中实现业务逻辑的更好方法

发布于 2024-11-16 00:07:47 字数 737 浏览 3 评论 0原文

我使用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

紫﹏色ふ单纯 2024-11-23 00:07:47

您需要对应用程序进行分层 - 例如,在典型场景中,您可以拥有以下项目:

  • 实体(更准确地说是 DTO(数据传输对象))以及需要在所有其他层中使用的其他类/逻辑
  • 数据访问层将处理实体到数据存储的持久性
  • 业务逻辑层
  • UI 层

您已经选择 EF4 作为您的 DAL。您可以使用 POCO 实体(代码优先模型)将实体/DTO 类放在单独的项目中。就您的业务逻辑而言,将其放在业务层中,业务层实际上是一堆定义 API 的类。例如,

public static class CustomerHelper
{
   public static Customer Get(int customerId)
   {
      // do access control security
      ...
      // use EF4 to get the customer object
   }

   public static void Update(Customer customer)
   {
      // do access control security
      ...
      // use EF4 to update the customer object
   }

}

通常,业务层可以具有验证、安全检查、事务控制、业务事务所需的任何前/后处理等。

最后,您的 aspx 页面将是您的 UI 层,它将使用 BL 类来获取/更新数据。对于声明性数据绑定,您必须使用对象数据源。

You need to layer your application - for example, in a typical scenario, you can have following projects:

  • Entities (more correctly DTO (data transfer objects)) and other classes/logic that needs to be used in all other layers
  • Data Access Layer that would handle persistence of your entities to data store
  • Business Logic Layer
  • UI Layer

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,

public static class CustomerHelper
{
   public static Customer Get(int customerId)
   {
      // do access control security
      ...
      // use EF4 to get the customer object
   }

   public static void Update(Customer customer)
   {
      // do access control security
      ...
      // use EF4 to update the customer object
   }

}

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文