2014-03-19 150 views
1

我是MVC的新手,並瞭解了這些概念。但作爲一個實際的觀點,作爲初學者,幾乎沒有消費。MVC服務的最佳實踐

MVC是一種演示模式。但是MVC也包含Controller和Model。這些是業務和數據邏輯。所以它如何在演示文稿中進行遷移。我的理解是正確的嗎?

如果我實現WCF服務/ Web Api的方法將如何?我閱讀了關於這方面的文章和論壇的主題,但我沒有清楚。

大多數說,網絡API是最好的組合,只是包含在控制器中。但是隨後該圖層如何與呈現和服務層分離?這裏服務層(Web api)專門用於MVC應用程序/ Web UI。一般不會。

我使用WCF像服務層作爲一個應用程序和業務層和數據層作爲類libariries。在這裏,我可以託管iis的服務並從任何地方訪問。 MVC應用程序中如何使用此服務?簡單地避免使用jQuery來實現控制器和模型以及簡單的使用視圖?

請給與WCF和Web API正確apporach ..

回答

2

你有幾個問題,所以我會盡力回答所有問題。

MVC是一個演示模式。但MVC也包含Controller和 Model。這些是業務和數據邏輯。所以它如何在 演示文稿本身中遷移。我的理解是正確的嗎?

controller是表示層。它確實應該像協調器一樣行事,不包含任何業務或持久性邏輯。 model當然可以有業務邏輯,但不是任何持久性邏輯。持久性與基礎架構相關,不屬於您的模型或控制器。

如果我實現WCF服務/ Web Api如何將該方法?我讀 文章和論壇的這個主題,但我沒有得到清楚

您的服務可從MVC項目分開的,雖然這是可以接受的,包括你的Web API在你的MVC項目。我個人認爲它應該是分開的。請記住,你在MVC項目中讀到的有關服務的內容可能是指DDD(域驅動設計)意義上的本地服務或存儲庫。它有很大的不同。

大多數說,網絡API是最好的組合,並且只包括在 控制器。但是,如何將圖層作爲表示和服務層分離?這裏的服務層(Web api)專門用於僅MVC應用程序/ Web UI的 。一般不會

WCF或Web API?選擇最適合您的需求和技能。無論哪種方式,我認爲最好將服務分開。同樣,不要將DDD服務與自主服務層混淆。

我使用WCF像服務層作爲一個應用程序和業務層 和數據層作爲類libariries。在這裏,我可以在iis 和任何地方訪問服務。如何在MVC 應用程序中使用此服務?簡單地避免實現控制器和模型和簡單的 與jQuery使用視圖?

是的,您可以從您的視圖的JQuery代碼或從您的控制器調用服務,這取決於您的需要。在您的MVC項目中創建一個本地服務可能會更好,該服務將聯繫您的服務和數據存儲。然後,讓您的控制器使用本地服務來滿足其數據需求。

+0

感謝朋友。就像你告訴我也讀取視圖是用戶界面,控制器是UI過程,所以都是演示文稿。模型是商業實體。我的理解是正確的嗎?我在答案中得到了答案,但在最後一個答案中一點都不迷惑您已經告訴單獨的項目對於服務很有幫助,以便可以在控制器中訪問服務。但是在最後的回答中,您再次指出,更好地在mvc中創建web api。請解釋一下。此外,如果我從視圖訪問使用jquery沒有必要添加Web引用,但在控制器中,我需要添加引用。 – Akhil

+0

你是對的,控制器和視圖是表示層。我在MVC項目中提到的「服務」不是WCF或Web API服務。這實際上是另一個抽象層(一個類),用作控制器的數據網關。它會調用外部數據源並將它們返回給您的控制器。這是一個DDD的概念。您可以使用JQuery調用您的控制器或直接調用Web API或WCF服務。 –

1

在一個簡單的應用程序,我經常看到兩個項目的解決方案,一個MVC項目的web前端和類庫的數據訪問,讓我們稱之爲「核心」。核心項目包含所有與ORM相關的類和實現接口的服務類,我們稱它爲處理業務邏輯的IService。

當一個請求到達到MVC控制器,所述控制器將調用IService拉回它需要的數據並傳遞信息到視圖。在這種方法中,您的MVC文件夾中沒有任何「模型」,但正在使用ORM模型。對於更復雜的頁面,您可以創建一個MVC模型,將ISservice返回的多個數據組合起來,並以對用戶有意義的方式呈現它們。

在一個較大的項目中,包含IService的核心項目可能是一對多的WCF或Web API服務。這爲您擴展應用程序提供了更大的靈活性,並允許您的網頁直接對數據層進行ajax調用。

在這種情況下,當一個請求進入控制器,它會還叫IService,但這種服務實際上是一個WCF或Web API服務。