2012-08-11 64 views
-1

如果您有用於執行文件(如CSV,Excel,Text,專有格式等)的導入和導出的C#類(可以是任何其他面嚮對象語言),在哪個層(數據訪問層,業務實體層,業務組件層,...)你把這些類嗎?文件導入/導出:什麼層?

謝謝!

下面是這個問題的上下文:我正在製作一個程序,用戶可以從文件(KML,Excel,Text文件...)中導入「地理信息」數據(GPS位置,...)。用戶還可以將數據(全部或從選擇)導出到這些相同的文件格式,因此用戶可以使用應用程序編輯數據,並使用Google地球可視化結果。 導入/導出僅在用戶點擊應用程序中的相應按鈕時進行。然後它打開一個彈出窗口,允許用戶選擇導入/導出選項,例如要忽略的數據類型,...

+1

我會說如果你正在讀寫這些文件中的持久數據,那麼它們屬於數據訪問層。 – 2012-08-11 16:05:14

+0

謝謝你的快速回答。當爲用戶使用而導出文件時,此規則是否也適用,而不僅僅是爲應用程序本身保留數據? (例如,如果應用程序數據存儲在數據庫中,導出的文件僅用於打印或與第三層應用程序兼容,而導入的文件用於在應用程序數據庫中添加數據) – Jack 2012-08-11 16:11:00

+0

似乎這個問題會更好託管在http://programmers.stackexchange.com/ – 2012-08-11 16:15:25

回答

0

在某種程度上「取決於」。我會像任何其他數據訪問一樣查看導入/導出,並將執行低級導入/導出的代碼放入數據訪問層。

1

以上都不是。以外部格式導入數據是一項數據維護任務,這是您嘗試儘快完成的一個必要的惡習。運行此代碼的觸發器是外部的。也許一個FileSystemWatcher會將新的.csv文件添加到目錄中。屬於服務或計劃任務的工作種類。或者是一個手動啓動的小工具,任何事情都會發生。您的主線代碼應該只關注存儲在dbase中的熟化數據。

+0

感謝您的回答。我更新了我的問題的描述以添加上下文。沒有特定的觸發器來運行導入/導出代碼,只有用戶點擊。當您說主線代碼應該只關注存儲在數據庫中的數據並且可以使用實用程序時,是否意味着導入/導出過程應實際上直接與數據庫交互,並且不應使用業務實體? – Jack 2012-08-11 20:41:35