20

At my company we're about to build a new site using ASP.NET MVC. My boss (marketing guy) would like to know some more about the technology so I've tried to find a really good, simple and pedagogical presentation of the MVC concept without any luck. Most of them require quite a lot of basic knowledge in programming.

Any suggestions for a good video, slides or other?

GEOCHET
  • 21,119
  • 15
  • 74
  • 98
hbruce
  • 934
  • 4
  • 11
  • 21
  • 1
    Are you sure MVC is the right platform for your new website? How did you come to choose MVC over WebForms? Answering that question can help when describing to marketing why you're using MVC. – Todd Smith May 19 '09 at 14:18
  • 3
    Why on earth do marketing need to know about MVC? Even if he is your boss and has no clue about working with these technologies then there'd no need, surely? What really matters is that the use of MVC is improving the work flow by providing a platform to improve testability. – Kieran Senior May 19 '09 at 14:45
  • Look at this for a very simple layman's terms explanation of MVC: http://stackoverflow.com/questions/2626803/mvc-model-view-controller-can-it-be-explained-in-simple-terms – Faizan Jun 04 '13 at 17:53

12 Answers12

20

Craig Strong has a pretty nice article about MVC in general and how to explain its benefits to business. Check it out here: Updated link.

Define MVC in layman’s terms

Remember you’re technically minded and close to the code. MVC to you is as clear as day, but saying to the business ‘Model, View, Contoller’ could give them the impression that you are suffering from some form tourette syndrome. MVC won’t mean much to the business even after you define them in relation to the code. To get the business to understand why this is the answer and least of all what it is, can be more of a task than expected in my experience. Even some fellow developers have difficulty understanding this on occasion.

To get the listener to understand what MVC is and why it works what I have tried in the pass is to apply MVC to a different industries where the listeners have had more involvement. An example that has worked for me in the past in a comparison to the property or even the vehicles. Most people have had dealing’s with builders, carpenters, plumbers, electricians or have watched the flood of property shows on the TV. This experience is a good platform to use and to explain why separation such as MVC works. I know you’re probably thinking that won’t work as it’s not the same as in software, but remember you’re not trying to train the business to become developers or have an in depth understanding of MVC, simply explaining to them that separation in production is required and that’s what an MVC structure offers.

To give an example of how you could describe this I have very briefly explained how separation works in property. Keep in mind this is focused on using the system not developing which could be a completely different angle of explanation.

View

The view in MVC is the presentation layer. This is what the end user of a product will see and interact with. A system can have multiple views of all different types ranging from command line output to rendered HTML. The view doesn’t consist of business logic in most clear designs. The interface is fit for purpose and is the area of interaction. Therefore you could simply output HTML for consumers to interact with or output SOAP/XML for businesses to interact with. Both use the same business logic behind the system otherwise known as the models and controllers.

In the world of property you could think of the view as the interior of a property or the outer layer of a property that the inhabitants interact with. The interior can be customised for purpose and the same property can have many different types of tenants. For example a property of a particular design could contain residential dwellings. The same internal space could easily be used as office space, where although in the same property has a different purpose. However the property structure is the same. Therefore the environment in which the users interact does not interfere with the structure of the building.

Controllers

The controller is where the magic happens and defines the business application logic. This could be where the user has sent a response from the view, then this response is used to process the internal workings of the request and processes the response back to the user. Taking a typical response where a user has requested to buy a book. The controller has the user id, payment details, shipping address and item choice. These elements are then processed through the business logic to complete a purchase. The data is passed through the system into the model layer and eventually after the entire request satisfies the business definitions, the order is constructed and the user receives their item.

If we compare this to a property, we could compare the ordering of a book online to turning on a light switch. A tenant will flick the switch to on just like ordering a book. The switch itself is an element in the view layer which sends the request to the controller just like clicking a checkout button on a web site. The business logic in this case is what the electrician installed and are embedded within the property designs. The switch is flicked, which completes the circuit. Electricity runs through all the wires including the fuse box straight through to the light bulb. Just like the user receiving a book, in this case the tenant receives light. The whole process behind the scenes involving the electricity cabling is not visible to the the tenant. They simply interact with the switch within the space and from there the controller handles the request.

Models

The models in MVC are the bottom most layer and handle the core logic of the system. In most cases this could be seen as the layer that interacts with the data source. In systems using MVC, the controller will pass information to the model in order to store and retrieve data. Following on from the example above controller definition, this is where the order details are stored. Additional data such as stock levels, physical location of product of the book amongst many things are all stored here. If that was the last book in stock ordered, the next request for this item may check if it’s available and disallow the order as the item is no longer available.

Sticking with our example of turning on a light switch, this level in our structure could be the electricity supply. When the tenant flicks the switch, the internal circuit must request electricity to power the request which is similar when the user requested data from the database, as in data is needed to process a request. If the dwelling isn’t connected to an electric supply, it cannot complete the process. Business benefits from using MVC

After you get the message across explaining what MVC is, you will then have to see what benefits can be obtained from it. I’m not going to go into a huge amount of detail here are I’m sure you can apply benefits more accurately which are directly related to you actual situation. To list just some of the common benefits of an MVC based system here are a few examples:

  • Different skill levels can work on different system levels. For example designers can work on the interface (View) with very little development knowledge and developers can work on the business logic (Controller) with very little concern for the design level. Then they simply integrate together on completion.
  • As a result of the above separation projects can be managed easier and quicker. The designer can start the interfaces before the developer and vice versa. This development process can be parallel as opposed to being sequential therefore reducing development time.
  • Easy to have multiple view types using the same business logic.
  • Clear route through the system. You clearly know where there different levels of the system are. With a clear route of the system, logic can be shared and improved. This has added security benefits as you clearly know the permitted route from the data to the user and can have clear security checks along the route.
  • Each layer is responsible for itself. (Relates to point 1) This means that you can have clean file structure which can be maintained and managed much easier and quicker than a tightly couple system where you may have lots of duplicate logic.
  • Having a clear structure means development will be more transparent which should result in reduced development time, maintenance problems and release cycles if applied properly.
Saravana Kumar
  • 140
  • 2
  • 16
Scott Arrington
  • 12,325
  • 3
  • 42
  • 54
  • For some reason the direct link is broken, but search shows the article content: http://c6s.co.uk/?s=%22how+to+explain+mvc%22&x=0&y=0 – Scott Arrington Apr 02 '12 at 18:39
  • You should post the content of articles directly into your answer and link back because, well, links die. – Oscar Godson Apr 08 '12 at 04:49
  • Direct Link (as of today): http://www.strongandagile.co.uk/index.php/a-really-simple-explanation-of-mvc/ – neuquen Aug 26 '13 at 14:53
6

M-V-C Think of it as: "Order Details (including Customer & Employee info)", "HTML/ASP Form (to display the OrderDetails)" and "Order details service class (having methods to SaveOrderDetails, GetOrderDetails etc.).

The Model (Data Class e.g. OrderDetails)

  1. The data you want to Display

The Controller (Service class)

  1. Knows about the Model (Order Details)
  2. Has methods to manage the Model
  3. And as such can be unit tested Its Single Responsibility is to manage the OrderDetails CRUD operations.
  4. It knows NOTHING about the View

The View (ASP Page)

  1. Displays the Model (OrderDetail's ViewData).
  2. It has to know about the Model's structure so it can correctly display the data to the users on screen.
  3. The View's structure (style, layout, HTML etc., locale) can be changed at anytime without it changing anything in the application's functionality.
  4. And as such, many Views can display the same Model in many different ways.
  5. In multi-tenant web applications, Customer specific Views can be stored in a database table and displayed based on Customer information
Tawani
  • 11,067
  • 20
  • 82
  • 106
4

You have to explain the benefits of ASP.NET MVC, not the features

  1. You have control over your URLs -- that means SEO for the site will be better -- that means your site will be higher in google

  2. The code is cleaner, which means that it's easier to change, which means that you can add features faster

etc.

How do you save money, make money, reduce risk? That's what your boss wants to know.

Lou Franco
  • 87,846
  • 14
  • 132
  • 192
  • Yes, benefits will persuade much better than features. That is marketing 101. – TWA May 19 '09 at 14:49
  • 1
    +1. So many of these answers involve trying to teach the marketing guy the MVC design pattern. He doesn't care. He wants to know how this technology will make him more money, save him money, or get him more customers. – Grant Wagner May 19 '09 at 15:00
  • 1
    Pretty URLs have business value -- google can read them, understand and index them. Keywords in URLs are considered to be important. URLs that are understandable are a usability benefit to advanced users – Lou Franco May 21 '09 at 12:50
2

Imagine a control room in a factory, the model is the machine itself, the monitoring equipment is the view and the instrument panel is the controller. You could have several different control rooms for the same machine and changes in the controls in one control room would reflect on the monitors in all control rooms.

The point is that you should only model once and then view or control however is most convenient.

Stefan Thyberg
  • 3,445
  • 3
  • 23
  • 29
2

The model is the data access layer, which can just be a wrapper for a few simple queries to an ORM that manages the data entity relationships itself. It handles communication to the data source, retrieves data and usually organizes it into objects defined in your application.

The views are just html files with bits of html and css with some templating engine (smarty, mako, etc) code to display the data passed to it the way you want.

The controller puts it all together. Requests made to your page will be routed to a controller (class) and an action (method) within the controller. Just like any other application, the action will do what's requested of it, but it's still part of the controller.

So, the controller uses the model to query data (users, content, etc), then passes the data to a view to be rendered and displayed the way you want.

scottm
  • 27,829
  • 22
  • 107
  • 159
  • Views are not html files, but instances which render html templates. What you call "controller" is actually a `PRESENTER`. You've described Model-View-Presenter pattern. – Yang Mar 09 '13 at 06:35
1

I wouldn't try to explain the technology to him, I'd try to explain what the MVC architectural principle is all about.

MVC was designed to separate concerns. Plain and simple. Explain to him that when you build anything that what you're building can be classified in two different categories: what the business need is (the domain), and everything else.

MVC separates the Domain from the everything else by introducing layers to separate out the concerns. M is for Model, which is your domain. V is for View, which is the visible part to him, what he sees. C is for Controller, the part that controls what is going on in between the Domain and the View.

Joseph
  • 25,330
  • 8
  • 76
  • 125
1

The marketing guy would just be interested in the "V" part, the View. Depending on how you design things, the View would just be basic HTML/CSS "templates" that the marketing person could modify. Technically without breaking anything.

Ideally the Model (database) and Controller (logic) shouldn't care if the View (presentation) is XML, HTML, text, etc. The marketing person shouldn't care what the Model and Controller do, except for requesting additional functionality.

Going further with the "ideal", you should technically be able to replace ASP with PHP, Java, Ruby, etc as the Controller without touching the Model or View.

Brent Baisley
  • 962
  • 1
  • 6
  • 4
0

You can very easily do this, that is if you understand marking speak. I dont but I imagine it would go something like this...

This should be use. MVC (if done right) will allow you to decouple the UI from the data (model) and control of the UI (controler). This will allow the UI to be more flexible which will in turn allow to better market it self faster.

TStamper
  • 30,098
  • 10
  • 66
  • 73
Tony
  • 1,684
  • 1
  • 18
  • 29
0

This is a pretty simple one

http://en.wikipedia.org/wiki/Model-view-controller#Pattern_description

The best way I can thing of is that the model is the data representation, the view is the presentation to the user and the controller is what collects user interaction that changes the model.

Scottie T
  • 11,729
  • 10
  • 45
  • 59
Robbie
  • 209
  • 1
  • 3
  • 10
0

To a marketing guy, perhaps the best way to explain the reason for ASP.Net MVC is the ability to broaden your product's reach.

By using MVC, the code is already separated in a fashion that will let you more easily build an interface that feels natural on a desktop, and then the different interface that caters to a general mobile device user, and a still-slightly-different interface that caters to an iPhone user, without risking the backend code getting out of sync and introducing subtle and company-harming bugs. And, if there's a smart client desktop app that could be a product... it, too, can rest on the same codebase.

The Model is "how things work inside the box". The Controller is "what you can touch on the outside of the box" and the view is "what comes out of the box"...

Tetsujin no Oni
  • 7,300
  • 2
  • 29
  • 46
0

The most important thing for your marketing guy is money, budget, TCO ...

When you don't use MVC you usually mix design, application logic etc. alltogether.

Programmer then must know html design, programming etc... That could mean you need powerful professional to do it all.

if you use MVC, everything is divided into "separate parts". Html coder can prepare html layer, programmer only works with application logic etc...

MVC brings better granularity and everybody can focus on what he or she can do the best!

Listen, for example xhtml validity and css cleanliness is so hard that there is a lot of people who focuses only on this while lot of browsers and platforms compatibility on mind.

Usually one person is NOT the best asp.net programmer, xhtml coder in one ;-)

RomanT
  • 364
  • 3
  • 10
-1

The important word in the title of the manager in this case is "marketing." He is a Marketing manager. The concerns one has as a marketing manager have to do with strategy and tactics. These two are not the same thing. Strategy is the big picture word that embraces among other things how a company conceptually addresses customer needs and how the company differentiates itself from its competition. Strategy is typically not what software can portray to a user. Tactics, on the other hand, are the direct methods or approaches that a company takes in winning the business of the customer. Tactics tend to change far more frequently than strategies, and it is likely that the marketing manager, when he asks what advantage MVC may give him, is really asking, "How rapidly can you change whatever it is that you create into something that conforms to new realities in the way we have to deal with customers." In other words, how quickly can you change an offer of "buy 1 and get 1 free" into "buy 2 on Friday and get 1 on the following Tuesday if it is raining in Albany."

Marketing management is about results measured in dollars and cents, not finery and nuanced explanations that are littered with conceptual words lacking any real specificity. Everything a programmer may say might make sense to himself, but a marketing manager needs to know the real likelihood of rapid response to changing customer perceptions or rapid implementation to a different approach to selling to the same customers. He needs to know if it will cost more than an existing method because if he sells $1 million more in product while spending $1.25 million in software development, he will probably lose his job.

So, in short, he is looking for flexibility and cost-effectiveness. He needs software that be adapted to changing conditions quickly, just as he changes his pitch first one way and then another to a difficult-to-persuade prospective customer, and he needs to know that he won't have to be liable for a huge price tag for that flexibility.

Frankly, I don't think that you would be able to deliver on such promises if they were made because in spite of all the advantages of MVC from a development point of view, we are still talking about software here, and as we all know, software is a rigid, demanding taskmaster that takes it own sweet time to mature to the point of trustworthiness and to be rid of its bugs. We as programmers are always in search of the holy grail of software reusability, and while we flail about trying one thing and then another (MVC, MVP, MVVM, and whatever else someone may conceive), the rest of the world is simply asking for something that works. So the best of luck to you. I hope you are able to win your case.