2009-03-05 41 views
0

我正在使用應用程序級加密來保護敏感數據。在將其存儲在物理數據庫中之前,我需要加密該字段,並且在我將其顯示在用戶界面上之前需要對其進行解密。數據加密是否屬於存儲庫模式?

我在應用程序中應用Repository模式。

數據加密/解密代碼是否屬於Repository類的內部或外部?

我目前的想法是,當數據靜止時,加密是存儲庫的一個方面,而使用存儲庫的服務類不應該與這個加密代碼混雜在一起。

服務類負責驗證和業務邏輯,但加密算法以及數據如何在靜態存儲取決於存儲庫實現。

這是一個合理的做法還是我錯過了什麼?

回答

3

你當然不希望在服務類中加密。

從某種意義上說,你實際上當你說

但加密算法,以及如何將數據存儲在剩下的就到倉庫執行回答你自己的問題。

由於加密是數據存儲方式的一部分,它屬於存儲庫內部。

+0

+1 - 這是一個實現細節。讓存儲庫根據需要處理它。 – duffymo 2009-03-05 20:33:02

1

我會把它放在服務層。原因如下:

從業務規則/域需求的角度來看,它是對數據進行加密的要求嗎?它應該通過測試來驗證嗎?如果是這樣,你應該把它放在你放置所有其他可測試業務邏輯的地方。換句話說,在服務中。

就我而言,業務邏輯(要加密的內容,不加密的內容)不屬於存儲庫。當持久化對象被賦予存儲庫時,應該爲持久性做準備(或儘可能接近)。否則,存儲庫負責持久性實現業務規則,然後你不再真的使用存儲庫模式了......