2011-06-07 56 views
2

我一直在使用這個站點很長一段時間,通常可以通過瀏覽問題和跟蹤標籤來理清我的問題。但是,最近我遇到了一個很難查詢的問題 - 我希望你們中的一些人可以分享你的意見。過濾ASP.NET Web服務中的數據

由於我的問題有點難以適應單行,在標題中,我會嘗試給我一些我遇到的問題的更多細節。因此,正如標題所示,我需要過濾或限制一些響應數據,我的標準ASP.NET基於Soap的Web服務在調用各種Web方法時返回。 Web服務用於返回其他系統(數據存儲庫或多或少)所使用的數據,其中客戶端今天能夠指定幾個參數來說明如何過濾數據並返回一組完整的數據。

好吧,我認爲,只需在現有的網絡方法上添加額外的過濾選項,這需要更多的過濾應用,在服務器端進行調整,我們都準備好了 - 好吧,不幸的是,比這個更棘手一點。

我面臨的問題是我正在處理生產環境中運行的Web服務,需要對其進行擴展,以便可以將其他篩選器應用於正在調用的現有Web方法,而不會影響調用已經由客戶使用其客戶存根使用的其他系統製造。這是我有點困擾,因爲我似乎無法找到擴展當前Web服務的「正確解決方案」。

今天,過濾器作爲自定義數據結構發送,其中包含關於哪些數據應該過濾的信息,但我不確定是否可以簡單地向客戶端添加更多信息而無需破壞代碼?我的一位同事建議我可以實現一個解決方案,在該解決方案中,我將擴展服務器端的web.config,以保留一個部分,其中包含哪些數據應該被排除(過濾掉)的細節,但是我沒有找到成爲一個長期可行的解決方案 - 而且我不相信有這樣一種選擇的客戶,因爲這在某些時候可能會出錯。因此,我正在尋找的解決方案是我可以將「第二個過濾器」應用於我向客戶請求的數據的一種方式,所以不必獲取全套數據,只應該給出一小部分,它在該過濾器可以很容易地修改,並且不能影響當前的客戶端調用。

關於我應該如何解決這個問題的任何建議?

謝謝! 親切的問候, E.

+2

是有原因,你可以;噸只是創造新的客戶使用一種新的方法?新方法會接受額外的過濾器數據? – 2011-06-07 19:31:36

回答

1

一個很常見的做法是創建應用程序的另一個實例或使用部分url來表示它們連接到的端點的版本,也許虛擬目錄是日期。這種方式舊的電話將轉到舊的API,並且新的電話將進入新的API。

http://api.example.com/dostuff 

VS

http://api.example.com/6-7-2011/dostuff 
+0

感謝您的回覆!在我閱讀您的答案後,我更深入地瞭解了Web服務版本,這似乎是正確的選擇。所以,再次感謝您的快速反應,我會開始討論實施細節。 – 2011-06-08 08:04:53