2

在兩種不同的服務器上以兩種不同語言開發Web服務和網站是一種好的做法嗎?例如。現在我創建一個運行在同一服務器上的Glassfish和Ruby on Rails表示層上的Java Web服務。分離演示文稿/網絡服務

我想在同一臺服務器上使用Web服務,但使用運行在Passenger中的Ruby 1.9。

這是一個好主意嗎?我沒有網絡應用程序體系結構的經驗。

回答

0

如果您編寫一個消耗和生成XML的合同第一個Web服務,您可以與任何可以以適當格式發出HTTP GET或POST請求的客戶端通信。 SOAP或REST無關緊要。

我已經編寫了以XSD開頭的Java/Spring Web服務。 Yahoo UI RIA客戶端使用WSDL,發送HTTP POST來發送請求文檔,並在一個漂亮的數據網格中顯示XML響應。

0

從技術上講,是的,你絕對可以做到這一點。這是使用WS的優點之一。它們可以互操作。

但是,如果有其他人維護它,並且僅在兩個平臺之一(RoR或Java)中擁有專業知識,我會考慮這個想法。總是最好問:-)

0

就係統架構而言,是的,這是一個「良好的做法」。好的,我的意思是它實現了目標,沒有傷害,並強化了關注點的分離。

我一直在開發具有相似結構的體系結構。用戶界面是.NET並使用Java Web服務。然後,該Web服務負責與持久性媒體,第三方組件等的所有交互。

我會說在任何系統中,您應該努力從業務邏輯中抽象出用戶界面邏輯。這只是很好的問題分離。使用網絡服務來做到這一點只是一個的方式來實現這一目標。如果您將在系統中的其他用例中重用這些業務服務,我建議使用Web服務。

還有一件事;在過去的8年中在UI和WS上使用了兩種不同的技術之後,我瞭解到大部分挑戰都是組織性的,而不是技術性的。例如,很難找到那些具備維護應用程序所需技能的新開發人員。你最終必須找到一個專家,然後在其他技術上進行培訓。

0

這取決於它們有多相似。

如果您的Web服務基本上反映了您的網站的功能 - 那麼重用現有代碼並因此在同一臺服務器上使它們成爲相同的東西很有意義。

注意 - 這與纏繞層不同,因爲您的視圖仍與業務邏輯分開。

從Ruby-on-Rails的角度來看,「網絡服務」和「網站」往往是可以互換的,因爲它們是完全相同的代碼,只有視圖模板不同(html爲網站,xml爲網絡服務)。 如果您從一開始就考慮使用RESTful架構,那麼您可以通過最少的重複和所有應用程序層的正確解耦來實現此目的。