繁体   English   中英

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

[英]A better way to implement Business Logic in MS Web Forms

我使用C#Entity Framework和Asp.net Web Forms 4。

目前我正在为Cms开发管理员部分,因此我必须使用许多GridView控件来对我的数据进行CRUD操作。

我使用EF作为DAL,并在每个.aspx页面内实现我的业务逻辑; 页面按文件夹进行逻辑组织。

我的BL非常简单:用户A从DB X,Y,Z获取并在GridView上显示它,而不是用户B从仅DB X获取并显示在同一GridView上。

在我的小经验中,我发现自己花了很多时间使用事件触发器Web窗体机制将我的BL角色嵌入到每个.aspx中。 我的问题是,相同的页面可能具有相同的BL,因此我必须在不同的.aspx页面中复制和粘贴我的代码。

我的问题:

  • 如何集中我的业务逻辑并在许多GridView中相应地显示数据,而无需在GirdView编码的每个页面中实现BL?
  • 我对Classes有一点了解,可以在一个Class中实现BL并使用ObjectDataSource将它附加到GridView吗? 这里的例子
  • 根据您的经验,他遇到的问题有哪些更好的方法?
  • MVC方法可以成为一种解决方案吗?

谢谢你的时间!

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

  • 实体(更准确地说是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类来获取/更新数据。 对于声明性数据绑定,您必须使用对象数据源。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM