2010-07-29 48 views
3

我創建使用asp.net & WCF爲3層架構,其中大部分是看起來像一個社交網站上的Web應用程序文件的最好方法。用戶可以註冊系統,他們可以上傳他們的個人資料圖像,文件,視頻剪輯等。所以,我想知道什麼是存儲這些文件的最佳方式?在wcf端還是web應用端?什麼是存儲在一個(asp.net + WCF)Web應用程序

另外我想知道的是,如果我選擇web應用程序端將這些文件存儲爲一組文件夾,它如何使這些文件夾共享並允許訪問另一個不同的項目(例如桌面客戶端需要將文件上傳到該共享文件夾)?

謝謝大家提前。

回答

1

我認爲這個問題可以更好地把這樣的:

  • 保存在Web應用程序的文件夾中或附近,並從數據庫存儲在數據庫中
  • 搶保存圖像的元數據通過WCF

第二種方法很可能會相當緩慢。通過服務獲取信息,進行轉換,使用具有正確MIME類型的httphandler向瀏覽器吐出二進制流...

大多數體系結構在中間縮減:將圖像保存在關閉或中UI層,並將它們的元數據存儲在數據庫中。檢索這些信息大多隻是一堆很容易檢索的字符串。

更新了新的問題:

由於WinForms的應用程序/其他項目在你原來的問題沒有這種偏離到新的東西。在這種情況下,您可以選擇以下幾種情況:

  • 使用WCF層作爲公共場所並將圖像存儲在該服務後面。正如我所說,這將是一個額外的拉動字節數組。
  • 將圖像存儲在Web UI層中並使用服務(asmx或WCF之一)將圖像展示給winforms客戶端。
  • 爲運行web ui的服務器上的winforms客戶端以及映像所在的位置分享一份。當然,一定要尊重安全和可能的黑客行爲。

這取決於最常用的情況是什麼。我的假設是,網絡用戶界面層將主要使用和winforms將用於圖像處理?如果是這樣的話,還有ASP.NET第三方控件可用於這種操作,所以對winforms客戶端的需求會減少。

+0

好的thx.我也認爲第一種方法最適合我的應用程序。正如我在第二個問題中提到的那樣,我們可以說有一個桌面客戶端會將文件上傳到該Web應用程序中?我如何訪問那些接近UI層(Web應用程序)的文件夾? – 2010-07-29 11:03:59

+0

如果你有一個新的問題,我建議你開始一個新的線程。小到點問題有更多的機會得到體面的答案。 – XIII 2010-07-29 11:33:17

+0

好吧,我會去換新線程。請檢查此 http://stackoverflow.com/questions/3362341/how-to-share-a-folder-in-a-asp-net-web-application-with-a-win-form-client – 2010-07-29 12:20:49

1

這取決於你期望這件東西有多大。

如果這是更廣泛的互聯網,你希望它變得很大,有它在Web服務器上會使其難以通過添加新的Web服務器到Web場擴展您的應用程序。

一種方法是將物理文件上傳到網絡服務器,使用戶可以快速上傳,然後通過上傳(可能使用FileWatcher)觸發協調器後臺服務。該服務將文件傳播到Web場中的所有節點,以便後續對其他節點的請求將找到該文件。

如果它是一個小的應用程序僅用於公司內部,在Web服務器上是好的,符合下列條件:

  • 你必須在託管服務器的完全控制,這樣就可以建立適當的文件夾權限
  • 您可以編寫自己的文件保存和檢索代碼,以便它可以移動到較低層而不會太痛苦。通過一個接口並注入實現
+0

好的謝謝。這個應用程序將成爲網絡服務器的主機,它可以通過任何用戶通過互聯網訪問。問題是,如果我將它保存在WCF層(業務層)上,那麼我一直需要調用WCF服務來檢索文件。我認爲這將是一個痛苦的任務。如果我可以將文件保存在UI層中並使用WCF服務保存數據層中的文件URL,那麼它更好。 – 2010-07-29 11:23:44

+0

是的,出於性能考慮,這是一個好方法,但是您需要考慮是否有多個Web服務器。您將需要某種方式在多個網絡服務器之間共享文件。這就是爲什麼我建議與負責協調這些文件的單獨服務的組合。 – 2010-07-29 12:13:28

+0

是的,如果我有多個網絡服務器,這很有用。但我認爲沒有機會在多臺服務器上託管此應用程序。所以,我認爲XIII解決方案適合我。 – 2010-07-29 12:28:12

相關問題