2013-06-01 17 views
1

我正在從.NET驅動的Web體系結構轉移到Rails堆棧上的ruby。我習慣於擁有一個用於呈現帶有所需css/Javascript的網頁的web圖層,一個獨立的應用程序層,負責處理所有業務邏輯,ORM和DAL圖層以及數據庫以實現持久性。Ruby on Rails:如何在具有複雜業務邏輯的Rails應用程序中分離職責?

現在如何在rails中翻譯?

模型似乎完成了所有關於業務邏輯,ORM和數據訪問的工作。那麼像twitter這樣複雜的應用程序是不是使用單獨的應用程序層來進行業務邏輯?模型是否與複雜邏輯有關?如果是這樣,如果您希望在將來向其他人展示服務,將所有服務都作爲一項服務來移動並不困難?

請在一個複雜的Web應用程序中如何工作的一些事情。

+0

你能舉出一個你看到的困難之一的具體例子嗎?您將通過控制器操作訪問服務。我不明白爲什麼消費者應該關心在提供商中實施什麼。 –

+0

是的。我的查詢更多地是關於如何實施複雜的網站。 ActiveRecord是否具有自己的一套複雜的需求,對於像Twitter這樣的複雜網絡應用程序來說長期工作? 或者是業務邏輯作爲單獨的圖層移動,並且導軌用於處理路由,操作和視圖?在這種情況下,公約是否會阻礙? – gnarsi

+0

瘦身控制器,脂肪模型更像是一種不成文的規則而非慣例。你可以反過來做,但是你必須做大量的手工工作或者編寫你自己的腳手架等等。一旦你選擇或者需要開始走出軌道舒適區域,你的問題就沒有正確的答案。沒有什麼特別的理由說明爲什麼你不能有一個站點提供簡單的視圖,並且它們將它們作爲xml,yaml,json等來提供業務邏輯層。這更多的是關於你應該怎樣,而不是你。你可能會更好地問這個程序員.stackexchange –

回答

0

Rails是一個完整的MVC框架,它的M部分是用Active Record模式構建的。基本上模型包含持久層和業務邏輯。

我請你閱讀監管局目錄更多的信息:EAA ActiveRecord

最持久的部分被隱藏在框架背後,所以你不應該有太多了。但是,如果您有複雜的業務邏輯,則可以將模型分爲兩部分(持久性/業務)。你的ActiveRecord :: Base類將持久部分和你的新類作爲業務邏輯。但是如果你這樣做,它不再是一個活動記錄,而是一個Datamapper。

說到的DataMapper的,有一個altenative到ActiveRecord的稱爲DataMapper的,但我從來沒有測試過。 DataMapper website

是不是很困難,如果你想 在將來暴露給別人的服務,一切移動作爲服務?

如果服務手段webservice的答案是否定的。你唯一需要做的就是創建一個專門用於你的web服務的控制器。大多數情況下,人們在應用程序中會失去DRYness,因爲他們在控制器中放置了太多的邏輯,但是如果您的模型已經正確製作,它就不應該成爲問題。

+0

感謝您的洞察力。 – gnarsi