2010-04-12 139 views
1

在我們的項目中,我們想要查詢文檔管理系統中的特定文檔或電影。 dms返回包含文檔位置的URL(例如:http://mydomain.myserver1.share/mypdf.pdfhttp://mydomain.myserver2.share/mymovie.avi)。將網址暴露給webservice

我們希望將文檔公開給互聯網用戶和內部網用戶。所請求的文件可能很大(大視頻文件)。

我們的結構是這樣的:

請求是這樣:webapp1 - > webapp2的 - > webapp3 - > DMS

響應是這樣:DMS - > webapp3 - > webapp2的 - > webapp1

webapp1可以在互聯網上。

我一直在想如何從dms中混淆真實的URL,由於安全問題。我已經看到其他web應用程序的實現,通過爲請求的文檔創建一個特定於會話和用戶的臨時文件來使pdf URL受到阻礙。所以其他用戶不能輕易猜測其他用戶的文檔名稱。

我的問題:有沒有一種模式可以將公司/用戶可觸發的數據暴露給公衆?

我們的開發是在C#3.5。

+0

在你的架構,是webapp1調用DMS,或直接暴露URI? – 2010-04-12 13:55:48

+0

Webapp 1是原始調用者,webapp2是一個具有類型化的特定合同作爲輸入的流程服務。 然後,Webapp2將此類型的requestschema轉換爲由webapp3(使用鍵值對)公開的無類型請求模式。 Webapp3是一個帶有無類型的常規鍵值模式的WCF平臺服務,並且正在調用dms並等待來自dms的答案。 – 2010-04-12 14:07:34

回答

2

處理它的最簡單方法是創建一個ashx文件(或其他創建URL的方式)並使其成爲pdf。既然WCF支持REST,你也可以通過它來做到這一點。只需將pdf加載到內存中,並將字節內容壓入響應流。

或者,你可能想看看到這些:

http://www.microsoft.com/forefront/edgesecurity/isaserver/en/us/

http://www.isapirewrite.com/

+0

這不是我們想要的。將數據推入內存是每臺服務器的內存負載巨大的原因,因爲一秒鐘內有很多很多請求,數據必須在消耗之前通過很多webapps傳播。我們希望找到一種方法,以便我們可以安全地向呼叫者公開一個URL,以便其他呼叫者無法通過URL猜測獲取相同的數據 – 2010-04-12 14:00:05

+0

要提供pdf,服務器將不得不以某種方式將其加載到內存中。它必須將它推送給客戶。無論你加載到內存中,還是讓IIS爲你做,它都會發生。 – kemiller2002 2010-04-12 14:27:09

+0

dms還可以通過url公開其內部文件位置。但我們不想將這個「內部」位置向公衆公開。 WCF服務必須複製或以字節數組形式加載文件...但在此之後,文件必須再次發佈爲新的URL位置,該位置必須僅由請求它的會話提供。 – 2010-04-13 07:12:42