One of the recent queries I received was asking me on MVC design concept in Dynamics CRM.
As a prerequisite to this article, I had to sharpen my memory on MVC from MSDN link:
The Model-View-Controller (MVC) pattern separates the modelling of the domain, the presentation, and the actions based on user input into three separate classes [Burbeck92]:
· Model. The model manages the behaviour and data of the application domain, responds to requests for information about its state (usually from the view), and responds to instructions to change state (usually from the controller).
· View. The view manages the display of information.
· Controller. The controller interprets the mouse and keyboard inputs from the user, informing the model and/or the view to change as appropriate.
The above link is a refresher for me more than for the article. Now I want to iterate how as a design approach in the product architecture CRM is clearly having this layering in place:
· Model Layer for CRM: CRM has a separate SQL layer which takes care of database related operations. It has built in stored procedures, views, functions, etc. which constitutes the model layer for CRM.
· View Layer for CRM: Implemented as ASPX pages, the presentation layering in CRM is implemented separately and product gives us features to implement forms, views, etc. with GUIDED USER INTERFACE.
· Controller Layer for CRM: I will like to put this one as a mix of standard controller (web service calls, product does on itself for out of box functionalities. But, it also lets us extend them via Plugins, Workflows, Actions, etc.
Considering a custom CRM application:
CRM web services form the controller area here, the three cylinders marked below form the database layer. Other components can also be classified into separate tiers.
Hope it helps and Happy CRMing!