我一直在設計一個文件服務器,可以從主網站卸載,並通過網絡將圖像/文件提供給客戶端。文件服務器設計方法
文件服務器的主要目標:
- 起飛從主服務器負載託管網站
- 重用現有的Web服務器的代碼庫,避免代碼/邏輯的重實現更好的可維護性
- 提高作爲可擴展性下載
- 隱藏真正的下載url路徑從用戶
通過記住上面,我可以想出兩種方法。這兩種方法的序列圖表示易於理解[序列圖的傾斜使用的道歉]。這兩種方法都不能滿足我所有的目標。
您會推薦哪些方法考慮我的目標?
有更好的第三種方法嗎?
有些差異,我能想到的:
- 方法#1會導致複製BL代碼導致可維護性的問題
- 方法2將重用代碼和集中BL降低可維護性的問題
- 方法#1會減少網絡電話,而#2增加他們
文件服務器的概念,下載的可擴展性,帶寬分佈都已經有一段時間了。請分享您的想法!
更新:
方法#1看起來非常有吸引力,因爲它需要負載關閉主服務器完全。要解決的第一個問題是代碼重複和可維護性問題。這可以通過只有一個包含Web服務和文件服務器所需功能的BL/DAC項目來克服。並且,在Web服務和文件服務器項目中引用程序集/庫。現在,只有一個BL/DAC代碼需要維護,並且還避免了方法#2中的網絡呼叫。
@Jaimal:通過文件,我指的是存儲在用戶上傳的webserver/db上的文檔。目標是讓它稍後可以擴展到託管數據中心。 – pencilslate 2009-09-09 16:30:59
@Pencilslate:嗯,上傳時,用一個guid重寫文件名,使得難以讀取url和99.99%的唯一url,將文件寫入單獨的服務器。將guidas索引列存儲在一個db中,以及其他元數據(文件名大小,類型上傳日期等)。然後當文件被請求時,使用guid抓取文件。發送repsonse流時,您可以快速將文件名重寫爲原始文件名。 因此,您已經創建了您的唯一文件名,並因此創建了唯一的d/l url,並且不必在請求時創建一個。 – 2009-09-09 22:33:28