我正在进行内部辩论,讨论在哪里处理数据更改的问题,但无法确定最合理的做法:
1. 在GUI中处理IsChanged - 这需要在页面加载和发布数据之间持久化数据,可能会导致大量带宽/页面交付开销。在Win Forms应用程序中,这并不太糟糕,但在网站中,这可能会对带宽成本产生重大影响。
2. 在DAL中处理 - 这需要多次调用数据库以检查是否有数据更改,这可能意味着额外的不必要的数据库查询,可能导致可扩展性问题。
3. 在Save()存储过程中处理 - 这将要求存储过程潜在地对表进行额外的不必要的调用来进行检查,但会节省DAL对数据库的额外调用。这可能比让DAL处理更具可扩展性,但我的直觉告诉我这可以更好地完成。
4. 在触发器中处理 - 这将需要使用触发器(我情感上很反感,我倾向于避免触发器除非绝对必要)。
5. 根本不处理IsChanged功能 - 不仅难以处理“LastUpdated”日期,而且将数据不必要地保存到数据库似乎本身就是一种不良实践,不利于可扩展性。
因此,每种方法都有其缺点,我不知道哪种是最好的。是否有更可扩展的方法来处理数据持久性,以便查看是否有任何更改?
架构:SQL Server 2005,ASP.NET MVC,IIS7,对于非特定全球受众具有高可扩展性要求。
1. 在GUI中处理IsChanged - 这需要在页面加载和发布数据之间持久化数据,可能会导致大量带宽/页面交付开销。在Win Forms应用程序中,这并不太糟糕,但在网站中,这可能会对带宽成本产生重大影响。
2. 在DAL中处理 - 这需要多次调用数据库以检查是否有数据更改,这可能意味着额外的不必要的数据库查询,可能导致可扩展性问题。
3. 在Save()存储过程中处理 - 这将要求存储过程潜在地对表进行额外的不必要的调用来进行检查,但会节省DAL对数据库的额外调用。这可能比让DAL处理更具可扩展性,但我的直觉告诉我这可以更好地完成。
4. 在触发器中处理 - 这将需要使用触发器(我情感上很反感,我倾向于避免触发器除非绝对必要)。
5. 根本不处理IsChanged功能 - 不仅难以处理“LastUpdated”日期,而且将数据不必要地保存到数据库似乎本身就是一种不良实践,不利于可扩展性。
因此,每种方法都有其缺点,我不知道哪种是最好的。是否有更可扩展的方法来处理数据持久性,以便查看是否有任何更改?
架构:SQL Server 2005,ASP.NET MVC,IIS7,对于非特定全球受众具有高可扩展性要求。