【发布时间】:2010-12-06 00:34:23
【问题描述】:
我正在内部争论我应该在哪里处理检查数据更改,并且无法决定最有意义的做法:
- 在 GUI 中处理 IsChanged - 这需要在页面加载和数据发布之间保持数据的持久性,这可能会增加大量带宽/页面交付开销。这在 win forms 应用程序中还不错,但在网站中,这可能会对带宽成本产生重大的财务影响。
- 在 DAL 中处理 - 这需要多次调用数据库以检查是否有任何数据在保存之前发生了更改。这可能意味着对数据库的额外不必要调用可能会导致不必要的数据库查询导致可伸缩性问题。
- 在 Save() 存储过程中处理它 - 这将需要存储过程潜在地对表进行额外的不必要调用以进行检查,但会将 DAL 的额外调用保存到数据库。这可能比让 DAL 处理更好,但我的直觉认为这可以做得更好。
- 在触发器中处理它 - 这需要使用触发器(我在情绪上很反感,我倾向于避免触发器,除非绝对必要)。
- 根本不处理 IsChanged 功能 - 不仅难以处理“LastUpdated”日期,而且将不必要的数据保存到数据库似乎本身就是一种不好的可伸缩性做法。
因此,每种方法都有其缺点,我不知道哪种方法最好。有没有人有任何更具可扩展性的想法来处理数据持久性,以查看是否有任何变化?
架构:SQL Server 2005、ASP.NET MVC、IIS7、高非特定全球受众的可扩展性要求。
【问题讨论】:
-
愿意分享您的软件上下文吗?使用场景,使用的数据库,用户群等......我认为你的观点是有效的,它们对于不同的上下文/场景各有利弊。
标签: asp.net architecture web-applications scalability