2011-06-17 124 views
3

發送響應asp.net的網頁表單要求我有公網IP兩個web服務器,例如Server1上與IP 111.111.111.111和Server2與IP 222.222.222.222。請看圖片:如何通過其他服務器

flow diagram

有一個在服務器1一個asp.net的網頁表單。我的意圖是:

  1. 對於每一個HTTP請求到服務器1即網絡表單,Server1的只是通過請求的信息來服務器2爲邏輯處理並隨後服務器2發送響應回客戶機(即正常的瀏覽器)

我的問題是:

  1. 什麼信息 Server1需要傳遞給Server2,以便Server2能夠將響應發送回客戶端?請注意,在Server2上,有一個TcpListener實例。此TcpListener實例充當來自Server1的Webform請求信息的接收方。
  2. 什麼是合適對象(即System.Net中的類或相關命名空間,如System.Net.Sockets)在Server2處將響應發送回客戶端?這裏適合意味着能夠滿足我的意圖。
+7

我不認爲這是可能的。 HTTP是一個面向連接的協議。客戶端和服務器1之間建立連接,客戶端無法接受來自其他服務器的響應。充其量,您可以將服務器2的響應傳遞迴server1,並讓server1將響應傳遞給客戶端。 –

+0

我不得不問,到底是什麼?只是轉發請求是微不足道的,但爲什麼你想要這樣做,它不會解決任何特定的問題,是嗎? –

+0

僅供參考,「ASP.NET」是一個詞 - 沒有空格。 –

回答

1

好吧,這是一個奇怪的解決這個奇怪的問題:)

基本上我將承擔客戶端請求一個aspx頁面作爲問題,並從服務器作爲ANSWER回覆。從圖中,我將再次假設Server2是該問題的答案。

爲了答問會的工作,同時也由於互聯網的行爲,我將在2個步驟過程實現:

步驟1:客戶提出的問題和Server1上返回的網址答案。這個URL將被指向Server2。 Server2需要通過局域網傳遞此URL到Server1)

步驟2:客戶端發出請求以檢索Server2中的答案。

總之,客戶端將直接向Server1請求Webform並從Server2中檢索響應。所有操作都由客戶發起。

1

這聽起來對我來說非常可疑,就像網絡釣魚者想要做的隱藏釣魚嘗試的事情一樣。

你真的不能有一個不同的服務器發送一個響應直接返回給客戶端比直接接收到請求的人。沒有客戶會接受這樣的迴應。

如果這是一個在這裏合法經營,你需要接受請求,響應轉發回的代理。

+0

@Dee Jay - 然後使用代理服務器代替server1,或者直接刪除要求以擁有單獨的server2。 –

1

我們可能需要對您的方案更多的信息,但我不認爲Server2上可以發送響應返回給客戶端。

客戶端仍然有一個開放的套接字偵聽來自Server1的響應。

爲了完成這樣的事情,你可能需要某種形式的代理加進來。像這樣:客戶端向發送給服務器1的代理髮送,服務器1發送給服務器2,服務器2向代理髮送響應,誰向客戶端發送響應。

或者讓Server1充當您的代理。

1

那麼,客戶端通過http連接服務器1。沒關係,但你希望服務器2通過TCP進行響應。這對我來說似乎不太可能,因爲clien已經知道關於服務器2的任何信息。

您可能希望通過tcp在服務器1內部通過tcp內部連接服務器2,然後將您的響應從服務器1返回給客戶端。(例如,服務器2的行爲類似會話狀態服務器)

如果您試圖對其他故事進行負載均衡。事實上,如果你能告訴我們爲什麼你需要這樣的架構,也許你可能會得到更好的答案。

+0

http://www.west-wind.com/presentations/loadbalancing/networkloadbalancingwindows2003.asp負載均衡您還需要將緩存和會話更改爲集中式服務器。 – adt

1

如果您只是想要請求轉發,那麼只需將請求轉發到server2,方法是調用server1到server2的第二個請求。然後,您將該響應作爲server1對客戶端的響應返回。由於客戶端未連接到server2,因此無法直接與客戶端通話。

我會使用System.Net.HttpWebRequest,並根據原始請求設置HTTP標頭和內容主體(有效地重播發送給server2上的server1的完全相同的消息),然後將響應從server2返回給客戶端。

如果你這樣做,你將運行一個應用程序,只是將任何請求轉發到server2,從而運行一個虛擬應用程序。這個應用程序可以非常簡單,因爲實際上它不過是一個HTTP代理。

但是,我不得不再次問,到底是什麼?你的建立某種請求過濾機制?因爲我相信有更好的方法來解決這個問題。

2

此問題的最佳解決方案是在其他服務器上設置WCF Web服務。

ASP.NET WCF/Web服務支持與同一臺Windows機器上運行或WCF上構建的平臺上不同的Windows機器或標準的Web服務運行WCF應用程序的互操作性

審查後在MSDN上的文章:

ASP.NET Web Services

ASP.NET Windows Communication Foundation in .NET

enter image description here

+1

+1,@NitinJS:謝謝你的建議 – user774411

相關問題