簡體   English   中英

在DDD中,用戶在哪里保存生成的文件?

[英]In DDD where to save generated files by user?

我的項目中具有以下架構:

UI->應用程序->域->基礎結構 (4層)

我需要允許用戶上傳圖像,在哪里保存用戶生成的文件的更好位置? 在UI項目的文件夾中?

更新:

這是我的文件夾結構:

在此處輸入圖片說明

感謝您的回答,但我也想知道將物理文件保存在哪里。

更新2:

我的應用是CMS,這些圖像是用戶生成的內容。

讓基礎架構處理這些細節。 如果需要任何形式的驗證或業務規則,則只需像常規數據一樣對其進行處理,因為僅此而已。 唯一的區別是您可能會將這些數據保存在其他位置,但這只是實現細節。

稍后,您可能想要將這些文件存儲在數據庫中或版本控制中...仍然可以抽象到基礎結構層的實現細節。

更新:好的,將文件實際保存在驅動器上的位置。 如果是我,則不要將它們與我的代碼混合存儲,因為這看起來可能會很快變得復雜。 假設您想開始將這些文件存儲在版本控制中,現在您將一個版本控制系統中的代碼與另一個版本中的數據混合在同一位置。 我可能會選擇一個至少與您的代碼分開一點的地方:

兩個想法:

Venus.Application
Venus.Domain
Venus.Infra
Venus.Tests
Venus.UI.Web
Venus.Files (or Data)

要么

Venus.Application
Venus.Domain
Venus.Infra
    \Files (or Data)
Venus.Tests
Venus.UI.Web

我確實做了類似上載用戶xml文件的操作,並且確實將文件保存在第二個文件夾中,並且可以正常工作一段時間,但后來我決定最好將這些文件作為文本存儲在數據庫中。然后僅在需要導出時才寫出。

我認為這取決於要上傳的圖像文件的特征。 它們的預期用途是什么,需要保存多長時間。 對於不需要長時間存在的短期圖像,TEMP是它們的絕佳位置。

如果它們是長期/永久文件,那么您需要考慮一下它們如何適合您的域模型。 如果您的域集中在處理用戶圖像上,那么也許他們應該在您的Domain文件夾中保留一個位置(請記住,您不能忘記將用戶上傳的文件復制到無法從用戶公開訪問的位置的安全性方面)網絡服務器,但我假設您正在處理)。

但是,如果這些圖像對域不是很重要,並且可能被用於美化/自定義用戶的Web體驗,那么它們可能屬於UI文件夾中的某個位置。

DDD旨在設計一種解決方案,以盡可能緊密地對問題域進行建模。 您應該最好地了解自己的領域,並根據自己的最佳判斷。

關於將它們物理存儲在何處,我個人將它們作為二進制存儲在數據庫提供的一種二進制數據類型中,從而將它們存儲在數據庫中。

您可以在對象/ DTO上簡單地擁有一個Image屬性,在保存時將其轉換為字節。

根據我的經驗,將所有用戶數據保留在數據庫中而不是使用物理文件的麻煩要少得多,因為您不必擔心唯一的文件名,權限,並且移動服務器/部署等更為容易,因為它們全部包含在數據庫中,您可以輕松備份和移動。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM