2009-04-28 56 views
3

我有2個網站(www.mysite1.com和myweb2.com,這兩個網站都在ASP.NET與SQL服務器作爲後端),我想從一個站點的數據傳遞到another.Now我很困惑,是否使用Web服務或形式發佈(從mysite1到一個頁面中myweb2)Web服務,表單張貼

任何一個可以告訴我這兩者的優點和缺點?

回答

3

Webservices是SOAP messages(SOAP協議使用XML來回傳遞消息),所以你的服務器兩端必須理解SOAP以及你想在它們之間談論的任何擴展,並且它們可能(但沒有to)能夠蒐集WMDL文件(「解釋」各種服務端點和可用的遠程功能)。通常我們稱之爲SOAP/WS- *堆棧,重點在於'堆棧',因爲有幾個軟件需要可用,並且SOAP調用越複雜,這個堆棧就越需要可用和維護。

使用POST,在另一方面,大多與RESTful behaviours相關聯,並且作爲這樣的協議的一個例子,看看爲HTTP。在POST內部,您當然可以發佈複雜的XML,但人們傾向於使用普通POST來簡化調用,並使用HTTP responses作爲回覆。你可能不需要任何額外的軟件,因爲即使不是所有的webkit都有HTTP支持,也是如此。如果你想知道,我自己的偏見傾向於REST。通過使用HATEOAS,您可以爲自我感知系統創建真正良好的基礎架構,與SOAP方式相比,它們可以通過負載和可用性實時修改自身,並且它位於參數的核心位置它; HTTP是針對大型分佈式網絡而設計的,用於處理性能和穩定性。 SOAP往往是一站式的,如果它打破了你的東西。 (同樣,記住我的偏見,我在我的博客上寫了很多,特別是the architecture sideimpact of SOA vs. ROA。:)

關於哪個更好,我只能說「它完全取決於你想做什麼,你喜歡做什麼,你需要做什麼,你的環境,你的體驗,太陽和月亮的位置以及我的貓的心情。 「呃,意思是很多。

我對所有這些問題都進行了健康的討論,但我傾向於認爲SOAP是一種改造; SOAP是一個帶有標題和正文的信封,如果聽起來很熟悉,那麼HTML就是如此設計的,這是很少有人傾向於看到的。 HTTP作爲一種轉移東西的協議已經得到很好的理解並得到了很好的支持,SOAP使用它來轉換他們的XML信封。轉換SOAP和HTML之間有真正的區別嗎?嗯,是的,最大的區別是SOAP重新發現了HTTP(緩存,可尋址性,狀態,縮放)的所有細節,然後僅使用HTTP來傳遞消息,而不是其他任何東西,並讓堆棧本身必須處理所提到的那些好處早。所以,HTTP的許多優點在另一層被忽略和重新創建(因此,您需要一個SOAP堆棧來處理它),這對我來說似乎是浪費,無知和增加了複雜性。

接下來就是你想要做的。對於非常複雜的事情,有很多標準的web服務棧(我認爲這些日子大概有1200頁)可以幫助你,但是如果你的需求比較溫和(即不是認真複雜的安全性的,例如)一個簡單的POST(或GET)請求和帶結果的信封可能已經足夠好了。您可能知道HTTP的結果是HTTP內容類型,因此已經支持很多,但您可以創建自己的例如application/xml + myformat(或者更準確地說,application/x-xml + myformat,如果我沒有記錯的話) )。獲取請求,如果它是響應代碼200,並解析。

兩者都有效。一個是沉重的(WS- *堆棧),取決於你的需求,另一個更輕量且已經被支持。正如他們所說,剩下的就是膠水。

0

從我的一點經驗我會說,你會使用web服務,因爲你可以看到在你的代碼中的服務的方法和結構,一旦你在recieving最終是創造它是最好的。

而且使用的形式張貼methos將艙單,你必須是不是做一個Web服務調用整齊提交的虛假表格。

你的第三個辦法是讓數據庫說話,但我猜他們是完全不同的,不能「看到」對方?

+0

沒有必要僞造表單提交。表單提交只是一種後期處理方法。在.NET中,使用HTTPWebRequest類發送POST和GET方法同樣很容易(http://www.netomatix.com/httppostdata.aspx) – 2009-04-28 12:02:54

5

通過web服務我假設你的意思是基於SOAP的Web服務?

無論如何,兩者都是平等的,沒有什麼優勢。發佈更輕量,而SOAP標準化(有點)。我會選擇更加寧靜的方法,因爲我認爲SOAP對於簡單任務來說開銷太大,而沒有提供太多優勢。

1

我會說web服務絕對是最好的選擇。一些親的:

  • 如果將來您需要添加其他網站,您的基礎設施(web服務)已經存在
  • 跨站點的形式發佈可能會使用cookie時給您的問題或 可能引發瀏覽器隱私限制
  • 如果您使用的形式發佈,你必須 遍地 寫一遍相同的代碼,而使用的web服務 你寫的代碼一次,然後 在多個地點使用它。 易於維護,編寫的代碼少於 。
  • 可維護性(這是關係到 上述點)ofcourse,所有相關的交換數據 代碼 都在一個位置(您的Web服務)

還有可能更大。像設計時支持/代碼完成一樣。

0

我會建議一個Web服務(或WCF)。正如Beanie所說,通過服務,您可以看到服務的方法和類型(您公開的),這將使數據更輕鬆,更清潔地移動。

0

我同意AlexanderJohannesen關於SOAP webservices或RESTful apis是否更好是有爭議的,但是如果兩個站點都在您的控制之下並且使用asp.net完成,那麼絕對要使用SOAP webservices。 Visual Studio提供的用於創建和使用Web服務的工具非常棒,它不會花你幾分鐘時間在兩個站點之間創建鏈接。

在您希望接收通信的站點中,通過選擇VS中的添加項目來創建Web服務。選擇Web服務並進行適當的命名。然後用你想要實現的邏輯創建一個方法,並添加屬性[WebMethod],例如。

 
[WebMethod] 
public void AddComment(int UserId, string Comment) { 
    // do stuff 
} 

在你的測試服務器上部署這個,比如tst.myweb2.com。

現在在消費方(www.myweb1.com),選擇添加Web引用,將url指向我們剛剛創建的web服務的地址,爲其指定名稱並單擊添加refence。您有一個代理類,您可以像調用本地類一樣調用代理類。易如反掌。