2009-10-03 40 views
0

我正在考慮重寫應用程序的數據模型更新方法的一部分,包括登記從數據庫未來事件的支持。有沒有任何理由爲什麼這是一個壞主意?我應該限制自己接受由CRUD操作引發的事件,還是我可以編寫更多關於事件通知的業務邏輯?潛在的缺陷可能是什麼?優點和數據庫事件的利弊

回答

2

肯定使用異步方法。如果您是Microsoft SQL平臺上檢查出的

1)更改跟蹤組合可用版本的SQL> 2008年:http://msdn.microsoft.com/en-us/library/cc280462.aspx

2)SQL服務代理,您可以用註冊事件。 (1.實際使用2.引擎蓋下IIRC):http://msdn.microsoft.com/en-us/library/ms345108(SQL.90).aspx

如果你必須恢復到觸發器明確保持低觸發器的影響。例如,創建您自己的更改日誌並從其他地方處理它。不要寫更新並找出與更改本身相同的觸發器中的信息。它會減慢你的查詢很多。

也有這取決於你用什麼數據層的技術選擇:NHibernate的具有攔截器的概念,在企業框架側相同。但它們不在數據庫中運行,這有利有弊。

HTH 亞歷

0

聽起來你考慮到數據庫的事件作出反應,你的業務邏輯。如果是這樣,這確實是一個非常糟糕的主意,幾乎忽略這通常被認爲是良好的軟件設計所需的一切(分層,關注等的分離。)...

+2

這是很常見的應用程序允許用戶設置在特定項目的手錶,所以當數據發生變化,他們得到通知。有系統(通常的敏感性質)當其他人看這問題的通知在數據項,甚至尋找他們。還有其他具有自主進程的系統可以監視數據庫事件(例如SO徽章子系統)。 – APC

+0

如果事情並不少見,這並不意味着事情是好的... 但不管怎麼說:當然,我並不是說業務邏輯不應該反應,持久性有關的事件,但是,這是很糟糕的設計以耦合業務邏輯緊密結合特定的數據庫技術。業務邏輯和物理數據庫之間應該有某種抽象。 –