2010-08-03 92 views
5

因此,我正在爲我的實習項目工作,並且遇到了一些磚牆問題。不幸的是,我所知道的唯一有資格在辦公室幫助我的人現在正在度假,而且Google不幸沒有幫助(或者我的搜索技能不足),所以我想我會在這裏問。關於C#,服務器,XML的問題

該項目基本上是做一個服務器來模擬一個公司(這使得手機應用程序)已經擁有。我需要做的是讓他們的一個應用程序向我的服務器發送一個請求(我將不得不修改應用程序來執行此操作,但不知道如何執行此操作),並讓我的服務器回覆該應用程序的XML響應知道如何處理。 (主要目的是讓我們可以看到當真實服務器通過在我的服務器上模擬它發送錯誤時,應用程序如何響應。)

現在,我已經有幾個示例HTTP請求及其相關的XML響應,取自應用程序和真實服務器的模擬。該應用程序使用C#編寫,目前將HTTP Web請求發送到真實服務器的在線位置,該位置使用XML響應這些HTTP Web請求。但是,我的服務器不會有在線位置,所以應用程序將不得不進行修改才能使用本地主機上的套接字。

我的問題:

1)我的老闆說創建一個XML文件與某些XML響應某些請求聯繫在一起,但我不知道他的意思或如何做到這一點。 (他說這也可以用.ini文件完成。)有誰知道?

2)一旦我有這個可以進行這些關聯的XML文件,我該如何將它合併到我的服務器中,這樣我的服務器就可以檢查它收到的請求,並根據它的有效請求表找出並找出發送回的響應?

3)如何可以修改使用HTTP的Web請求和響應使用套接字的應用程序嗎?

如果您有任何疑問/你需要爲了更好地回答這個問題的澄清,請不要猶豫,問我。

謝謝!

+2

你有沒有考慮過只是要求他澄清? #1可能意味着很多事情。 – 2010-08-03 15:17:15

+3

當您開始進入軟件之旅時,請考慮到這一點,儘可能不要違背穀物,您將浪費時間並燒燬期限。拿一個HTTP客戶端並將其轉換爲使用套接字,以便您可以使用套接字服務器是違法的,這裏的自然方法是在http上下文中實現您的服務器。最有可能使用IIS和ASMX服務。更容易的是,獲取它運行的當前服務器的副本,並修改它,以便所有請求都可以通過消息進行響應。 – 2010-08-03 15:18:45

+0

問問你的老闆,如果服務器是一個WCF的Web服務,或ASMX的Web服務,或其他。如果它是一個WCF Web服務,你的實現變得更容易了,請問他在哪裏獲得合同並開始閱讀教程。 – 2010-08-03 15:28:05

回答

1

你所描述的是一個web服務。不幸的是,他的建議是改變.ini文件中的設置,這聽起來像他們擁有一個專有系統來執行此操作,而不是使用標準ASMX(需要IIS)或WCF(它可以在IIS中運行,也可以作爲獨立服務,這聽起來像是你想要的)服務。

沒有關於他們使用何種更多信息,我不知道,你就可以在這裏得到太多的幫助。

0

問問你的老闆,如果這個客戶用肥皂通信,如果是這樣那麼只要到MSDN並找到實現的web服務ASMX教程,按照教程通過,你就會有一個外殼開始。

1

響應於問題#3:

HTTP是已經在一個特定的插座運行(通常使用端口80)的協議。 Internet套接字是用於在進程之間傳輸數據的端點。如果您想運行自己的協議,則需要在特定端口上創建一個新的套接字(使用TCP或UDP)。

但是這會要求您創建自己的客戶端和服務器,以便在它們之間交換數據。

要開始,here是一個非常簡單的客戶端 - 服務器示例在C#中使用自定義套接字。

祝你好運!

0

首先我想說,這聽起來像你有一些不明確的要求,你可能應該與你的老闆澄清。如果你不確定他的意思,你應該找出答案,因爲沒有什麼比支持某人對需求的創造性解釋更有吸引力。

1)聽起來像你的老闆只是想要一種方法來輕鬆地更改測試關聯而無需重新構建應用程序,因此他要求您將這些關聯存儲在可輕鬆修改的xml/ini文件中。在c#中,你可以輕鬆地在XML和DataSet對象之間切換,所以這應該是微不足道的。我會先在DataSet中創建數據結構,然後使用DataSet的GetXml方法輸出xml格式。

2)在.NET中,您可以將對象存儲在緩存中,並創建一個文件關聯的緩存依賴關係。因此,只要文件被修改,緩存就被清除。每當你的程序處理一個請求時,它從Cache中取出對象,如果對象不在Cache中,那麼你有一個條件塊從磁盤上的xml/ini文件重建它。我會將該條件塊調用到一個函數中,然後將上述xml格式加載到數據集中,然後將數據集存儲在具有高速緩存依賴性的高速緩存中。 3)如果你試圖測試一個應用程序I/O,修改它以使用不同的傳輸層聽起來是個不好的主意。如果應用程序當前通過HTTP發送請求,則只需路由HTTP請求。我懷疑應用程序可能在某處定義了它當前調用的Web服務的路徑,一旦知道該路徑是否可以更改它,或者如果這不可行,請在運行該服務器的服務器上設置DNS規則應用程序將其路由到您的應用程序的位置。在Windows上,這就像向主機文件添加一行一樣簡單。