2009-06-01 57 views
0

嘿,夥計們,這是我的要求:在.NET將數據推送到未知的Web服務

我有一個集中的應用程序從其他應用程序接收請求,做一些事情,然後返回數據到應用程序。這個數據最簡單的形式就是一個XML文檔。

現在,在設計時,這個中央應用程序不知道哪些其他應用程序將提出請求。

每個中央應用程序接收到一個請求時,它也將獲得一個網址,告訴應用程序中心的Web服務地址(見下文),所以中央應用程序知道在哪裏可以將數據推到:

http://someapp1.com/UpdateData 
http://someapp2.com/UpdateData 

現在,我想使用SOAP或某種RESTful實現,最好不要使用WCF。

我的問題是:

  1. 使用SOAP可我動態,在運行時,更改服務的URL,如果接口都是一樣的嗎?
  2. 如果可以,那麼我會如何以RESTful方式發佈大量XML?

回答

1

Point One)當然可以在運行時更改Web服務代理在其中交談的端點。我認爲它看起來像這樣...

ws.Endpoint.Address = new System.ServiceModel.EndpointAddress(newurl) 

在你的情況下顯然是你的「應用中心」將被調用的代理,因爲它的數據發回給你的「請求者/ recievers」。

當請求者/接收者發出請求時,它將使用代理來調用中央應用程序,但我想在這種情況下,它不需要是動態的(只有一個'中央應用程序'對吧? )

點2)不知道這樣做最聰明的方法是什麼。當然,默認情況下,您從WCF Web服務發送/接收的消息始終是XML。如果你希望服務契約保持不變,你將需要一個包裝器對象來包含數據。我想你可以嘗試創建一個具有「有效載荷」成員的對象,它可以保存你的數據。

希望這有助於

邁克爾

1

中央應用程序的工作是一種非常長期的過程嗎? 否則,爲什麼中央應用程序不公開顯示簡單地將結果作爲響應返回的Web方法,而不是啓動新的調用?

someapp1調用Central.GetMyData(PARAM)...中央工藝... someapp1接收來自中央

這SOAP響應也將有助於分離系統,這是目前建立,使大量的應用程序知道中央的API和中央知道它應該發送到每個這些其他應用程序。

+0

哎周杰倫。是的,中央應用程序是一個漫長的過程......它可能會運行數小時或數天。它本質上是一個接收任務的隊列,然後逐個處理它們。然後,它可能會在幾天後返回結果。 有什麼想法?歡呼聲 – andy 2009-06-01 05:45:50

+0

好吧,看起來邁克爾迴應了關於改變端點地址,這絕對是可行的。 至於休息,你的應用程序只打算是基於REST的,如果http://someapp1.com/UpdateData指的是一組不同的數據,和一個GET請求還給完全相同的信息,一個POST放,每時間。另一方面,如果UpdateData基本上是接受XML Central提供的任何方法,那麼您不是RESTful。 雖然這完全沒問題。 REST並不總是你所需要的...... – Jay 2009-06-01 06:23:10