<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.expertiza.ncsu.edu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Zivora</id>
	<title>Expertiza_Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.expertiza.ncsu.edu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Zivora"/>
	<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=Special:Contributions/Zivora"/>
	<updated>2026-06-05T06:23:02Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.41.0</generator>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki2_11_zv&amp;diff=25615</id>
		<title>CSC/ECE 517 Fall 2009/wiki2 11 zv</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki2_11_zv&amp;diff=25615"/>
		<updated>2009-10-11T00:58:39Z</updated>

		<summary type="html">&lt;p&gt;Zivora: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''What facilities does Ruby offer that makes it easier to realize other GoF (and other) patterns that we did not cover in class? The key idea here is to explore how Ruby can implement these patterns more efficiently or transparently than static (or other dynamic) o-o languages.''&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
Before starting off with design patterns for Ruby we need to define what a design pattern is, Design patterns can be described as &amp;quot;a general reusable solution to a commonly occurring problem in software design.&amp;quot; [http://en.wikipedia.org/wiki/Design_pattern_%28computer_science%29]&lt;br /&gt;
&amp;quot;The idea of design patterns is to not to reinvent the wheel but to solve the current problems by using solutions that have worked in the past&amp;quot; [http://people.engr.ncsu.edu/efg/517/f07/lectures/notes/lec6.pdf]. A design pattern names, abstracts, and identifies the key aspects of a common design structure that make it useful for creating a reusable object-oriented design. It helps to identify the classes and instances and the way they collaborate with each other to form a solution to a problem. Design patterns can be classified into 3 parts [http://en.wikipedia.org/wiki/Creational_pattern Creational], [http://en.wikipedia.org/wiki/Structural_pattern Structural], [http://en.wikipedia.org/wiki/Behavioral_pattern Behavioral] [http://www.patterndepot.com/put/8/JavaPatterns.htm].&lt;br /&gt;
&lt;br /&gt;
=Factory Design Pattern=&lt;br /&gt;
==What is Factory Design Pattern?==&lt;br /&gt;
The factory design pattern is an object oriented design pattern. It is a creational design pattern and deals with the issues faced in creating objects.&lt;br /&gt;
The main goal of this implementation is to isolate the code that creates the class form the concrete implementation of that class. Ruby example for the same is given below.&lt;br /&gt;
&lt;br /&gt;
==Implementation in Ruby==&lt;br /&gt;
The given code explains how to create a factory in Ruby. In this it initially creates a factory class called GearFactory and overrides the new function. When an object is instantiated the code does not need to know which kind of object it is. It is a collection (hence the word factory) of objects that are clubbed together.&lt;br /&gt;
    class GearFactory&lt;br /&gt;
      def new() &lt;br /&gt;
        if ( ... some condition )&lt;br /&gt;
           return Sprocket.new()&lt;br /&gt;
        else&lt;br /&gt;
           return Cog().new()&lt;br /&gt;
        end&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
Our client class now becomes:&lt;br /&gt;
    class GearUser &lt;br /&gt;
      def doSomething(factory )&lt;br /&gt;
        ...&lt;br /&gt;
      my_gear = factory.new()&lt;br /&gt;
        ...&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
The above code does not have to distinguish between a factory and an ordinary class. We can call the class using the following code.&lt;br /&gt;
    client.doSomething(GearFactory.new)          #Use the factory&lt;br /&gt;
    client.doSomething(Cog)                      #Use the Cog class&lt;br /&gt;
    client.doSomething(Sprocket)                 #Use the Sprocket class&lt;br /&gt;
&lt;br /&gt;
==Implementation in Java==&lt;br /&gt;
In java the Factory implementation is done using interfaces. Declaring them as interfaces helps to maintain a general overview and not depending on the type of factory object that needs to be used. All of these can be placed in a huge factory in a client application.&lt;br /&gt;
A well known example for Java Factory is the UI toolkits that are designed to run on different windowing systems.&lt;br /&gt;
    interface ScrollBar { ... }&lt;br /&gt;
    interface MenuBar   { ... }&lt;br /&gt;
    ...&lt;br /&gt;
And associated classes implementing them on different windowing systems:&lt;br /&gt;
&lt;br /&gt;
    class MotifScrollBar implements ScrollBar { ... }&lt;br /&gt;
    class Win95ScrollBar implements ScrollBar { ... }&lt;br /&gt;
    ...&lt;br /&gt;
&lt;br /&gt;
And a factory interface that also doesn't commit to representation:&lt;br /&gt;
&lt;br /&gt;
    interface Factory {&lt;br /&gt;
      public abstract ScrollBar newScrollBar();&lt;br /&gt;
      public abstract MenuBar   newMenuBar();&lt;br /&gt;
      ... &lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
But implementation classes that do:&lt;br /&gt;
&lt;br /&gt;
    class MotifFactory implements Factory {&lt;br /&gt;
      public ScrollBar newScrollBar() { return new MotifScrollBar(...); }&lt;br /&gt;
      ...&lt;br /&gt;
    }&lt;br /&gt;
==Comparison of Implementations==&lt;br /&gt;
Both the languages implement the factory design pattern. Java implements the factory design pattern using the interfaces while Ruby uses classes to create a factory. An abstract base class can be defined in Java to hold all the interfaces needed or there could be a parameterised method which takes the kind of object as a parameter to instantiate the necessary object. &lt;br /&gt;
In Ruby 'new' is just a method on a class object, it's always free to return anything it likes.  The nice thing about this is that, in ruby, every call to new is, by definition, the factory pattern - it just so happens that there is a default implementation inherited by class 'Class'.&lt;br /&gt;
The factory implementation of Ruby is a lot simpler than the factory implementation of Java.&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
=Abstract Factory Pattern=&lt;br /&gt;
==What is Abstract Factory Pattern?==&lt;br /&gt;
Abstract Factory Design Pattern encapsulates a group of objects that have common theme. It implements a generic interface to create these objects that are part of the theme. It does not care about the details of the implementation of these objects. The Abstract Factory pattern, a class delegates the responsibility of object instantiation to another object via composition. It is a type of Creational pattern [http://en.wikipedia.org/wiki/Abstract_factory_pattern] “Provide an interface for creating families of related or dependent objects without specifying their concrete classes” [http://sourcemaking.com/design_patterns/abstract_factory]&lt;br /&gt;
&lt;br /&gt;
==Implementation in Ruby==&lt;br /&gt;
Ruby automatically implements the Abstract Factory pattern as Class Objects. All Class objects have the same interface: the new method of each class object creates new instances of the class. Thus the code can pass references to class objects around and they can be used to call new method without knowing the exact type of object that the class creates.&lt;br /&gt;
&lt;br /&gt;
    Class Foo; end&lt;br /&gt;
    Class Bar, end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here is the use of Abstract Factory Pattern&lt;br /&gt;
    &lt;br /&gt;
    def create_something(factory)&lt;br /&gt;
	new_object = factory.new&lt;br /&gt;
	puts &amp;quot;created a new #{new_object.class} with a factory&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
Here we select a factory to use&lt;br /&gt;
    Create_something(Foo)&lt;br /&gt;
    Create_something(Bar)&lt;br /&gt;
&lt;br /&gt;
Output of the code:&amp;lt;br/&amp;gt;&lt;br /&gt;
Created a Foo with a factory&amp;lt;br/&amp;gt;&lt;br /&gt;
Created a Bar with a factory&lt;br /&gt;
&lt;br /&gt;
The create_something method is creating objects through an abstract interface. It does not have details about implementation used to create these objects. Thus the use of create_something() is used to shield the rest of the code from that knowledge.&lt;br /&gt;
&lt;br /&gt;
==Implementation in Java==&lt;br /&gt;
In Java, implementing  Abstract Factory design pattern we need to create a class which has method who defers creation of product objects to its concrete class. This class then needs to be ”extended” by the client class which uses only these interfaces to create objects of concrete class&lt;br /&gt;
[http://userpages.umbc.edu/~tarr/dp/lectures/Factory-2pp.pdf]. In Java, Abstract Factory defines a different method for the creation of each product it can produce. The following example shows an implementation of Abstract Factory design pattern in Java. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   public class FactoryFmProto {&lt;br /&gt;
  static class Expression {&lt;br /&gt;
   protected String str;&lt;br /&gt;
   public Expression( String s ) { str = s; }&lt;br /&gt;
   public Expression cloan()     { return null; }&lt;br /&gt;
   public String     toString()  { return str; }&lt;br /&gt;
  }&lt;br /&gt;
  static abstract class Factory {&lt;br /&gt;
   protected Expression prototype = null;&lt;br /&gt;
   public Expression makePhrase() { return prototype.cloan(); }&lt;br /&gt;
   public abstract Expression makeCompromise();&lt;br /&gt;
   public abstract Expression makeGrade();&lt;br /&gt;
  }&lt;br /&gt;
  static class PCFactory extends Factory {&lt;br /&gt;
   public PCFactory() { prototype = new PCPhrase(); }&lt;br /&gt;
   public Expression makeCompromise() {&lt;br /&gt;
      return new Expression( &amp;quot;\&amp;quot;do it your way, any way, or no way\&amp;quot;&amp;quot; ); }&lt;br /&gt;
   public Expression makeGrade() {&lt;br /&gt;
      return new Expression( &amp;quot;\&amp;quot;you pass, self-esteem intact\&amp;quot;&amp;quot; ); }&lt;br /&gt;
  }&lt;br /&gt;
   static class NotPCFactory extends Factory {&lt;br /&gt;
   public NotPCFactory() { prototype = new NotPCPhrase(); }&lt;br /&gt;
   public Expression makeCompromise() {&lt;br /&gt;
      return new Expression( &amp;quot;\&amp;quot;my way, or the highway\&amp;quot;&amp;quot; ); }&lt;br /&gt;
   public Expression makeGrade() {&lt;br /&gt;
      return new Expression( &amp;quot;\&amp;quot;take test, deal with the results\&amp;quot;&amp;quot; ); }&lt;br /&gt;
  }&lt;br /&gt;
   public static void main( String[] args ) {&lt;br /&gt;
   Factory factory;&lt;br /&gt;
   if (args.length &amp;gt; 0) factory = new PCFactory();&lt;br /&gt;
   else                 factory = new NotPCFactory();&lt;br /&gt;
   for (int i=0; i &amp;lt; 3; i++) System.out.print( factory.makePhrase() + &amp;quot;  &amp;quot; );&lt;br /&gt;
   System.out.println();&lt;br /&gt;
   System.out.println( factory.makeCompromise() );&lt;br /&gt;
   System.out.println( factory.makeGrade() );&lt;br /&gt;
  }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
==Comparison of Implementations==&lt;br /&gt;
Basically, Java and Ruby, both can implement Abstract Factory design pattern. But the more important point is the simplicity by which they can apply it. Ruby automatically implements the Abstract Factory pattern as Class Objects. But Java needs helps of interfaces and classes to do so. Thus Java implementation needs a well defined interface to do so but in Ruby it is directly implemented because of private class object property.&lt;br /&gt;
&lt;br /&gt;
Similarly, C# demonstrates the Abstract Factory pattern by creating parallel hierarchies of objects. Object creation has been abstracted and there is no need for hard-coded class names in the client code. This property helps C# to have better implementation than Java. In .NET, there are built in features such as, generics, reflection, object initializers, automatic properties, etc for implementation [http://www.dofactory.com/Patterns/PatternAbstract.aspx].&lt;br /&gt;
&lt;br /&gt;
=Iterator Design Pattern=&lt;br /&gt;
==What is Iterator Design Pattern?==&lt;br /&gt;
The Iterator design pattern allows an object to encapsulate the internal structure and allows the user to move through the collection of data using standard interface. It is one of the simplest and most frequently used design pattern. It is a type of Behavioral design pattern [http://en.wikipedia.org/wiki/Iterator_pattern]. “Provide a way to access the elements of an aggregate object sequentially without exposing its underlying representation.” [http://sourcemaking.com/design_patterns/iterator]&lt;br /&gt;
&lt;br /&gt;
==Implementation in Ruby==&lt;br /&gt;
Ruby implements iterators with blocks and the ‘each’ method, and with ‘for..in’ statements. For example consider the following example;&lt;br /&gt;
&lt;br /&gt;
    def print_element(container)&lt;br /&gt;
    	Container.each {|o| puts o.inspect }&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    list = [1,2,2,3]&lt;br /&gt;
    hash = {“a”=&amp;gt;1, “b”=&amp;gt;2,”c”=&amp;gt;3, “d”=&amp;gt;4 }&lt;br /&gt;
    print_elements list&lt;br /&gt;
    print_elements hash&lt;br /&gt;
&lt;br /&gt;
The output of the code is,&lt;br /&gt;
    1&lt;br /&gt;
    2&lt;br /&gt;
    3&lt;br /&gt;
    4&lt;br /&gt;
    [“a”,1]&lt;br /&gt;
    [“b”,2]&lt;br /&gt;
    [“c”,3]&lt;br /&gt;
    [“d”,4]&lt;br /&gt;
&lt;br /&gt;
==Implementation in Java==&lt;br /&gt;
&lt;br /&gt;
In Java, we can implement Iterator design pattern by using java.util.Enumeration interface which returns a reference to an object. Furthermore, Hashes and Vector have limited capabilities which help simple traversing. Java JDK 1.2 introduced a new Collections package with more aggregate classes, including sets, lists, maps and an Iterator interface. If we wanted to start implementing Iterator design pattern from start, then it would again involve having an interface for accessing and traversing the elements which is further implemented by the concrete class.  Thus a class who needs to access the list will need to call the interface class [http://userpages.umbc.edu/~tarr/dp/lectures/Iterator-2pp.pdf]. For example, consider the following scenario where iterator.First() and iterator.Next(), has been implemented in the class ListIterator.&lt;br /&gt;
&lt;br /&gt;
    ...&lt;br /&gt;
    List list = new List();&lt;br /&gt;
    ...&lt;br /&gt;
    ListIterator iterator = new ListIterator(list);&lt;br /&gt;
    iterator.First();&lt;br /&gt;
    while (!iterator.IsDone()) {&lt;br /&gt;
    Object item = iterator.CurrentItem();&lt;br /&gt;
    // Code here to process item.&lt;br /&gt;
    iterator.Next();&lt;br /&gt;
    }&lt;br /&gt;
    ...&lt;br /&gt;
&lt;br /&gt;
==Comparison of Implementations==&lt;br /&gt;
&lt;br /&gt;
Overall implementation of Iterator design pattern in each object oriented language is simple as it is a basis feature of objects. But in general, the Ruby implementation is more concise. Ruby has built-in iterators which make it easier to implement Iterator pattern for any kind of object. It hides the structure and there is no need for having implementation for those methods in the class. But in Java, the built-in library function help to create easier and clear implementations. C# also has similar implementation as Java for this design pattern [http://www.dofactory.com/Patterns/PatternIterator.aspx]. &lt;br /&gt;
&lt;br /&gt;
In PHP, using an object in a foreach structure will traverse the public values. There are also many multiple Iterator classes available to allow us to iterate through common lists, such as directories, XML structures and recursive arrays. We can also implement our own interfaces depending on requirement [http://us3.php.net/manual/en/language.oop5.iterations.php].&lt;br /&gt;
&lt;br /&gt;
=Decorator Pattern=&lt;br /&gt;
&lt;br /&gt;
This pattern is used to increase the functionality of the existing object dynamically. Suppose we have a program that uses eight objects, but three of them need an additional feature. We could create derived class for these objects having the additional features but then we can create a Decorator class which will add any specific kind of feature required [http://www.patterndepot.com/put/8/Decorator.pdf]. It is a type of behavioral pattern.&lt;br /&gt;
&lt;br /&gt;
==Implementation in Ruby==&lt;br /&gt;
&lt;br /&gt;
Generic decorators can be implmented by using the method_missing method. This method is called when an object receives a message that it does not have a method fo. The method_missing method can forward the message on to other object and wrap additional behavior around the call. In this example we talk about how a coffee class can have many addtions to it like coffee with cream, sprinkles, milk etc and creating a class for each of them will not be the correct solution.In this example the cost can be calculated according to what is sent to it.Cost of the coffee is 2 and the cost of White coffee (coffee + milk) = 2.4. So what happens when we execute the Sprinkles.new(Whip.new(Milk.new(Coffee.new))).cost we get the result as 2.9 as the cost of the coffee is 2, the decorator object (now only coffee) is sent to the Milk and it becomes 2.4, which now is then sent to the Whip which is going to be 2.4 + 02 = 2.6 and finally to Sprinkles which becomes 2.6 + 0.3 = 2.9. The below code is an example of decorators where we just create a place holder and we can use this function to perform different functions depending on the parameters supplied to it. The need for this kind of pattern is so as to increase the functionality of a particular class [http://en.wikipedia.org/wiki/Decorator_pattern]. &lt;br /&gt;
&lt;br /&gt;
    module Decorator&lt;br /&gt;
      def initialize(decorated)&lt;br /&gt;
        @decorated = decorated&lt;br /&gt;
      end&lt;br /&gt;
&lt;br /&gt;
    def method_missing(method, *args)&lt;br /&gt;
        args.empty? ? @decorated.send(method) : @decorated.send(method, args)&lt;br /&gt;
    end&lt;br /&gt;
   end&lt;br /&gt;
&lt;br /&gt;
    class Whip&lt;br /&gt;
      include Decorator&lt;br /&gt;
      def cost &lt;br /&gt;
        @decorated.cost + 0.2&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    class Sprinkles&lt;br /&gt;
      include Decorator&lt;br /&gt;
&lt;br /&gt;
      def cost&lt;br /&gt;
        @decorated.cost + 0.3&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    Whip.new(Coffee.new).cost&lt;br /&gt;
    #=&amp;gt; 2.2&lt;br /&gt;
    Sprinkles.new(Whip.new(Milk.new(Coffee.new))).cost &lt;br /&gt;
    #=&amp;gt; 2.9&lt;br /&gt;
&lt;br /&gt;
There are various other options to implement this design pattern. Other way to implememt the pattern is by using singleton methods and method aliases. Delegation can also be used, and it overcomes one of the most important disadvantage. We can remove add features if we are using delegation but this is not possible if we are using singleton methods and method aliases. Example for this can be found here [http://www.scribd.com/doc/2217773/Design-Patterns-in-Ruby].&lt;br /&gt;
&lt;br /&gt;
==Implementation in Java==&lt;br /&gt;
&lt;br /&gt;
In Java, this pattern is easy to implement by dividing the various responsibilities into classes and interfaces. The below example consider all these responsibilities and have four components which are described below  &lt;br /&gt;
* Component: Defines the interface for objects that can have responsibilities added to them dynamically.&lt;br /&gt;
* ConcreteComponent: Defines an object to which additional responsibilities can be attached.&lt;br /&gt;
* Decorator: maintains a reference to a Component object and defines an interface that conforms to Component's interface.&lt;br /&gt;
* ConcreteDecorator: adds responsibilities to the component.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    package decorator;&lt;br /&gt;
    public interface IComponent {&lt;br /&gt;
    public void doStuff();&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
The Concrete component&lt;br /&gt;
    package decorator;&lt;br /&gt;
    public class Component implements IComponent{&lt;br /&gt;
    public void doStuff() {&lt;br /&gt;
    System.out.println(&amp;quot;Do Suff&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
The Decorator&lt;br /&gt;
    package decorator;&lt;br /&gt;
    public interface Decorator extends IComponent {&lt;br /&gt;
    public void addedBehavior();&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
The Concrete Decorator ('''Extends IComponent''')&lt;br /&gt;
    package decorator;&lt;br /&gt;
    public class ConcreteDecorator implements Decorator {&lt;br /&gt;
    IComponent component;&lt;br /&gt;
    public ConcreteDecorator(IComponent component) {&lt;br /&gt;
    super();&lt;br /&gt;
    this.component = component;&lt;br /&gt;
    }&lt;br /&gt;
    public void addedBehavior() {&lt;br /&gt;
    System.out.println(&amp;quot;Decorator does some stuff too&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    public void doStuff() {&lt;br /&gt;
    component.doStuff();&lt;br /&gt;
    addedBehavior();&lt;br /&gt;
    }&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
The Client&lt;br /&gt;
&lt;br /&gt;
    import decorator.*;&lt;br /&gt;
    public class Client {&lt;br /&gt;
    public static void main(String[] args) {&lt;br /&gt;
    IComponent comp = new Component();&lt;br /&gt;
    Decorator decorator = new ConcreteDecorator(comp);&lt;br /&gt;
    decorator.doStuff();&lt;br /&gt;
    }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
==Comparison of implementations==&lt;br /&gt;
&lt;br /&gt;
Ruby provides different options to implement Decorator pattern like method_missing, delegation and alias methods. This provides flexibility to the user to implement any possible way depending on the requirements and features needed. But in Java, there is more clearer approach using the components provided in the example. It is a straight forward approach. But different options provided by Ruby make it much better than Java.&lt;br /&gt;
&lt;br /&gt;
In dynamic languages like Javascript, decorator pattern can be implemented with no interfaces or traditional OOP inheritance. With simple overriding but this approach is difficult to implement [http://en.wikipedia.org/wiki/Decorator_pattern#JavaScript].&lt;br /&gt;
&lt;br /&gt;
=Conclusion=&lt;br /&gt;
&lt;br /&gt;
We have seen four design patterns Factory design pattern, Abstract Factory design pattern, Iterator design pattern and Decorator Design Pattern. We have chosen these patterns as they are widely used and Ruby has in-built implementations of these. We have mainly tried to compare Ruby and Java but also specified tips about other languages like PHP, C# and Javascript. In Ruby implementing these design patterns is simple and easy because of its main feature of private class objects, unbounded polymorphism and duck typing [http://people.engr.ncsu.edu/efg/517/f07/lectures/notes/lec6.pdf]. In Java all the features are mainly implemented through interfaces and classes. This has several disadvantages like increase in code complexity, size and is generally confusing and tedious to trace or understand the code.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
#[http://people.engr.ncsu.edu/efg/517/f07/lectures/notes/lec6.pdf Design Patterns]&lt;br /&gt;
#[http://www.patterndepot.com/put/8/JavaPatterns.htm Design Patterns Java Companion James W Cooper]&lt;br /&gt;
#[http://en.wikipedia.org/wiki/Design_pattern_%28computer_science%29 Wiki Design Patterns]&lt;br /&gt;
#[http://en.wikipedia.org/wiki/Abstract_factory_pattern Abstract Factory Method]&lt;br /&gt;
#[http://sourcemaking.com/design_patterns/abstract_factory SourceMaking explains Abstract Factory]&lt;br /&gt;
#[http://userpages.umbc.edu/~tarr/dp/lectures/Factory-2pp.pdf Abstract Factory Example in Java]&lt;br /&gt;
#[http://www.dofactory.com/Patterns/PatternAbstract.aspx Abstract Factory explained]&lt;br /&gt;
#[http://en.wikipedia.org/wiki/Iterator_pattern Iterator Pattern]&lt;br /&gt;
#[http://sourcemaking.com/design_patterns/iterator Sourcemaking explains Iterator method]&lt;br /&gt;
#[http://userpages.umbc.edu/~tarr/dp/lectures/Iterator-2pp.pdf Iterator method explained]&lt;br /&gt;
#[http://www.dofactory.com/Patterns/PatternIterator.aspx DoFactory explains Iterator pattern]&lt;br /&gt;
#[http://us3.php.net/manual/en/language.oop5.iterations.php Iterator pattern for PHP]&lt;br /&gt;
#[http://www.patterndepot.com/put/8/Decorator.pdf Decorator Pattern]&lt;br /&gt;
#[http://en.wikipedia.org/wiki/Decorator_pattern Wiki Decorator Pattern]&lt;br /&gt;
#[http://www.scribd.com/doc/2217773/Design-Patterns-in-Ruby Design Patterns in Ruby]&lt;br /&gt;
#[http://en.wikipedia.org/wiki/Decorator_pattern#JavaScript Design Patterns Javascript]&lt;/div&gt;</summary>
		<author><name>Zivora</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_13_za&amp;diff=21800</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 13 za</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_13_za&amp;diff=21800"/>
		<updated>2009-09-24T19:28:09Z</updated>

		<summary type="html">&lt;p&gt;Zivora: /* Conclusion */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=History and Applications of the MVC Pattern=&lt;br /&gt;
&lt;br /&gt;
== MVC - the ''buzz'' term! ==&lt;br /&gt;
[[Image:mvc.png|thumb|Image taken from www.symfony-project.org]]&lt;br /&gt;
&lt;br /&gt;
MVC (Model-View-Controller) offers a framework consisting of a Model that enforces the logical rules that should be applied to the data.  A View is pertaining to the user-interface. It helps the user to interact with the Model. Finally the Controller acts as the point of communication between the Model and the View, taking inputs or requests from the user and manipulating or processing the underlying data accordingly to provide the user with the desired outputs. For example, in an e-commerce business setting, a model will make sure that the shipping charges are correctly applied, a view will generate pages displaying the items available and a controller will make sure to add selected products to the cart of the customer.&lt;br /&gt;
&lt;br /&gt;
MVC offers a clear separation of the presentation logic from the business logic. This is the main reason, why it has been a widely used architecture for web-based applications. With an MVC framework, it becomes easy to accommodate future changes and implementations in design or code. MVC pattern gained prominence because of its clean modular approach that allow programmers to follow a well-defined strategy for implementing business or enterprise level applications. Though, it is worth mentioning that using the MVC methodology for designing applications requires a lot of planning in terms of working out the separations in design and the interactions between the various modules. What is achieved by keeping these functionalities separate is ''reusability'' which is one of the major advantages of MVC.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Evolution of MVC ==&lt;br /&gt;
&lt;br /&gt;
=== MVC Architecture ===&lt;br /&gt;
Over all these years, history of MVC architecture has become dim. MVC was first modeled at Xerox PARC in the 70's. Trygve Reenskaug was the one who wrote original notes on MVC in 1978 but he never got to publish them. His first note on the MVC pattern consisted of : Model, View, Controller and Editor. The 'Editor' is a short-lived component that the 'View' creates when necessary. This component is created as an interface between the 'View' and the input devices. After Reenskaug left Xerox PARC, Jim Althoff with a group of other people implemented a version of MVC specific to the Smalltalk-80 class library [http://heim.ifi.uio.no/~trygver/themes/mvc/mvc-index.html]. Even though they changed his implementation and removed the 'Editor', Trygve Reenskaug was credited for his work.&lt;br /&gt;
&lt;br /&gt;
=== MVP Architecture ===&lt;br /&gt;
After the implementation of Smalltalk-80 MVC, there were a few downsides to MVC approach and so a new variant of MVC was introduced - MVP (Model View Presenter). It was very similar to MVC controller. The only difference was in the way the presenter was linked to the associated views. But over time, the difference got more obscure and now implementations of MVC frameworks follow more concepts of MVP [http://www.typo3-media.com/blog/mvc-mvp-typo3-introduction.html].&lt;br /&gt;
&lt;br /&gt;
=== MVC Design Pattern ===&lt;br /&gt;
Ward Cunningham and Ken Beck who were working with Smalltalk were the first to start the MVC design pattern in 1987. The MVC design pattern is different from the MVC architectural pattern. In fact there are many other design patterns - Analysis, Creational, Structural, Behavioral [http://en.wikipedia.org/wiki/Design_pattern_%28computer_science%29]].  More information on the use of MVC as an architectural pattern or a design pattern can be found at [http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Comparison of the MVC implementations in various web-based frameworks ==&lt;br /&gt;
MVC being a framework can be exploited to work with various languages. A list of such languages would include C++, JAVA, Ruby, Flex, DOT NET and many more [http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller#Implementations_of_MVC_as_web-based_frameworks]. All the implementations of MVC fall into three categories: Oringinal MVC framework, Model 2 MVC framework and Web application framework.&lt;br /&gt;
&lt;br /&gt;
=== Original MVC ===&lt;br /&gt;
[[Image:MVC2.jpg|thumb]]&lt;br /&gt;
&lt;br /&gt;
The original MVC pattern is very simple and has a very different path for the data, request and response of the user. Here the Controller modifies the Model accordingly but does not interact with Views. The Views are updated directly by the Model. When the Model changes during an event, an observer design pattern is implemented to change the View in response to the event. Thus the View is continuously observing the Model, and gets updated. &lt;br /&gt;
&lt;br /&gt;
This original pattern helps in ''Separated Presentation''. According to Martin Fowler, Separated Presentation means &amp;quot;Ensure that any code that manipulates presentation only manipulates presentation, pushing all domain and data source logic into clearly separated areas of the program&amp;quot; [http://www.martinfowler.com/eaaDev/uiArchs.html].&lt;br /&gt;
&lt;br /&gt;
Original MVC Model is very simple to understand and implement. It was the early approach for web-application development but is still used for simple applications. It is used for quick development. But the relation between View, Model and Controller, makes it difficult for different teams to work on it. Thus even though the implementation is easy, work ''cannot'' be divided. &lt;br /&gt;
&lt;br /&gt;
Not many web-based frameworks use this approach. JavaServer Pages (JSP) uses this approach. This approach is also called page-centric approach. Here we only build JSP pages which interact with users and adopt the Model 1 approach to creating a JSP application; browser requests are handled by a JavaServer Page directly. These pages only send the request further for processing. After all the processing is done and the content is generated dynamically, it is displayed back to the user [http://tutorials.beginners.co.uk/professional-jsp-architecture-part-4-the-page-centric-approach.htm].&lt;br /&gt;
&lt;br /&gt;
=== Model 2 MVC Framework === &lt;br /&gt;
&lt;br /&gt;
[[Image:MVC3.jpg|thumb]]&lt;br /&gt;
&lt;br /&gt;
Most of the web-based implementations follow this version of the MVC framework. Any present MVC framework is considered synonymous with this model. In this model, there is no more contact between 'Model' and 'View'. Everything happens with the 'Controller' at the center. Controller is responsible for co-ordinating the tasks within an application. &lt;br /&gt;
&lt;br /&gt;
Whenever a request arrives, it first goes to Controller, then it passes the data to Model for validation and processing. Then if the Model needs to pass some data back to the View, it does so, through the Controller, which invokes the View.&lt;br /&gt;
&lt;br /&gt;
Model 2 MVC framework helps to create complex applications easily. This approach is used for web-based applications that need to be modified regularly and maintained for a long time. Because of this clean separation between the three components, it becomes easy for a development team to work on an application by adopting a modular approach. In other words, if one group in the Development team works on the 'View' of the application, another group can work on the implementation details of the 'Model'. [http://stephenwalther.com/blog/archive/2008/08/24/the-evolution-of-mvc.aspx]&lt;br /&gt;
&lt;br /&gt;
Model 2 MVC framework has been greatly appreciated by the industry. In Python, frameworks like Django [http://en.wikipedia.org/wiki/Django_web_framework] have used it. And, of course, in the ASP.NET world, frameworks like ASP.NET MVC [http://en.wikipedia.org/wiki/ASP.NET_MVC_Framework], Maverick .NET [http://en.wikipedia.org/wiki/Maverick.NET] etc have used it.&lt;br /&gt;
&lt;br /&gt;
There are many frameworks in Ruby which implement MVC. Some of them are Monkeybars, Camping, Nitro, and Ruby on Rails etc. Ruby on Rails is the most widely known MVC framework pattern and will be easy to understand due to our previous background.[http://www.tutorialspoint.com/ruby-on-rails/rails-framework.htm]. Ruby on Rails provides special features to implement MVC framework. It enables you to create the MVC file structure easily. It is divided into separate packages that get included by the Model, View and Controller files automatically.&lt;br /&gt;
&lt;br /&gt;
* Model (ActiveRecord) : The ActiveRecord package maintains all the library functions which are required for binding the interface (i.e. object) and database. It also helps in handling validation, association, transactions, and more. Inclusion of this package enables Model to implement its functions.&lt;br /&gt;
* View (ActionView) : The ActionView package implements Embedded Ruby(ERb) based system. These help to define templates for data presentation. By including this library, the view files can use scripting languages like JSP, ASP, and PHP to display data. It also helps to integrate AJAX technology with these files.&lt;br /&gt;
* Controller (ActionController): The ActionController package is included in a controller file by default when it is created. This gives default controller behavior to it. It helps to organize the data by searching and sorting so that the view does not have any calculations to perform. ActionController package acts like a bridge between ActiveRecord (the database interface) and ActionView (the presentation engine).&lt;br /&gt;
&lt;br /&gt;
Thus ActionController and ActionView provide facilities for displaying the data and ActionRecord provides techniques for manipulating the database.&lt;br /&gt;
&lt;br /&gt;
=== Web Application Framework ===&lt;br /&gt;
After the Model 2 MVC framework became popular, it was enhanced further for its use on enterprise-based web applications. JAVA, PHP, Flex tools and the like became highly popular with their applications in web development. These technologies came up with their own MVC frameworks. A few well-known web application MVC frameworks are Struts and Spring (JAVA based), Cairngorm (Flex), Symfony Framework (PHP). All these frameworks are typically based on MVC Model 2, but have added a rich set of features and unit-testing that facilitate easy maintenance of the web-application.&lt;br /&gt;
&lt;br /&gt;
Struts from Apache is a an open source MVC based framework for creating JAVA applications [http://struts.apache.org/]&lt;br /&gt;
&lt;br /&gt;
The framework provides three key components:&lt;br /&gt;
* There is a central configuration file struts-config.xml that holds together the model, view and controller.&lt;br /&gt;
* Controller: The controller is a Servlet called as ActionServlet.&lt;br /&gt;
* View: Typically involves using JSP pages.&lt;br /&gt;
&lt;br /&gt;
Requests from the client are sent to the controller in the form of &amp;quot;Actions&amp;quot; defined in the configuration file; if the controller receives such a request it calls the corresponding Action class that interacts with the application-specific model code. The model code returns an &amp;quot;ActionForward&amp;quot;, a string telling the controller that output page needs to be sent to the client. Information is passed between model and view in the form of special JavaBeans. A powerful custom tag library allows it to read and write the content of these beans from the presentation layer without the need for any embedded Java code. [http://en.wikipedia.org/wiki/Apache_Struts]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
This wiki thus throws light on what is a MVC pattern, how MVC evolved since its first proposal by Reenskaug, and how it is still evolving in the present in terms of the framework specifications pertaining to different forms of programming languages. MVC architecture, MVP architecture, MVC design pattern are the variants of MVC pattern that were modeled in the path of its evolution. And finally, we highlighted how MVC got differentiated into Model 1 MVC, Model 2 MVC and the most recent form: Web-based MVC framework that highly dwells on the Model 2 version.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
# [http://heim.ifi.uio.no/~trygver/themes/mvc/mvc-index.html Trygve Reenskaug's early document on MVC]&lt;br /&gt;
# [http://www.typo3-media.com/blog/mvc-mvp-typo3-introduction.html MVC: Introduction and History]&lt;br /&gt;
# [http://en.wikipedia.org/wiki/Design_pattern_%28computer_science%29 Wikipedia page on 'Design Pattern']&lt;br /&gt;
# [http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller Wikipedia page on 'MVC']&lt;br /&gt;
# [http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller#Implementations_of_MVC_as_web-based_frameworks Wikipedia page on 'Implementation of MVC as web-based frameworks']&lt;br /&gt;
# [http://www.martinfowler.com/eaaDev/uiArchs.html MVC and MVP]&lt;br /&gt;
# [http://tutorials.beginners.co.uk/professional-jsp-architecture-part-4-the-page-centric-approach.htm JSP: The page-centric approach]&lt;br /&gt;
# [http://stephenwalther.com/blog/archive/2008/08/24/the-evolution-of-mvc.aspx Evolution of MVC]&lt;br /&gt;
# [http://en.wikipedia.org/wiki/Django_web_framework Wikipedia page on 'Django web framework']&lt;br /&gt;
# [http://en.wikipedia.org/wiki/ASP.NET_MVC_Framework Wikipedia page on 'ASP.NET web framework']&lt;br /&gt;
# [http://en.wikipedia.org/wiki/Maverick.NET Wikipedia page on 'Maverick.NET']&lt;br /&gt;
# [http://www.tutorialspoint.com/ruby-on-rails/rails-framework.htm Ruby on Rails framework tutorial]&lt;br /&gt;
# [http://struts.apache.org/ Struts framework]&lt;br /&gt;
# [http://en.wikipedia.org/wiki/Apache_Struts Wikipedia page on Apache Struts]&lt;/div&gt;</summary>
		<author><name>Zivora</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_13_za&amp;diff=21799</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 13 za</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_13_za&amp;diff=21799"/>
		<updated>2009-09-24T19:27:56Z</updated>

		<summary type="html">&lt;p&gt;Zivora: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=History and Applications of the MVC Pattern=&lt;br /&gt;
&lt;br /&gt;
== MVC - the ''buzz'' term! ==&lt;br /&gt;
[[Image:mvc.png|thumb|Image taken from www.symfony-project.org]]&lt;br /&gt;
&lt;br /&gt;
MVC (Model-View-Controller) offers a framework consisting of a Model that enforces the logical rules that should be applied to the data.  A View is pertaining to the user-interface. It helps the user to interact with the Model. Finally the Controller acts as the point of communication between the Model and the View, taking inputs or requests from the user and manipulating or processing the underlying data accordingly to provide the user with the desired outputs. For example, in an e-commerce business setting, a model will make sure that the shipping charges are correctly applied, a view will generate pages displaying the items available and a controller will make sure to add selected products to the cart of the customer.&lt;br /&gt;
&lt;br /&gt;
MVC offers a clear separation of the presentation logic from the business logic. This is the main reason, why it has been a widely used architecture for web-based applications. With an MVC framework, it becomes easy to accommodate future changes and implementations in design or code. MVC pattern gained prominence because of its clean modular approach that allow programmers to follow a well-defined strategy for implementing business or enterprise level applications. Though, it is worth mentioning that using the MVC methodology for designing applications requires a lot of planning in terms of working out the separations in design and the interactions between the various modules. What is achieved by keeping these functionalities separate is ''reusability'' which is one of the major advantages of MVC.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Evolution of MVC ==&lt;br /&gt;
&lt;br /&gt;
=== MVC Architecture ===&lt;br /&gt;
Over all these years, history of MVC architecture has become dim. MVC was first modeled at Xerox PARC in the 70's. Trygve Reenskaug was the one who wrote original notes on MVC in 1978 but he never got to publish them. His first note on the MVC pattern consisted of : Model, View, Controller and Editor. The 'Editor' is a short-lived component that the 'View' creates when necessary. This component is created as an interface between the 'View' and the input devices. After Reenskaug left Xerox PARC, Jim Althoff with a group of other people implemented a version of MVC specific to the Smalltalk-80 class library [http://heim.ifi.uio.no/~trygver/themes/mvc/mvc-index.html]. Even though they changed his implementation and removed the 'Editor', Trygve Reenskaug was credited for his work.&lt;br /&gt;
&lt;br /&gt;
=== MVP Architecture ===&lt;br /&gt;
After the implementation of Smalltalk-80 MVC, there were a few downsides to MVC approach and so a new variant of MVC was introduced - MVP (Model View Presenter). It was very similar to MVC controller. The only difference was in the way the presenter was linked to the associated views. But over time, the difference got more obscure and now implementations of MVC frameworks follow more concepts of MVP [http://www.typo3-media.com/blog/mvc-mvp-typo3-introduction.html].&lt;br /&gt;
&lt;br /&gt;
=== MVC Design Pattern ===&lt;br /&gt;
Ward Cunningham and Ken Beck who were working with Smalltalk were the first to start the MVC design pattern in 1987. The MVC design pattern is different from the MVC architectural pattern. In fact there are many other design patterns - Analysis, Creational, Structural, Behavioral [http://en.wikipedia.org/wiki/Design_pattern_%28computer_science%29]].  More information on the use of MVC as an architectural pattern or a design pattern can be found at [http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Comparison of the MVC implementations in various web-based frameworks ==&lt;br /&gt;
MVC being a framework can be exploited to work with various languages. A list of such languages would include C++, JAVA, Ruby, Flex, DOT NET and many more [http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller#Implementations_of_MVC_as_web-based_frameworks]. All the implementations of MVC fall into three categories: Oringinal MVC framework, Model 2 MVC framework and Web application framework.&lt;br /&gt;
&lt;br /&gt;
=== Original MVC ===&lt;br /&gt;
[[Image:MVC2.jpg|thumb]]&lt;br /&gt;
&lt;br /&gt;
The original MVC pattern is very simple and has a very different path for the data, request and response of the user. Here the Controller modifies the Model accordingly but does not interact with Views. The Views are updated directly by the Model. When the Model changes during an event, an observer design pattern is implemented to change the View in response to the event. Thus the View is continuously observing the Model, and gets updated. &lt;br /&gt;
&lt;br /&gt;
This original pattern helps in ''Separated Presentation''. According to Martin Fowler, Separated Presentation means &amp;quot;Ensure that any code that manipulates presentation only manipulates presentation, pushing all domain and data source logic into clearly separated areas of the program&amp;quot; [http://www.martinfowler.com/eaaDev/uiArchs.html].&lt;br /&gt;
&lt;br /&gt;
Original MVC Model is very simple to understand and implement. It was the early approach for web-application development but is still used for simple applications. It is used for quick development. But the relation between View, Model and Controller, makes it difficult for different teams to work on it. Thus even though the implementation is easy, work ''cannot'' be divided. &lt;br /&gt;
&lt;br /&gt;
Not many web-based frameworks use this approach. JavaServer Pages (JSP) uses this approach. This approach is also called page-centric approach. Here we only build JSP pages which interact with users and adopt the Model 1 approach to creating a JSP application; browser requests are handled by a JavaServer Page directly. These pages only send the request further for processing. After all the processing is done and the content is generated dynamically, it is displayed back to the user [http://tutorials.beginners.co.uk/professional-jsp-architecture-part-4-the-page-centric-approach.htm].&lt;br /&gt;
&lt;br /&gt;
=== Model 2 MVC Framework === &lt;br /&gt;
&lt;br /&gt;
[[Image:MVC3.jpg|thumb]]&lt;br /&gt;
&lt;br /&gt;
Most of the web-based implementations follow this version of the MVC framework. Any present MVC framework is considered synonymous with this model. In this model, there is no more contact between 'Model' and 'View'. Everything happens with the 'Controller' at the center. Controller is responsible for co-ordinating the tasks within an application. &lt;br /&gt;
&lt;br /&gt;
Whenever a request arrives, it first goes to Controller, then it passes the data to Model for validation and processing. Then if the Model needs to pass some data back to the View, it does so, through the Controller, which invokes the View.&lt;br /&gt;
&lt;br /&gt;
Model 2 MVC framework helps to create complex applications easily. This approach is used for web-based applications that need to be modified regularly and maintained for a long time. Because of this clean separation between the three components, it becomes easy for a development team to work on an application by adopting a modular approach. In other words, if one group in the Development team works on the 'View' of the application, another group can work on the implementation details of the 'Model'. [http://stephenwalther.com/blog/archive/2008/08/24/the-evolution-of-mvc.aspx]&lt;br /&gt;
&lt;br /&gt;
Model 2 MVC framework has been greatly appreciated by the industry. In Python, frameworks like Django [http://en.wikipedia.org/wiki/Django_web_framework] have used it. And, of course, in the ASP.NET world, frameworks like ASP.NET MVC [http://en.wikipedia.org/wiki/ASP.NET_MVC_Framework], Maverick .NET [http://en.wikipedia.org/wiki/Maverick.NET] etc have used it.&lt;br /&gt;
&lt;br /&gt;
There are many frameworks in Ruby which implement MVC. Some of them are Monkeybars, Camping, Nitro, and Ruby on Rails etc. Ruby on Rails is the most widely known MVC framework pattern and will be easy to understand due to our previous background.[http://www.tutorialspoint.com/ruby-on-rails/rails-framework.htm]. Ruby on Rails provides special features to implement MVC framework. It enables you to create the MVC file structure easily. It is divided into separate packages that get included by the Model, View and Controller files automatically.&lt;br /&gt;
&lt;br /&gt;
* Model (ActiveRecord) : The ActiveRecord package maintains all the library functions which are required for binding the interface (i.e. object) and database. It also helps in handling validation, association, transactions, and more. Inclusion of this package enables Model to implement its functions.&lt;br /&gt;
* View (ActionView) : The ActionView package implements Embedded Ruby(ERb) based system. These help to define templates for data presentation. By including this library, the view files can use scripting languages like JSP, ASP, and PHP to display data. It also helps to integrate AJAX technology with these files.&lt;br /&gt;
* Controller (ActionController): The ActionController package is included in a controller file by default when it is created. This gives default controller behavior to it. It helps to organize the data by searching and sorting so that the view does not have any calculations to perform. ActionController package acts like a bridge between ActiveRecord (the database interface) and ActionView (the presentation engine).&lt;br /&gt;
&lt;br /&gt;
Thus ActionController and ActionView provide facilities for displaying the data and ActionRecord provides techniques for manipulating the database.&lt;br /&gt;
&lt;br /&gt;
=== Web Application Framework ===&lt;br /&gt;
After the Model 2 MVC framework became popular, it was enhanced further for its use on enterprise-based web applications. JAVA, PHP, Flex tools and the like became highly popular with their applications in web development. These technologies came up with their own MVC frameworks. A few well-known web application MVC frameworks are Struts and Spring (JAVA based), Cairngorm (Flex), Symfony Framework (PHP). All these frameworks are typically based on MVC Model 2, but have added a rich set of features and unit-testing that facilitate easy maintenance of the web-application.&lt;br /&gt;
&lt;br /&gt;
Struts from Apache is a an open source MVC based framework for creating JAVA applications [http://struts.apache.org/]&lt;br /&gt;
&lt;br /&gt;
The framework provides three key components:&lt;br /&gt;
* There is a central configuration file struts-config.xml that holds together the model, view and controller.&lt;br /&gt;
* Controller: The controller is a Servlet called as ActionServlet.&lt;br /&gt;
* View: Typically involves using JSP pages.&lt;br /&gt;
&lt;br /&gt;
Requests from the client are sent to the controller in the form of &amp;quot;Actions&amp;quot; defined in the configuration file; if the controller receives such a request it calls the corresponding Action class that interacts with the application-specific model code. The model code returns an &amp;quot;ActionForward&amp;quot;, a string telling the controller that output page needs to be sent to the client. Information is passed between model and view in the form of special JavaBeans. A powerful custom tag library allows it to read and write the content of these beans from the presentation layer without the need for any embedded Java code. [http://en.wikipedia.org/wiki/Apache_Struts]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
This wiki thus throws light on what is a MVC pattern, how MVC evolved since its first proposal by Reenskaug, and how it is still evolving in the present in terms of the framework specifications pertaining to different forms of programming languages. MVC architecture, MVP architecture, MVC design pattern are the variants of MVC pattern that were modeled in the path of its evolution. And finally, we highlighted how MVC got differentiated into Model 1 MVC, Model 2 MVC and the most recent form: Web-based MVC framework that highly dwells on the Model 2 version.&lt;br /&gt;
ddd&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
# [http://heim.ifi.uio.no/~trygver/themes/mvc/mvc-index.html Trygve Reenskaug's early document on MVC]&lt;br /&gt;
# [http://www.typo3-media.com/blog/mvc-mvp-typo3-introduction.html MVC: Introduction and History]&lt;br /&gt;
# [http://en.wikipedia.org/wiki/Design_pattern_%28computer_science%29 Wikipedia page on 'Design Pattern']&lt;br /&gt;
# [http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller Wikipedia page on 'MVC']&lt;br /&gt;
# [http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller#Implementations_of_MVC_as_web-based_frameworks Wikipedia page on 'Implementation of MVC as web-based frameworks']&lt;br /&gt;
# [http://www.martinfowler.com/eaaDev/uiArchs.html MVC and MVP]&lt;br /&gt;
# [http://tutorials.beginners.co.uk/professional-jsp-architecture-part-4-the-page-centric-approach.htm JSP: The page-centric approach]&lt;br /&gt;
# [http://stephenwalther.com/blog/archive/2008/08/24/the-evolution-of-mvc.aspx Evolution of MVC]&lt;br /&gt;
# [http://en.wikipedia.org/wiki/Django_web_framework Wikipedia page on 'Django web framework']&lt;br /&gt;
# [http://en.wikipedia.org/wiki/ASP.NET_MVC_Framework Wikipedia page on 'ASP.NET web framework']&lt;br /&gt;
# [http://en.wikipedia.org/wiki/Maverick.NET Wikipedia page on 'Maverick.NET']&lt;br /&gt;
# [http://www.tutorialspoint.com/ruby-on-rails/rails-framework.htm Ruby on Rails framework tutorial]&lt;br /&gt;
# [http://struts.apache.org/ Struts framework]&lt;br /&gt;
# [http://en.wikipedia.org/wiki/Apache_Struts Wikipedia page on Apache Struts]&lt;/div&gt;</summary>
		<author><name>Zivora</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_13_za&amp;diff=21792</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 13 za</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_13_za&amp;diff=21792"/>
		<updated>2009-09-24T19:19:43Z</updated>

		<summary type="html">&lt;p&gt;Zivora: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=History and Applications of the MVC Pattern=&lt;br /&gt;
&lt;br /&gt;
== MVC - the ''buzz'' term! ==&lt;br /&gt;
[[Image:mvc.png|thumb|Image taken from www.symfony-project.org]]&lt;br /&gt;
&lt;br /&gt;
MVC (Model-View-Controller) offers a framework consisting of a Model that enforces the logical rules that should be applied to the data.  A View is pertaining to the user-interface. It helps the user to interact with the Model. Finally the Controller acts as the point of communication between the Model and the View, taking inputs or requests from the user and manipulating or processing the underlying data accordingly to provide the user with the desired outputs. For example, in an e-commerce business setting, a model will make sure that the shipping charges are correctly applied, a view will generate pages displaying the items available and a controller will make sure to add selected products to the cart of the customer.&lt;br /&gt;
&lt;br /&gt;
MVC offers a clear separation of the presentation logic from the business logic. This is the main reason, why it has been a widely used architecture for web-based applications. With an MVC framework, it becomes easy to accommodate future changes and implementations in design or code. MVC pattern gained prominence because of its clean modular approach that allow programmers to follow a well-defined strategy for implementing business or enterprise level applications. Though, it is worth mentioning that using the MVC methodology for designing applications requires a lot of planning in terms of working out the separations in design and the interactions between the various modules. What is achieved by keeping these functionalities separate is ''reusability'' which is one of the major advantages of MVC.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Evolution of MVC ==&lt;br /&gt;
&lt;br /&gt;
=== MVC Architecture ===&lt;br /&gt;
Over all these years, history of MVC architecture has become dim. MVC was first modeled at Xerox PARC in the 70's. Trygve Reenskaug was the one who wrote original notes on MVC in 1978 but he never got to publish them. His first note on the MVC pattern consisted of : Model, View, Controller and Editor. The 'Editor' is a short-lived component that the 'View' creates when necessary. This component is created as an interface between the 'View' and the input devices. After Reenskaug left Xerox PARC, Jim Althoff with a group of other people implemented a version of MVC specific to the Smalltalk-80 class library [http://heim.ifi.uio.no/~trygver/themes/mvc/mvc-index.html]. Even though they changed his implementation and removed the 'Editor', Trygve Reenskaug was credited for his work.&lt;br /&gt;
&lt;br /&gt;
=== MVP Architecture ===&lt;br /&gt;
After the implementation of Smalltalk-80 MVC, there were a few downsides to MVC approach and so a new variant of MVC was introduced - MVP (Model View Presenter). It was very similar to MVC controller. The only difference was in the way the presenter was linked to the associated views. But over time, the difference got more obscure and now implementations of MVC frameworks follow more concepts of MVP [http://www.typo3-media.com/blog/mvc-mvp-typo3-introduction.html].&lt;br /&gt;
&lt;br /&gt;
=== MVC Design Pattern ===&lt;br /&gt;
Ward Cunningham and Ken Beck who were working with Smalltalk were the first to start the MVC design pattern in 1987. The MVC design pattern is different from the MVC architectural pattern. In fact there are many other design patterns - Analysis, Creational, Structural, Behavioral [http://en.wikipedia.org/wiki/Design_pattern_%28computer_science%29]].  More information on the use of MVC as an architectural pattern or a design pattern can be found at [http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Comparison of the MVC implementations in various web-based frameworks ==&lt;br /&gt;
MVC being a framework can be exploited to work with various languages. A list of such languages would include C++, JAVA, Ruby, Flex, DOT NET and many more [http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller#Implementations_of_MVC_as_web-based_frameworks]. All the implementations of MVC fall into three categories: Oringinal MVC framework, Model 2 MVC framework and Web application framework.&lt;br /&gt;
&lt;br /&gt;
=== Original MVC ===&lt;br /&gt;
[[Image:MVC2.jpg|thumb]]&lt;br /&gt;
&lt;br /&gt;
The original MVC pattern is very simple and has a very different path for the data, request and response of the user. Here the Controller modifies the Model accordingly but does not interact with Views. The Views are updated directly by the Model. When the Model changes during an event, an observer design pattern is implemented to change the View in response to the event. Thus the View is continuously observing the Model, and gets updated. &lt;br /&gt;
&lt;br /&gt;
This original pattern helps in ''Separated Presentation''. According to Martin Fowler, Separated Presentation means &amp;quot;Ensure that any code that manipulates presentation only manipulates presentation, pushing all domain and data source logic into clearly separated areas of the program&amp;quot; [http://www.martinfowler.com/eaaDev/uiArchs.html].&lt;br /&gt;
&lt;br /&gt;
Original MVC Model is very simple to understand and implement. It was the early approach for web-application development but is still used for simple applications. It is used for quick development. But the relation between View, Model and Controller, makes it difficult for different teams to work on it. Thus even though the implementation is easy, work ''cannot'' be divided. &lt;br /&gt;
&lt;br /&gt;
Not many web-based frameworks use this approach. JavaServer Pages (JSP) uses this approach. This approach is also called page-centric approach. Here we only build JSP pages which interact with users and adopt the Model 1 approach to creating a JSP application; browser requests are handled by a JavaServer Page directly. These pages only send the request further for processing. After all the processing is done and the content is generated dynamically, it is displayed back to the user [http://tutorials.beginners.co.uk/professional-jsp-architecture-part-4-the-page-centric-approach.htm].&lt;br /&gt;
&lt;br /&gt;
=== Model 2 MVC Framework === &lt;br /&gt;
&lt;br /&gt;
[[Image:MVC3.jpg|thumb]]&lt;br /&gt;
&lt;br /&gt;
Most of the web-based implementations follow this version of the MVC framework. Any present MVC framework is considered synonymous with this model. In this model, there is no more contact between 'Model' and 'View'. Everything happens with the 'Controller' at the center. Controller is responsible for co-ordinating the tasks within an application. &lt;br /&gt;
&lt;br /&gt;
Whenever a request arrives, it first goes to Controller, then it passes the data to Model for validation and processing. Then if the Model needs to pass some data back to the View, it does so, through the Controller, which invokes the View.&lt;br /&gt;
&lt;br /&gt;
Model 2 MVC framework helps to create complex applications easily. This approach is used for web-based applications that need to be modified regularly and maintained for a long time. Because of this clean separation between the three components, it becomes easy for a development team to work on an application by adopting a modular approach. In other words, if one group in the Development team works on the 'View' of the application, another group can work on the implementation details of the 'Model'. [http://stephenwalther.com/blog/archive/2008/08/24/the-evolution-of-mvc.aspx]&lt;br /&gt;
&lt;br /&gt;
Model 2 MVC framework has been greatly appreciated by the industry. In Python, frameworks like Django [http://en.wikipedia.org/wiki/Django_web_framework] have used it. And, of course, in the ASP.NET world, frameworks like ASP.NET MVC [http://en.wikipedia.org/wiki/ASP.NET_MVC_Framework], Maverick .NET [http://en.wikipedia.org/wiki/Maverick.NET] etc have used it.&lt;br /&gt;
&lt;br /&gt;
There are many frameworks in Ruby which implement MVC. Some of them are Monkeybars, Camping, Nitro, and Ruby on Rails etc. Ruby on Rails is the most widely known MVC framework pattern and will be easy to understand due to our previous background.[http://www.tutorialspoint.com/ruby-on-rails/rails-framework.htm]. Ruby on Rails provides special features to implement MVC framework. It enables you to create the MVC file structure easily. It is divided into separate packages that get included by the Model, View and Controller files automatically.&lt;br /&gt;
&lt;br /&gt;
* Model (ActiveRecord) : The ActiveRecord package maintains all the library functions which are required for binding the interface (i.e. object) and database. It also helps in handling validation, association, transactions, and more. Inclusion of this package enables Model to implement its functions.&lt;br /&gt;
* View (ActionView) : The ActionView package implements Embedded Ruby(ERb) based system. These help to define templates for data presentation. By including this library, the view files can use scripting languages like JSP, ASP, and PHP to display data. It also helps to integrate AJAX technology with these files.&lt;br /&gt;
* Controller (ActionController): The ActionController package is included in a controller file by default when it is created. This gives default controller behavior to it. It helps to organize the data by searching and sorting so that the view does not have any calculations to perform. ActionController package acts like a bridge between ActiveRecord (the database interface) and ActionView (the presentation engine).&lt;br /&gt;
&lt;br /&gt;
Thus ActionController and ActionView provide facilities for displaying the data and ActionRecord provides techniques for manipulating the database.&lt;br /&gt;
&lt;br /&gt;
=== Web Application Framework ===&lt;br /&gt;
After the Model 2 MVC framework became popular, it was enhanced further for its use on enterprise-based web applications. JAVA, PHP, Flex tools and the like became highly popular with their applications in web development. These technologies came up with their own MVC frameworks. A few well-known web application MVC frameworks are Struts and Spring (JAVA based), Cairngorm (Flex), Symfony Framework (PHP). All these frameworks are typically based on MVC Model 2, but have added a rich set of features and unit-testing that facilitate easy maintenance of the web-application.&lt;br /&gt;
&lt;br /&gt;
Struts from Apache is a an open source MVC based framework for creating JAVA applications [http://struts.apache.org/]&lt;br /&gt;
&lt;br /&gt;
The framework provides three key components:&lt;br /&gt;
* There is a central configuration file struts-config.xml that holds together the model, view and controller.&lt;br /&gt;
* Controller: The controller is a Servlet called as ActionServlet.&lt;br /&gt;
* View: Typically involves using JSP pages.&lt;br /&gt;
&lt;br /&gt;
Requests from the client are sent to the controller in the form of &amp;quot;Actions&amp;quot; defined in the configuration file; if the controller receives such a request it calls the corresponding Action class that interacts with the application-specific model code. The model code returns an &amp;quot;ActionForward&amp;quot;, a string telling the controller that output page needs to be sent to the client. Information is passed between model and view in the form of special JavaBeans. A powerful custom tag library allows it to read and write the content of these beans from the presentation layer without the need for any embedded Java code. [http://en.wikipedia.org/wiki/Apache_Struts]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
This wiki thus throws light on what is a MVC pattern, how MVC evolved since its first proposal by Reenskaug, and how it is still evolving in the present in terms of the framework specifications pertaining to different forms of programming languages. MVC architecture, MVP architecture, MVC design pattern are the variants of MVC pattern that were modeled in the path of its evolution. And finally, we highlighted how MVC got differentiated into Model 1 MVC, Model 2 MVC and the most recent form: Web-based MVC framework that highly dwells on the Model 2 version.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
# [http://heim.ifi.uio.no/~trygver/themes/mvc/mvc-index.html Trygve Reenskaug's early document on MVC]&lt;br /&gt;
# [http://www.typo3-media.com/blog/mvc-mvp-typo3-introduction.html MVC: Introduction and History]&lt;br /&gt;
# [http://en.wikipedia.org/wiki/Design_pattern_%28computer_science%29 Wikipedia page on 'Design Pattern']&lt;br /&gt;
# [http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller Wikipedia page on 'MVC']&lt;br /&gt;
# [http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller#Implementations_of_MVC_as_web-based_frameworks Wikipedia page on 'Implementation of MVC as web-based frameworks']&lt;br /&gt;
# [http://www.martinfowler.com/eaaDev/uiArchs.html MVC and MVP]&lt;br /&gt;
# [http://tutorials.beginners.co.uk/professional-jsp-architecture-part-4-the-page-centric-approach.htm JSP: The page-centric approach]&lt;br /&gt;
# [http://stephenwalther.com/blog/archive/2008/08/24/the-evolution-of-mvc.aspx Evolution of MVC]&lt;br /&gt;
# [http://en.wikipedia.org/wiki/Django_web_framework Wikipedia page on 'Django web framework']&lt;br /&gt;
# [http://en.wikipedia.org/wiki/ASP.NET_MVC_Framework Wikipedia page on 'ASP.NET web framework']&lt;br /&gt;
# [http://en.wikipedia.org/wiki/Maverick.NET Wikipedia page on 'Maverick.NET']&lt;br /&gt;
# [http://www.tutorialspoint.com/ruby-on-rails/rails-framework.htm Ruby on Rails framework tutorial]&lt;br /&gt;
# [http://struts.apache.org/ Struts framework]&lt;br /&gt;
# [http://en.wikipedia.org/wiki/Apache_Struts Wikipedia page on Apache Struts]&lt;/div&gt;</summary>
		<author><name>Zivora</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_13_za&amp;diff=20423</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 13 za</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_13_za&amp;diff=20423"/>
		<updated>2009-09-20T17:19:13Z</updated>

		<summary type="html">&lt;p&gt;Zivora: /* Original MVC */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''History and Applications of the MVC Pattern'''&lt;br /&gt;
== MVC - the ''buzz'' term! ==&lt;br /&gt;
[[Image:mvc.png|thumb|Image taken from www.symfony-project.org]]&lt;br /&gt;
&lt;br /&gt;
MVC (Model-View-Controller) offers a framework consisting of a Model that enforces the logical rules that should be applied to the data.  A View is pertaining to the user-interface. It helps the user to interact with the Model. Finally the Controller acts as the point of communication between the Model and the View, taking inputs or requests from the user and manipulating or processing the underlying data accordingly to provide the user with the desired outputs. For example, in an e-commerce business setting, a model will make sure that the shipping charges are correctly applied, a view will generate pages displaying the items available and a controller will make sure to add selected products to the cart of the customer.&lt;br /&gt;
&lt;br /&gt;
MVC offers a clear separation of the presentation logic from the business logic. This is the main reason, why it has been widely used architecture for web-based application. With an MVC framework, it becomes easy to accommodate future changes and implementations in design or code. MVC pattern gained prominence because of its clean modular approach that allow programmers to follow a formal approach for implementing business or enterprise level applications. Though, it is worth mentioning that using the MVC methodology for designing applications requires a lot of planning in terms of working out the separations in design and how the modules would interact. What is achieved by keeping these functionalities separate is ''reusability'' which is one of the major advantages of MVC.&lt;br /&gt;
&lt;br /&gt;
== Evolution of MVC ==&lt;br /&gt;
=== MVC Architecture ===&lt;br /&gt;
Over all these years, history of MVC architecture has become dim. MVC was invented at Xerox Parc in the 70's. Trygve Reenskaug was the one who wrote original notes on MVC in 1978 but he never got to publish them. His first note on the MVC pattern consisted of : Model, View, Controller and Editor. The 'Editor' is a short-lived component that the 'View' creates when necessary. This component is created as an interface between the 'View' and the input devices. After Reenskaug left Xerox PARC, Jim Althoff with a group of other people implemented a version of MVC specific to the Smalltalk-80 class library [Ref [http://heim.ifi.uio.no/~trygver/themes/mvc/mvc-index.html]].Even though they changed his implementation and removed the 'Editor' , Trygve Reenskaug was credited for his work. &lt;br /&gt;
&lt;br /&gt;
=== MVP Architecture ===&lt;br /&gt;
After the implementation of smalltalks-80 MVC, there were a few downsides to MVC approach and so a new variant of MVC was introduced MVP (Model View Presenter). It was very similar too MVC controller. The only difference lies in the way presenter is linked to the associated views. But over time, the difference got more obscure and now implementations of MVC frameworks follow more concept of MVP[Ref [http://www.typo3-media.com/blog/mvc-mvp-typo3-introduction.html]].&lt;br /&gt;
&lt;br /&gt;
=== MVC Design Pattern ===&lt;br /&gt;
Ward Cunningham and Ken Beck who were working with Smalltalk were the first to start the MVC design pattern in 1987. The MVC design pattern is different from the MVC architectural pattern. In fact there are many other design patterns - Analysis, Creational, Structural, Behavioral [Ref [http://en.wikipedia.org/wiki/Design_pattern_%28computer_science%29]].  More information on the use of MVC as an architectural pattern or a design pattern can be found at [http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller]&lt;br /&gt;
&lt;br /&gt;
== Comparison of the MVC implementations in various web-based frameworks ==&lt;br /&gt;
MVC being a framework can be exploited to work with various languages. A list of such languages would include C++, JAVA, Ruby, Flex, DOT NET and many more [Ref [http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller#Implementations_of_MVC_as_web-based_frameworks]]. We make an attempt here to compare the different implementations of MVC, with respect to the different programming and markup languages. But all the implementations of MVC fall into three categories, Oringinal MVC framework, Model 2 MVC framework and Web application framework. So we will look at each implementation and compare them.&lt;br /&gt;
&lt;br /&gt;
=== Original MVC ===&lt;br /&gt;
Include this image [[http://stephenwalther.com/blog/images/stephenwalther_com/blog/WindowsLiveWriter/TheEvolutionofMVC_CBBD/image_2.png]]&lt;br /&gt;
&lt;br /&gt;
The original MVC pattern is very simple and have a very different path for the data, request and response of the user. Here the Controller modify the Model accordingly but does not interact with Views. The Views are updated directly by the Model. When the Model changes during an event, an observer design pattern is implemented to change the View in response to the event. Thus the View is continuously observing the Model, and gets updated. &lt;br /&gt;
&lt;br /&gt;
This original pattern helps in Separated Presentation. According to Martin Fowler, Separated Presentation means &amp;quot;Ensure that any code that manipulates presentation only manipulates presentation, pushing all domain and data source logic into clearly separated areas of the program&amp;quot;. [http://www.martinfowler.com/eaaDev/uiArchs.html]&lt;br /&gt;
&lt;br /&gt;
Original MVC Model is very simple to understand and implement too. It was the early approach for web-application development but still used for simple application. It is used for quick development. But the relation between View, Model and Controller, makes it difficult for different teams to work on it. Thus even though implementation is easy, work can not be divided. &lt;br /&gt;
&lt;br /&gt;
Not many web-based frameworks use this approach. JavaServer Pages (JSP) uses this approach. This approach is also called page-centric approach also. Here we only build JSP pages which interact with users and handle In the Model 1 approach to creating a JSP application, browser requests are handled by a JavaServer Page directly. These pages only send the request further for processing. These pages go ahead and display the dynamic content generated [http://tutorials.beginners.co.uk/professional-jsp-architecture-part-4-the-page-centric-approach.htm].&lt;br /&gt;
&lt;br /&gt;
=== Model 2 MVC Framework === &lt;br /&gt;
&lt;br /&gt;
Include this image [http://stephenwalther.com/blog/images/stephenwalther_com/blog/WindowsLiveWriter/TheEvolutionofMVC_CBBD/image_4.png]&lt;br /&gt;
&lt;br /&gt;
This framework is used by mostly all the web-based implementations. MVC framework is now considered as this model only. In this model, there is no more contact between Model and View. Everything happens with Controller at its center. Controller is responsible for co-ordinating the application. &lt;br /&gt;
&lt;br /&gt;
Whenever a request arrives it goes to Controller first, then it passes the data to Model for validation and handling of data. Then if Model needs to pass some data back to the View, it also passes through Controller which invokes View.&lt;br /&gt;
&lt;br /&gt;
Model 2 MVC framework helps you to create complex application easily. This approach is used for web-based application which need to be modified regularly and maintained for a long time. It helps in development also, as View and Controller are so distinct they can be worked by different teams. And with simple View, the designing team can do wonders without affecting the Controller. [http://stephenwalther.com/blog/archive/2008/08/24/the-evolution-of-mvc.aspx]&lt;br /&gt;
&lt;br /&gt;
Model 2 MVC framework has been greatly appreciated by the industry. In Python, frameworks like Django [http://en.wikipedia.org/wiki/Django_web_framework] have used it. And, of course, in the ASP.NET world, frameworks like ASP.NET MVC [http://en.wikipedia.org/wiki/ASP.NET_MVC_Framework], Maverick .NET [http://en.wikipedia.org/wiki/Maverick.NET] etc have used it.&lt;br /&gt;
&lt;br /&gt;
There are many frameworks in Ruby which implement MVC. Some of them are Monkeybars, Camping, Nitro, and Ruby on Rails etc. Ruby on Rails is the most widely know MVC framework pattern and will be easy to understand due to our previous background.[http://www.tutorialspoint.com/ruby-on-rails/rails-framework.htm]. Ruby on Rails provides special features to implement MVC framework. It enables you to create the MVC file structure easily. It is divided into separate packages which gets included by the model, view and controller files automatically to connect the functionalities of these files.&lt;br /&gt;
&lt;br /&gt;
* Model (ActiveRecord) : The ActiveRecord package maintains all the library functions which are required for binding the interface (i.e. object) and database. It also helps in handling validation, association, transactions, and more. Thus inclusion of this package enables Model to implement its functions.&lt;br /&gt;
* View (ActionView) : The ActionView package implements Embedded Ruby(ERb) based system. These help to define templates for data presentation. By including this library, the view files can use scripting languages like JSP, ASP, and PHP to display the data. It also helps to integrate AJAX technology with these files.&lt;br /&gt;
* Controller (ActionController): The ActionController package is included in a controller file by default when it is created. This gives default controller behavior to it. It helps to organize the data by searching and sorting so that the view does not have any calculations to perform.ActionController package acts like a bridge between ActiveRecord (the database interface) and ActionView (the presentation engine).&lt;br /&gt;
&lt;br /&gt;
Thus ActionController and ActionView provide facilities for displaying the data and ActionRecord provides techniques for manipulating database.&lt;br /&gt;
&lt;br /&gt;
== Flex ==&lt;br /&gt;
Cairngnorm is considered to be the best practice methodology for Flex software design [http://www.adobe.com/devnet/flex/articles/introducing_cairngorm.html]&lt;br /&gt;
&lt;br /&gt;
=== JAVA === &lt;br /&gt;
There are many frameworks like Struts, Spring which adopt the MVC methodology and are pertaining to JAVA.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PHP === &lt;br /&gt;
It has a plethora of MVC implementations. The top 10 MVC-based PHP frameworks are &lt;br /&gt;
# Symfony: Based on Mojavi and inspired by Rails&lt;br /&gt;
# Mojavi&lt;br /&gt;
# CakePHP: Inspired by Rails PHP4/5&lt;br /&gt;
# PHPOnTrax: a Rails port - PHP5 Only&lt;br /&gt;
# Prado: The winner of Zend coding contest&lt;br /&gt;
# Studs: A Java-Struts port to PHP&lt;br /&gt;
# Phrame: A Java-Struts port&lt;br /&gt;
# Achievo: A good RAD framework&lt;br /&gt;
# WACT: Web Application Component Toolkit&lt;br /&gt;
# Ambivalence: A Java-Maverick Port&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;/div&gt;</summary>
		<author><name>Zivora</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_13_za&amp;diff=20422</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 13 za</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_13_za&amp;diff=20422"/>
		<updated>2009-09-20T17:18:56Z</updated>

		<summary type="html">&lt;p&gt;Zivora: /* Model 2 MVC Framework */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''History and Applications of the MVC Pattern'''&lt;br /&gt;
== MVC - the ''buzz'' term! ==&lt;br /&gt;
[[Image:mvc.png|thumb|Image taken from www.symfony-project.org]]&lt;br /&gt;
&lt;br /&gt;
MVC (Model-View-Controller) offers a framework consisting of a Model that enforces the logical rules that should be applied to the data.  A View is pertaining to the user-interface. It helps the user to interact with the Model. Finally the Controller acts as the point of communication between the Model and the View, taking inputs or requests from the user and manipulating or processing the underlying data accordingly to provide the user with the desired outputs. For example, in an e-commerce business setting, a model will make sure that the shipping charges are correctly applied, a view will generate pages displaying the items available and a controller will make sure to add selected products to the cart of the customer.&lt;br /&gt;
&lt;br /&gt;
MVC offers a clear separation of the presentation logic from the business logic. This is the main reason, why it has been widely used architecture for web-based application. With an MVC framework, it becomes easy to accommodate future changes and implementations in design or code. MVC pattern gained prominence because of its clean modular approach that allow programmers to follow a formal approach for implementing business or enterprise level applications. Though, it is worth mentioning that using the MVC methodology for designing applications requires a lot of planning in terms of working out the separations in design and how the modules would interact. What is achieved by keeping these functionalities separate is ''reusability'' which is one of the major advantages of MVC.&lt;br /&gt;
&lt;br /&gt;
== Evolution of MVC ==&lt;br /&gt;
=== MVC Architecture ===&lt;br /&gt;
Over all these years, history of MVC architecture has become dim. MVC was invented at Xerox Parc in the 70's. Trygve Reenskaug was the one who wrote original notes on MVC in 1978 but he never got to publish them. His first note on the MVC pattern consisted of : Model, View, Controller and Editor. The 'Editor' is a short-lived component that the 'View' creates when necessary. This component is created as an interface between the 'View' and the input devices. After Reenskaug left Xerox PARC, Jim Althoff with a group of other people implemented a version of MVC specific to the Smalltalk-80 class library [Ref [http://heim.ifi.uio.no/~trygver/themes/mvc/mvc-index.html]].Even though they changed his implementation and removed the 'Editor' , Trygve Reenskaug was credited for his work. &lt;br /&gt;
&lt;br /&gt;
=== MVP Architecture ===&lt;br /&gt;
After the implementation of smalltalks-80 MVC, there were a few downsides to MVC approach and so a new variant of MVC was introduced MVP (Model View Presenter). It was very similar too MVC controller. The only difference lies in the way presenter is linked to the associated views. But over time, the difference got more obscure and now implementations of MVC frameworks follow more concept of MVP[Ref [http://www.typo3-media.com/blog/mvc-mvp-typo3-introduction.html]].&lt;br /&gt;
&lt;br /&gt;
=== MVC Design Pattern ===&lt;br /&gt;
Ward Cunningham and Ken Beck who were working with Smalltalk were the first to start the MVC design pattern in 1987. The MVC design pattern is different from the MVC architectural pattern. In fact there are many other design patterns - Analysis, Creational, Structural, Behavioral [Ref [http://en.wikipedia.org/wiki/Design_pattern_%28computer_science%29]].  More information on the use of MVC as an architectural pattern or a design pattern can be found at [http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller]&lt;br /&gt;
&lt;br /&gt;
== Comparison of the MVC implementations in various web-based frameworks ==&lt;br /&gt;
MVC being a framework can be exploited to work with various languages. A list of such languages would include C++, JAVA, Ruby, Flex, DOT NET and many more [Ref [http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller#Implementations_of_MVC_as_web-based_frameworks]]. We make an attempt here to compare the different implementations of MVC, with respect to the different programming and markup languages. But all the implementations of MVC fall into three categories, Oringinal MVC framework, Model 2 MVC framework and Web application framework. So we will look at each implementation and compare them.&lt;br /&gt;
&lt;br /&gt;
=== Original MVC ===&lt;br /&gt;
[[http://stephenwalther.com/blog/images/stephenwalther_com/blog/WindowsLiveWriter/TheEvolutionofMVC_CBBD/image_2.png]]&lt;br /&gt;
&lt;br /&gt;
The original MVC pattern is very simple and have a very different path for the data, request and response of the user. Here the Controller modify the Model accordingly but does not interact with Views. The Views are updated directly by the Model. When the Model changes during an event, an observer design pattern is implemented to change the View in response to the event. Thus the View is continuously observing the Model, and gets updated. &lt;br /&gt;
&lt;br /&gt;
This original pattern helps in Separated Presentation. According to Martin Fowler, Separated Presentation means &amp;quot;Ensure that any code that manipulates presentation only manipulates presentation, pushing all domain and data source logic into clearly separated areas of the program&amp;quot;. [http://www.martinfowler.com/eaaDev/uiArchs.html]&lt;br /&gt;
&lt;br /&gt;
Original MVC Model is very simple to understand and implement too. It was the early approach for web-application development but still used for simple application. It is used for quick development. But the relation between View, Model and Controller, makes it difficult for different teams to work on it. Thus even though implementation is easy, work can not be divided. &lt;br /&gt;
&lt;br /&gt;
Not many web-based frameworks use this approach. JavaServer Pages (JSP) uses this approach. This approach is also called page-centric approach also. Here we only build JSP pages which interact with users and handle In the Model 1 approach to creating a JSP application, browser requests are handled by a JavaServer Page directly. These pages only send the request further for processing. These pages go ahead and display the dynamic content generated [http://tutorials.beginners.co.uk/professional-jsp-architecture-part-4-the-page-centric-approach.htm].&lt;br /&gt;
&lt;br /&gt;
=== Model 2 MVC Framework === &lt;br /&gt;
&lt;br /&gt;
Include this image [http://stephenwalther.com/blog/images/stephenwalther_com/blog/WindowsLiveWriter/TheEvolutionofMVC_CBBD/image_4.png]&lt;br /&gt;
&lt;br /&gt;
This framework is used by mostly all the web-based implementations. MVC framework is now considered as this model only. In this model, there is no more contact between Model and View. Everything happens with Controller at its center. Controller is responsible for co-ordinating the application. &lt;br /&gt;
&lt;br /&gt;
Whenever a request arrives it goes to Controller first, then it passes the data to Model for validation and handling of data. Then if Model needs to pass some data back to the View, it also passes through Controller which invokes View.&lt;br /&gt;
&lt;br /&gt;
Model 2 MVC framework helps you to create complex application easily. This approach is used for web-based application which need to be modified regularly and maintained for a long time. It helps in development also, as View and Controller are so distinct they can be worked by different teams. And with simple View, the designing team can do wonders without affecting the Controller. [http://stephenwalther.com/blog/archive/2008/08/24/the-evolution-of-mvc.aspx]&lt;br /&gt;
&lt;br /&gt;
Model 2 MVC framework has been greatly appreciated by the industry. In Python, frameworks like Django [http://en.wikipedia.org/wiki/Django_web_framework] have used it. And, of course, in the ASP.NET world, frameworks like ASP.NET MVC [http://en.wikipedia.org/wiki/ASP.NET_MVC_Framework], Maverick .NET [http://en.wikipedia.org/wiki/Maverick.NET] etc have used it.&lt;br /&gt;
&lt;br /&gt;
There are many frameworks in Ruby which implement MVC. Some of them are Monkeybars, Camping, Nitro, and Ruby on Rails etc. Ruby on Rails is the most widely know MVC framework pattern and will be easy to understand due to our previous background.[http://www.tutorialspoint.com/ruby-on-rails/rails-framework.htm]. Ruby on Rails provides special features to implement MVC framework. It enables you to create the MVC file structure easily. It is divided into separate packages which gets included by the model, view and controller files automatically to connect the functionalities of these files.&lt;br /&gt;
&lt;br /&gt;
* Model (ActiveRecord) : The ActiveRecord package maintains all the library functions which are required for binding the interface (i.e. object) and database. It also helps in handling validation, association, transactions, and more. Thus inclusion of this package enables Model to implement its functions.&lt;br /&gt;
* View (ActionView) : The ActionView package implements Embedded Ruby(ERb) based system. These help to define templates for data presentation. By including this library, the view files can use scripting languages like JSP, ASP, and PHP to display the data. It also helps to integrate AJAX technology with these files.&lt;br /&gt;
* Controller (ActionController): The ActionController package is included in a controller file by default when it is created. This gives default controller behavior to it. It helps to organize the data by searching and sorting so that the view does not have any calculations to perform.ActionController package acts like a bridge between ActiveRecord (the database interface) and ActionView (the presentation engine).&lt;br /&gt;
&lt;br /&gt;
Thus ActionController and ActionView provide facilities for displaying the data and ActionRecord provides techniques for manipulating database.&lt;br /&gt;
&lt;br /&gt;
== Flex ==&lt;br /&gt;
Cairngnorm is considered to be the best practice methodology for Flex software design [http://www.adobe.com/devnet/flex/articles/introducing_cairngorm.html]&lt;br /&gt;
&lt;br /&gt;
=== JAVA === &lt;br /&gt;
There are many frameworks like Struts, Spring which adopt the MVC methodology and are pertaining to JAVA.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PHP === &lt;br /&gt;
It has a plethora of MVC implementations. The top 10 MVC-based PHP frameworks are &lt;br /&gt;
# Symfony: Based on Mojavi and inspired by Rails&lt;br /&gt;
# Mojavi&lt;br /&gt;
# CakePHP: Inspired by Rails PHP4/5&lt;br /&gt;
# PHPOnTrax: a Rails port - PHP5 Only&lt;br /&gt;
# Prado: The winner of Zend coding contest&lt;br /&gt;
# Studs: A Java-Struts port to PHP&lt;br /&gt;
# Phrame: A Java-Struts port&lt;br /&gt;
# Achievo: A good RAD framework&lt;br /&gt;
# WACT: Web Application Component Toolkit&lt;br /&gt;
# Ambivalence: A Java-Maverick Port&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;/div&gt;</summary>
		<author><name>Zivora</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_13_za&amp;diff=20421</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 13 za</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_13_za&amp;diff=20421"/>
		<updated>2009-09-20T17:18:17Z</updated>

		<summary type="html">&lt;p&gt;Zivora: /* Original MVC */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''History and Applications of the MVC Pattern'''&lt;br /&gt;
== MVC - the ''buzz'' term! ==&lt;br /&gt;
[[Image:mvc.png|thumb|Image taken from www.symfony-project.org]]&lt;br /&gt;
&lt;br /&gt;
MVC (Model-View-Controller) offers a framework consisting of a Model that enforces the logical rules that should be applied to the data.  A View is pertaining to the user-interface. It helps the user to interact with the Model. Finally the Controller acts as the point of communication between the Model and the View, taking inputs or requests from the user and manipulating or processing the underlying data accordingly to provide the user with the desired outputs. For example, in an e-commerce business setting, a model will make sure that the shipping charges are correctly applied, a view will generate pages displaying the items available and a controller will make sure to add selected products to the cart of the customer.&lt;br /&gt;
&lt;br /&gt;
MVC offers a clear separation of the presentation logic from the business logic. This is the main reason, why it has been widely used architecture for web-based application. With an MVC framework, it becomes easy to accommodate future changes and implementations in design or code. MVC pattern gained prominence because of its clean modular approach that allow programmers to follow a formal approach for implementing business or enterprise level applications. Though, it is worth mentioning that using the MVC methodology for designing applications requires a lot of planning in terms of working out the separations in design and how the modules would interact. What is achieved by keeping these functionalities separate is ''reusability'' which is one of the major advantages of MVC.&lt;br /&gt;
&lt;br /&gt;
== Evolution of MVC ==&lt;br /&gt;
=== MVC Architecture ===&lt;br /&gt;
Over all these years, history of MVC architecture has become dim. MVC was invented at Xerox Parc in the 70's. Trygve Reenskaug was the one who wrote original notes on MVC in 1978 but he never got to publish them. His first note on the MVC pattern consisted of : Model, View, Controller and Editor. The 'Editor' is a short-lived component that the 'View' creates when necessary. This component is created as an interface between the 'View' and the input devices. After Reenskaug left Xerox PARC, Jim Althoff with a group of other people implemented a version of MVC specific to the Smalltalk-80 class library [Ref [http://heim.ifi.uio.no/~trygver/themes/mvc/mvc-index.html]].Even though they changed his implementation and removed the 'Editor' , Trygve Reenskaug was credited for his work. &lt;br /&gt;
&lt;br /&gt;
=== MVP Architecture ===&lt;br /&gt;
After the implementation of smalltalks-80 MVC, there were a few downsides to MVC approach and so a new variant of MVC was introduced MVP (Model View Presenter). It was very similar too MVC controller. The only difference lies in the way presenter is linked to the associated views. But over time, the difference got more obscure and now implementations of MVC frameworks follow more concept of MVP[Ref [http://www.typo3-media.com/blog/mvc-mvp-typo3-introduction.html]].&lt;br /&gt;
&lt;br /&gt;
=== MVC Design Pattern ===&lt;br /&gt;
Ward Cunningham and Ken Beck who were working with Smalltalk were the first to start the MVC design pattern in 1987. The MVC design pattern is different from the MVC architectural pattern. In fact there are many other design patterns - Analysis, Creational, Structural, Behavioral [Ref [http://en.wikipedia.org/wiki/Design_pattern_%28computer_science%29]].  More information on the use of MVC as an architectural pattern or a design pattern can be found at [http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller]&lt;br /&gt;
&lt;br /&gt;
== Comparison of the MVC implementations in various web-based frameworks ==&lt;br /&gt;
MVC being a framework can be exploited to work with various languages. A list of such languages would include C++, JAVA, Ruby, Flex, DOT NET and many more [Ref [http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller#Implementations_of_MVC_as_web-based_frameworks]]. We make an attempt here to compare the different implementations of MVC, with respect to the different programming and markup languages. But all the implementations of MVC fall into three categories, Oringinal MVC framework, Model 2 MVC framework and Web application framework. So we will look at each implementation and compare them.&lt;br /&gt;
&lt;br /&gt;
=== Original MVC ===&lt;br /&gt;
[[http://stephenwalther.com/blog/images/stephenwalther_com/blog/WindowsLiveWriter/TheEvolutionofMVC_CBBD/image_2.png]]&lt;br /&gt;
&lt;br /&gt;
The original MVC pattern is very simple and have a very different path for the data, request and response of the user. Here the Controller modify the Model accordingly but does not interact with Views. The Views are updated directly by the Model. When the Model changes during an event, an observer design pattern is implemented to change the View in response to the event. Thus the View is continuously observing the Model, and gets updated. &lt;br /&gt;
&lt;br /&gt;
This original pattern helps in Separated Presentation. According to Martin Fowler, Separated Presentation means &amp;quot;Ensure that any code that manipulates presentation only manipulates presentation, pushing all domain and data source logic into clearly separated areas of the program&amp;quot;. [http://www.martinfowler.com/eaaDev/uiArchs.html]&lt;br /&gt;
&lt;br /&gt;
Original MVC Model is very simple to understand and implement too. It was the early approach for web-application development but still used for simple application. It is used for quick development. But the relation between View, Model and Controller, makes it difficult for different teams to work on it. Thus even though implementation is easy, work can not be divided. &lt;br /&gt;
&lt;br /&gt;
Not many web-based frameworks use this approach. JavaServer Pages (JSP) uses this approach. This approach is also called page-centric approach also. Here we only build JSP pages which interact with users and handle In the Model 1 approach to creating a JSP application, browser requests are handled by a JavaServer Page directly. These pages only send the request further for processing. These pages go ahead and display the dynamic content generated [http://tutorials.beginners.co.uk/professional-jsp-architecture-part-4-the-page-centric-approach.htm].&lt;br /&gt;
&lt;br /&gt;
=== Model 2 MVC Framework === &lt;br /&gt;
&lt;br /&gt;
This framework is used by mostly all the web-based implementations. MVC framework is now considered as this model only. In this model, there is no more contact between Model and View. Everything happens with Controller at its center. Controller is responsible for co-ordinating the application. &lt;br /&gt;
&lt;br /&gt;
Whenever a request arrives it goes to Controller first, then it passes the data to Model for validation and handling of data. Then if Model needs to pass some data back to the View, it also passes through Controller which invokes View.&lt;br /&gt;
&lt;br /&gt;
Model 2 MVC framework helps you to create complex application easily. This approach is used for web-based application which need to be modified regularly and maintained for a long time. It helps in development also, as View and Controller are so distinct they can be worked by different teams. And with simple View, the designing team can do wonders without affecting the Controller. [http://stephenwalther.com/blog/archive/2008/08/24/the-evolution-of-mvc.aspx]&lt;br /&gt;
&lt;br /&gt;
Model 2 MVC framework has been greatly appreciated by the industry. In Python, frameworks like Django [http://en.wikipedia.org/wiki/Django_web_framework] have used it. And, of course, in the ASP.NET world, frameworks like ASP.NET MVC [http://en.wikipedia.org/wiki/ASP.NET_MVC_Framework], Maverick .NET [http://en.wikipedia.org/wiki/Maverick.NET] etc have used it.&lt;br /&gt;
&lt;br /&gt;
There are many frameworks in Ruby which implement MVC. Some of them are Monkeybars, Camping, Nitro, and Ruby on Rails etc. Ruby on Rails is the most widely know MVC framework pattern and will be easy to understand due to our previous background.[http://www.tutorialspoint.com/ruby-on-rails/rails-framework.htm]. Ruby on Rails provides special features to implement MVC framework. It enables you to create the MVC file structure easily. It is divided into separate packages which gets included by the model, view and controller files automatically to connect the functionalities of these files.&lt;br /&gt;
&lt;br /&gt;
* Model (ActiveRecord) : The ActiveRecord package maintains all the library functions which are required for binding the interface (i.e. object) and database. It also helps in handling validation, association, transactions, and more. Thus inclusion of this package enables Model to implement its functions.&lt;br /&gt;
* View (ActionView) : The ActionView package implements Embedded Ruby(ERb) based system. These help to define templates for data presentation. By including this library, the view files can use scripting languages like JSP, ASP, and PHP to display the data. It also helps to integrate AJAX technology with these files.&lt;br /&gt;
* Controller (ActionController): The ActionController package is included in a controller file by default when it is created. This gives default controller behavior to it. It helps to organize the data by searching and sorting so that the view does not have any calculations to perform.ActionController package acts like a bridge between ActiveRecord (the database interface) and ActionView (the presentation engine).&lt;br /&gt;
&lt;br /&gt;
Thus ActionController and ActionView provide facilities for displaying the data and ActionRecord provides techniques for manipulating database.&lt;br /&gt;
&lt;br /&gt;
== Flex ==&lt;br /&gt;
Cairngnorm is considered to be the best practice methodology for Flex software design [http://www.adobe.com/devnet/flex/articles/introducing_cairngorm.html]&lt;br /&gt;
&lt;br /&gt;
=== JAVA === &lt;br /&gt;
There are many frameworks like Struts, Spring which adopt the MVC methodology and are pertaining to JAVA.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PHP === &lt;br /&gt;
It has a plethora of MVC implementations. The top 10 MVC-based PHP frameworks are &lt;br /&gt;
# Symfony: Based on Mojavi and inspired by Rails&lt;br /&gt;
# Mojavi&lt;br /&gt;
# CakePHP: Inspired by Rails PHP4/5&lt;br /&gt;
# PHPOnTrax: a Rails port - PHP5 Only&lt;br /&gt;
# Prado: The winner of Zend coding contest&lt;br /&gt;
# Studs: A Java-Struts port to PHP&lt;br /&gt;
# Phrame: A Java-Struts port&lt;br /&gt;
# Achievo: A good RAD framework&lt;br /&gt;
# WACT: Web Application Component Toolkit&lt;br /&gt;
# Ambivalence: A Java-Maverick Port&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;/div&gt;</summary>
		<author><name>Zivora</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_13_za&amp;diff=20420</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 13 za</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_13_za&amp;diff=20420"/>
		<updated>2009-09-20T17:16:50Z</updated>

		<summary type="html">&lt;p&gt;Zivora: /* Original MVC */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''History and Applications of the MVC Pattern'''&lt;br /&gt;
== MVC - the ''buzz'' term! ==&lt;br /&gt;
[[Image:mvc.png|thumb|Image taken from www.symfony-project.org]]&lt;br /&gt;
&lt;br /&gt;
MVC (Model-View-Controller) offers a framework consisting of a Model that enforces the logical rules that should be applied to the data.  A View is pertaining to the user-interface. It helps the user to interact with the Model. Finally the Controller acts as the point of communication between the Model and the View, taking inputs or requests from the user and manipulating or processing the underlying data accordingly to provide the user with the desired outputs. For example, in an e-commerce business setting, a model will make sure that the shipping charges are correctly applied, a view will generate pages displaying the items available and a controller will make sure to add selected products to the cart of the customer.&lt;br /&gt;
&lt;br /&gt;
MVC offers a clear separation of the presentation logic from the business logic. This is the main reason, why it has been widely used architecture for web-based application. With an MVC framework, it becomes easy to accommodate future changes and implementations in design or code. MVC pattern gained prominence because of its clean modular approach that allow programmers to follow a formal approach for implementing business or enterprise level applications. Though, it is worth mentioning that using the MVC methodology for designing applications requires a lot of planning in terms of working out the separations in design and how the modules would interact. What is achieved by keeping these functionalities separate is ''reusability'' which is one of the major advantages of MVC.&lt;br /&gt;
&lt;br /&gt;
== Evolution of MVC ==&lt;br /&gt;
=== MVC Architecture ===&lt;br /&gt;
Over all these years, history of MVC architecture has become dim. MVC was invented at Xerox Parc in the 70's. Trygve Reenskaug was the one who wrote original notes on MVC in 1978 but he never got to publish them. His first note on the MVC pattern consisted of : Model, View, Controller and Editor. The 'Editor' is a short-lived component that the 'View' creates when necessary. This component is created as an interface between the 'View' and the input devices. After Reenskaug left Xerox PARC, Jim Althoff with a group of other people implemented a version of MVC specific to the Smalltalk-80 class library [Ref [http://heim.ifi.uio.no/~trygver/themes/mvc/mvc-index.html]].Even though they changed his implementation and removed the 'Editor' , Trygve Reenskaug was credited for his work. &lt;br /&gt;
&lt;br /&gt;
=== MVP Architecture ===&lt;br /&gt;
After the implementation of smalltalks-80 MVC, there were a few downsides to MVC approach and so a new variant of MVC was introduced MVP (Model View Presenter). It was very similar too MVC controller. The only difference lies in the way presenter is linked to the associated views. But over time, the difference got more obscure and now implementations of MVC frameworks follow more concept of MVP[Ref [http://www.typo3-media.com/blog/mvc-mvp-typo3-introduction.html]].&lt;br /&gt;
&lt;br /&gt;
=== MVC Design Pattern ===&lt;br /&gt;
Ward Cunningham and Ken Beck who were working with Smalltalk were the first to start the MVC design pattern in 1987. The MVC design pattern is different from the MVC architectural pattern. In fact there are many other design patterns - Analysis, Creational, Structural, Behavioral [Ref [http://en.wikipedia.org/wiki/Design_pattern_%28computer_science%29]].  More information on the use of MVC as an architectural pattern or a design pattern can be found at [http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller]&lt;br /&gt;
&lt;br /&gt;
== Comparison of the MVC implementations in various web-based frameworks ==&lt;br /&gt;
MVC being a framework can be exploited to work with various languages. A list of such languages would include C++, JAVA, Ruby, Flex, DOT NET and many more [Ref [http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller#Implementations_of_MVC_as_web-based_frameworks]]. We make an attempt here to compare the different implementations of MVC, with respect to the different programming and markup languages. But all the implementations of MVC fall into three categories, Oringinal MVC framework, Model 2 MVC framework and Web application framework. So we will look at each implementation and compare them.&lt;br /&gt;
&lt;br /&gt;
=== Original MVC ===&lt;br /&gt;
[[http://stephenwalther.com/blog/images/stephenwalther_com/blog/WindowsLiveWriter/TheEvolutionofMVC_CBBD/image_2.png]]&lt;br /&gt;
&lt;br /&gt;
The original MVC pattern was very simple and had a very different path for the data, request and response of the user. Here the Controller modify the Model accordingly but does not interact with Views. The Views are updated directly by the Model. When the Model changes during an event, an observer design pattern is implemented to change the View in response to the event. Thus the View is continuously observing the Model, and gets updated. &lt;br /&gt;
&lt;br /&gt;
This original pattern helps in Separated Presentation. According to Martin Fowler, Separated Presentation means &amp;quot;Ensure that any code that manipulates presentation only manipulates presentation, pushing all domain and data source logic into clearly separated areas of the program&amp;quot;. [http://www.martinfowler.com/eaaDev/uiArchs.html]&lt;br /&gt;
&lt;br /&gt;
Original MVC Model is very simple to understand and implement too. It was the early approach for web-application development but still used for simple application. It is used for quick development. But the relation between View, Model and Controller, makes it difficult for different teams to work on it. Thus even though implementation is easy, work can not be divided. &lt;br /&gt;
&lt;br /&gt;
Not many web-based frameworks use this approach. JavaServer Pages (JSP) uses this approach. This approach is also called page-centric approach also. Here we only build JSP pages which interact with users and handle In the Model 1 approach to creating a JSP application, browser requests are handled by a JavaServer Page directly. These pages only send the request further for processing. These pages go ahead and display the dynamic content generated [http://tutorials.beginners.co.uk/professional-jsp-architecture-part-4-the-page-centric-approach.htm].&lt;br /&gt;
&lt;br /&gt;
=== Model 2 MVC Framework === &lt;br /&gt;
&lt;br /&gt;
This framework is used by mostly all the web-based implementations. MVC framework is now considered as this model only. In this model, there is no more contact between Model and View. Everything happens with Controller at its center. Controller is responsible for co-ordinating the application. &lt;br /&gt;
&lt;br /&gt;
Whenever a request arrives it goes to Controller first, then it passes the data to Model for validation and handling of data. Then if Model needs to pass some data back to the View, it also passes through Controller which invokes View.&lt;br /&gt;
&lt;br /&gt;
Model 2 MVC framework helps you to create complex application easily. This approach is used for web-based application which need to be modified regularly and maintained for a long time. It helps in development also, as View and Controller are so distinct they can be worked by different teams. And with simple View, the designing team can do wonders without affecting the Controller. [http://stephenwalther.com/blog/archive/2008/08/24/the-evolution-of-mvc.aspx]&lt;br /&gt;
&lt;br /&gt;
Model 2 MVC framework has been greatly appreciated by the industry. In Python, frameworks like Django [http://en.wikipedia.org/wiki/Django_web_framework] have used it. And, of course, in the ASP.NET world, frameworks like ASP.NET MVC [http://en.wikipedia.org/wiki/ASP.NET_MVC_Framework], Maverick .NET [http://en.wikipedia.org/wiki/Maverick.NET] etc have used it.&lt;br /&gt;
&lt;br /&gt;
There are many frameworks in Ruby which implement MVC. Some of them are Monkeybars, Camping, Nitro, and Ruby on Rails etc. Ruby on Rails is the most widely know MVC framework pattern and will be easy to understand due to our previous background.[http://www.tutorialspoint.com/ruby-on-rails/rails-framework.htm]. Ruby on Rails provides special features to implement MVC framework. It enables you to create the MVC file structure easily. It is divided into separate packages which gets included by the model, view and controller files automatically to connect the functionalities of these files.&lt;br /&gt;
&lt;br /&gt;
* Model (ActiveRecord) : The ActiveRecord package maintains all the library functions which are required for binding the interface (i.e. object) and database. It also helps in handling validation, association, transactions, and more. Thus inclusion of this package enables Model to implement its functions.&lt;br /&gt;
* View (ActionView) : The ActionView package implements Embedded Ruby(ERb) based system. These help to define templates for data presentation. By including this library, the view files can use scripting languages like JSP, ASP, and PHP to display the data. It also helps to integrate AJAX technology with these files.&lt;br /&gt;
* Controller (ActionController): The ActionController package is included in a controller file by default when it is created. This gives default controller behavior to it. It helps to organize the data by searching and sorting so that the view does not have any calculations to perform.ActionController package acts like a bridge between ActiveRecord (the database interface) and ActionView (the presentation engine).&lt;br /&gt;
&lt;br /&gt;
Thus ActionController and ActionView provide facilities for displaying the data and ActionRecord provides techniques for manipulating database.&lt;br /&gt;
&lt;br /&gt;
== Flex ==&lt;br /&gt;
Cairngnorm is considered to be the best practice methodology for Flex software design [http://www.adobe.com/devnet/flex/articles/introducing_cairngorm.html]&lt;br /&gt;
&lt;br /&gt;
=== JAVA === &lt;br /&gt;
There are many frameworks like Struts, Spring which adopt the MVC methodology and are pertaining to JAVA.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PHP === &lt;br /&gt;
It has a plethora of MVC implementations. The top 10 MVC-based PHP frameworks are &lt;br /&gt;
# Symfony: Based on Mojavi and inspired by Rails&lt;br /&gt;
# Mojavi&lt;br /&gt;
# CakePHP: Inspired by Rails PHP4/5&lt;br /&gt;
# PHPOnTrax: a Rails port - PHP5 Only&lt;br /&gt;
# Prado: The winner of Zend coding contest&lt;br /&gt;
# Studs: A Java-Struts port to PHP&lt;br /&gt;
# Phrame: A Java-Struts port&lt;br /&gt;
# Achievo: A good RAD framework&lt;br /&gt;
# WACT: Web Application Component Toolkit&lt;br /&gt;
# Ambivalence: A Java-Maverick Port&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;/div&gt;</summary>
		<author><name>Zivora</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_13_za&amp;diff=20417</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 13 za</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_13_za&amp;diff=20417"/>
		<updated>2009-09-20T17:09:54Z</updated>

		<summary type="html">&lt;p&gt;Zivora: /* Model 2 MVC Framework */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''History and Applications of the MVC Pattern'''&lt;br /&gt;
== MVC - the ''buzz'' term! ==&lt;br /&gt;
[[Image:mvc.png|thumb|Image taken from www.symfony-project.org]]&lt;br /&gt;
&lt;br /&gt;
MVC (Model-View-Controller) offers a framework consisting of a Model that enforces the logical rules that should be applied to the data.  A View is pertaining to the user-interface. It helps the user to interact with the Model. Finally the Controller acts as the point of communication between the Model and the View, taking inputs or requests from the user and manipulating or processing the underlying data accordingly to provide the user with the desired outputs. For example, in an e-commerce business setting, a model will make sure that the shipping charges are correctly applied, a view will generate pages displaying the items available and a controller will make sure to add selected products to the cart of the customer.&lt;br /&gt;
&lt;br /&gt;
MVC offers a clear separation of the presentation logic from the business logic. This is the main reason, why it has been widely used architecture for web-based application. With an MVC framework, it becomes easy to accommodate future changes and implementations in design or code. MVC pattern gained prominence because of its clean modular approach that allow programmers to follow a formal approach for implementing business or enterprise level applications. Though, it is worth mentioning that using the MVC methodology for designing applications requires a lot of planning in terms of working out the separations in design and how the modules would interact. What is achieved by keeping these functionalities separate is ''reusability'' which is one of the major advantages of MVC.&lt;br /&gt;
&lt;br /&gt;
== Evolution of MVC ==&lt;br /&gt;
=== MVC Architecture ===&lt;br /&gt;
Over all these years, history of MVC architecture has become dim. MVC was invented at Xerox Parc in the 70's. Trygve Reenskaug was the one who wrote original notes on MVC in 1978 but he never got to publish them. His first note on the MVC pattern consisted of : Model, View, Controller and Editor. The 'Editor' is a short-lived component that the 'View' creates when necessary. This component is created as an interface between the 'View' and the input devices. After Reenskaug left Xerox PARC, Jim Althoff with a group of other people implemented a version of MVC specific to the Smalltalk-80 class library [Ref [http://heim.ifi.uio.no/~trygver/themes/mvc/mvc-index.html]].Even though they changed his implementation and removed the 'Editor' , Trygve Reenskaug was credited for his work. &lt;br /&gt;
&lt;br /&gt;
=== MVP Architecture ===&lt;br /&gt;
After the implementation of smalltalks-80 MVC, there were a few downsides to MVC approach and so a new variant of MVC was introduced MVP (Model View Presenter). It was very similar too MVC controller. The only difference lies in the way presenter is linked to the associated views. But over time, the difference got more obscure and now implementations of MVC frameworks follow more concept of MVP[Ref [http://www.typo3-media.com/blog/mvc-mvp-typo3-introduction.html]].&lt;br /&gt;
&lt;br /&gt;
=== MVC Design Pattern ===&lt;br /&gt;
Ward Cunningham and Ken Beck who were working with Smalltalk were the first to start the MVC design pattern in 1987. The MVC design pattern is different from the MVC architectural pattern. In fact there are many other design patterns - Analysis, Creational, Structural, Behavioral [Ref [http://en.wikipedia.org/wiki/Design_pattern_%28computer_science%29]].  More information on the use of MVC as an architectural pattern or a design pattern can be found at [http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller]&lt;br /&gt;
&lt;br /&gt;
== Comparison of the MVC implementations in various web-based frameworks ==&lt;br /&gt;
MVC being a framework can be exploited to work with various languages. A list of such languages would include C++, JAVA, Ruby, Flex, DOT NET and many more [Ref [http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller#Implementations_of_MVC_as_web-based_frameworks]]. We make an attempt here to compare the different implementations of MVC, with respect to the different programming and markup languages. But all the implementations of MVC fall into three categories, Oringinal MVC framework, Model 2 MVC framework and Web application framework. So we will look at each implementation and compare them.&lt;br /&gt;
&lt;br /&gt;
=== Original MVC ===&lt;br /&gt;
[[http://stephenwalther.com/blog/images/stephenwalther_com/blog/WindowsLiveWriter/TheEvolutionofMVC_CBBD/image_2.png]]&lt;br /&gt;
&lt;br /&gt;
The original MVC pattern was very simple and had a very different path for the data, request and response of the user. Here the Controller modify the Model accordingly but does not interact with Views. The Views are updated directly by the Model. When the Model changes during an event, an observer design pattern is implemented to change the View in response to the event. Thus the View is continuously observing the Model, and gets updated. &lt;br /&gt;
&lt;br /&gt;
This original pattern helps in Separated Presentation. According to Martin Fowler, Separated Presentation means &amp;quot;Ensure that any code that manipulates presentation only manipulates presentation, pushing all domain and data source logic into clearly separated areas of the program&amp;quot;. [http://www.martinfowler.com/eaaDev/uiArchs.html]&lt;br /&gt;
&lt;br /&gt;
Not many web-based frameworks use this approach. JavaServer Pages (JSP) used this approach.This approach is also called page-centric approach also. Here we only build JSP pages which interact with users and handle In the Model 1 approach to creating a JSP application, browser requests are handled by a JavaServer Page directly. These pages only send the request further for processing. These pages go ahead and display the dynamic content generated [http://tutorials.beginners.co.uk/professional-jsp-architecture-part-4-the-page-centric-approach.htm].&lt;br /&gt;
&lt;br /&gt;
=== Model 2 MVC Framework === &lt;br /&gt;
&lt;br /&gt;
This framework is used by mostly all the web-based implementations. MVC framework is now considered as this model only. In this model, there is no more contact between Model and View. Everything happens with Controller at its center. Controller is responsible for co-ordinating the application. &lt;br /&gt;
&lt;br /&gt;
Whenever a request arrives it goes to Controller first, then it passes the data to Model for validation and handling of data. Then if Model needs to pass some data back to the View, it also passes through Controller which invokes View.&lt;br /&gt;
&lt;br /&gt;
Model 2 MVC framework helps you to create complex application easily. This approach is used for web-based application which need to be modified regularly and maintained for a long time. It helps in development also, as View and Controller are so distinct they can be worked by different teams. And with simple View, the designing team can do wonders without affecting the Controller. [http://stephenwalther.com/blog/archive/2008/08/24/the-evolution-of-mvc.aspx]&lt;br /&gt;
&lt;br /&gt;
Model 2 MVC framework has been greatly appreciated by the industry. In Python, frameworks like Django [http://en.wikipedia.org/wiki/Django_web_framework] have used it. And, of course, in the ASP.NET world, frameworks like ASP.NET MVC [http://en.wikipedia.org/wiki/ASP.NET_MVC_Framework], Maverick .NET [http://en.wikipedia.org/wiki/Maverick.NET] etc have used it.&lt;br /&gt;
&lt;br /&gt;
There are many frameworks in Ruby which implement MVC. Some of them are Monkeybars, Camping, Nitro, and Ruby on Rails etc. Ruby on Rails is the most widely know MVC framework pattern and will be easy to understand due to our previous background.[http://www.tutorialspoint.com/ruby-on-rails/rails-framework.htm]. Ruby on Rails provides special features to implement MVC framework. It enables you to create the MVC file structure easily. It is divided into separate packages which gets included by the model, view and controller files automatically to connect the functionalities of these files.&lt;br /&gt;
&lt;br /&gt;
* Model (ActiveRecord) : The ActiveRecord package maintains all the library functions which are required for binding the interface (i.e. object) and database. It also helps in handling validation, association, transactions, and more. Thus inclusion of this package enables Model to implement its functions.&lt;br /&gt;
* View (ActionView) : The ActionView package implements Embedded Ruby(ERb) based system. These help to define templates for data presentation. By including this library, the view files can use scripting languages like JSP, ASP, and PHP to display the data. It also helps to integrate AJAX technology with these files.&lt;br /&gt;
* Controller (ActionController): The ActionController package is included in a controller file by default when it is created. This gives default controller behavior to it. It helps to organize the data by searching and sorting so that the view does not have any calculations to perform.ActionController package acts like a bridge between ActiveRecord (the database interface) and ActionView (the presentation engine).&lt;br /&gt;
&lt;br /&gt;
Thus ActionController and ActionView provide facilities for displaying the data and ActionRecord provides techniques for manipulating database.&lt;br /&gt;
&lt;br /&gt;
== Flex ==&lt;br /&gt;
Cairngnorm is considered to be the best practice methodology for Flex software design [http://www.adobe.com/devnet/flex/articles/introducing_cairngorm.html]&lt;br /&gt;
&lt;br /&gt;
=== JAVA === &lt;br /&gt;
There are many frameworks like Struts, Spring which adopt the MVC methodology and are pertaining to JAVA.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PHP === &lt;br /&gt;
It has a plethora of MVC implementations. The top 10 MVC-based PHP frameworks are &lt;br /&gt;
# Symfony: Based on Mojavi and inspired by Rails&lt;br /&gt;
# Mojavi&lt;br /&gt;
# CakePHP: Inspired by Rails PHP4/5&lt;br /&gt;
# PHPOnTrax: a Rails port - PHP5 Only&lt;br /&gt;
# Prado: The winner of Zend coding contest&lt;br /&gt;
# Studs: A Java-Struts port to PHP&lt;br /&gt;
# Phrame: A Java-Struts port&lt;br /&gt;
# Achievo: A good RAD framework&lt;br /&gt;
# WACT: Web Application Component Toolkit&lt;br /&gt;
# Ambivalence: A Java-Maverick Port&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;/div&gt;</summary>
		<author><name>Zivora</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_13_za&amp;diff=20405</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 13 za</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_13_za&amp;diff=20405"/>
		<updated>2009-09-20T16:37:35Z</updated>

		<summary type="html">&lt;p&gt;Zivora: /* Ruby */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''History and Applications of the MVC Pattern'''&lt;br /&gt;
== MVC - the ''buzz'' term! ==&lt;br /&gt;
[[Image:mvc.png|thumb|Image taken from www.symfony-project.org]]&lt;br /&gt;
&lt;br /&gt;
MVC (Model-View-Controller) offers a framework consisting of a Model that enforces the logical rules that should be applied to the data.  A View is pertaining to the user-interface. It helps the user to interact with the Model. Finally the Controller acts as the point of communication between the Model and the View, taking inputs or requests from the user and manipulating or processing the underlying data accordingly to provide the user with the desired outputs. For example, in an e-commerce business setting, a model will make sure that the shipping charges are correctly applied, a view will generate pages displaying the items available and a controller will make sure to add selected products to the cart of the customer.&lt;br /&gt;
&lt;br /&gt;
MVC offers a clear separation of the presentation logic from the business logic. This is the main reason, why it has been widely used architecture for web-based application. With an MVC framework, it becomes easy to accommodate future changes and implementations in design or code. MVC pattern gained prominence because of its clean modular approach that allow programmers to follow a formal approach for implementing business or enterprise level applications. Though, it is worth mentioning that using the MVC methodology for designing applications requires a lot of planning in terms of working out the separations in design and how the modules would interact. What is achieved by keeping these functionalities separate is ''reusability'' which is one of the major advantages of MVC.&lt;br /&gt;
&lt;br /&gt;
== Evolution of MVC ==&lt;br /&gt;
=== MVC Architecture ===&lt;br /&gt;
Over all these years, history of MVC architecture has become dim. MVC was invented at Xerox Parc in the 70's. Trygve Reenskaug was the one who wrote original notes on MVC in 1978 but he never got to publish them. His first note on the MVC pattern consisted of : Model, View, Controller and Editor. The 'Editor' is a short-lived component that the 'View' creates when necessary. This component is created as an interface between the 'View' and the input devices. After Reenskaug left Xerox PARC, Jim Althoff with a group of other people implemented a version of MVC specific to the Smalltalk-80 class library [Ref [http://heim.ifi.uio.no/~trygver/themes/mvc/mvc-index.html]].Even though they changed his implementation and removed the 'Editor' , Trygve Reenskaug was credited for his work. &lt;br /&gt;
&lt;br /&gt;
=== MVP Architecture ===&lt;br /&gt;
After the implementation of smalltalks-80 MVC, there were a few downsides to MVC approach and so a new variant of MVC was introduced MVP (Model View Presenter). It was very similar too MVC controller. The only difference lies in the way presenter is linked to the associated views. But over time, the difference got more obscure and now implementations of MVC frameworks follow more concept of MVP[Ref [http://www.typo3-media.com/blog/mvc-mvp-typo3-introduction.html]].&lt;br /&gt;
&lt;br /&gt;
=== MVC Design Pattern ===&lt;br /&gt;
Ward Cunningham and Ken Beck who were working with Smalltalk were the first to start the MVC design pattern in 1987. The MVC design pattern is different from the MVC architectural pattern. In fact there are many other design patterns - Analysis, Creational, Structural, Behavioral [Ref [http://en.wikipedia.org/wiki/Design_pattern_%28computer_science%29]].  More information on the use of MVC as an architectural pattern or a design pattern can be found at [http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller]&lt;br /&gt;
&lt;br /&gt;
== Comparison of the MVC implementations in various web-based frameworks ==&lt;br /&gt;
MVC being a framework can be exploited to work with various languages. A list of such languages would include C++, JAVA, Ruby, Flex, DOT NET and many more [Ref [http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller#Implementations_of_MVC_as_web-based_frameworks]]. We make an attempt here to compare the different implementations of MVC, with respect to the different programming and markup languages. But all the implementations of MVC fall into three categories, Oringinal MVC framework, Model 2 MVC framework and Web application framework. So we will look at each implementation and compare them.&lt;br /&gt;
&lt;br /&gt;
=== Original MVC ===&lt;br /&gt;
[[http://stephenwalther.com/blog/images/stephenwalther_com/blog/WindowsLiveWriter/TheEvolutionofMVC_CBBD/image_2.png]]&lt;br /&gt;
&lt;br /&gt;
The original MVC pattern was very simple and had a very different path for the data, request and response of the user. Here the Controller modify the Model accordingly but does not interact with Views. The Views are updated directly by the Model. When the Model changes during an event, an observer design pattern is implemented to change the View in response to the event. Thus the View is continuously observing the Model, and gets updated. &lt;br /&gt;
&lt;br /&gt;
This original pattern helps in Separated Presentation. According to Martin Fowler, Separated Presentation means &amp;quot;Ensure that any code that manipulates presentation only manipulates presentation, pushing all domain and data source logic into clearly separated areas of the program&amp;quot;. [http://www.martinfowler.com/eaaDev/uiArchs.html]&lt;br /&gt;
&lt;br /&gt;
Not many web-based frameworks use this approach. JavaServer Pages (JSP) used this approach.This approach is also called page-centric approach also. Here we only build JSP pages which interact with users and handle In the Model 1 approach to creating a JSP application, browser requests are handled by a JavaServer Page directly. These pages only send the request further for processing. These pages go ahead and display the dynamic content generated [http://tutorials.beginners.co.uk/professional-jsp-architecture-part-4-the-page-centric-approach.htm].&lt;br /&gt;
&lt;br /&gt;
=== Model 2 MVC Framework === &lt;br /&gt;
There are many frameworks in Ruby which implement MVC. Some of them are Monkeybars, Camping, Nitro, and Ruby on Rails etc. Ruby on Rails is the most widely know MVC framework pattern and will be easy to understand due to our previous background.[http://www.tutorialspoint.com/ruby-on-rails/rails-framework.htm]. Ruby on Rails provides special features to implement MVC framework. It enables you to create the MVC file structure easily. It is divided into separate packages which gets included by the model, view and controller files automatically to connect the functionalities of these files.&lt;br /&gt;
&lt;br /&gt;
* Model (ActiveRecord) : The ActiveRecord package maintains all the library functions which are required for binding the interface (i.e. object) and database. It also helps in handling validation, association, transactions, and more. Thus inclusion of this package enables Model to implement its functions.&lt;br /&gt;
* View (ActionView) : The ActionView package implements Embedded Ruby(ERb) based system. These help to define templates for data presentation. By including this library, the view files can use scripting languages like JSP, ASP, and PHP to display the data. It also helps to integrate AJAX technology with these files.&lt;br /&gt;
* Controller (ActionController): The ActionController package is included in a controller file by default when it is created. This gives default controller behavior to it. It helps to organize the data by searching and sorting so that the view does not have any calculations to perform.ActionController package acts like a bridge between ActiveRecord (the database interface) and ActionView (the presentation engine).&lt;br /&gt;
&lt;br /&gt;
Thus ActionController and ActionView provide facilities for displaying the data and ActionRecord provides techniques for manipulating database.&lt;br /&gt;
&lt;br /&gt;
== Flex ==&lt;br /&gt;
Cairngnorm is considered to be the best practice methodology for Flex software design [http://www.adobe.com/devnet/flex/articles/introducing_cairngorm.html]&lt;br /&gt;
&lt;br /&gt;
=== JAVA === &lt;br /&gt;
There are many frameworks like Struts, Spring which adopt the MVC methodology and are pertaining to JAVA.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PHP === &lt;br /&gt;
It has a plethora of MVC implementations. The top 10 MVC-based PHP frameworks are &lt;br /&gt;
# Symfony: Based on Mojavi and inspired by Rails&lt;br /&gt;
# Mojavi&lt;br /&gt;
# CakePHP: Inspired by Rails PHP4/5&lt;br /&gt;
# PHPOnTrax: a Rails port - PHP5 Only&lt;br /&gt;
# Prado: The winner of Zend coding contest&lt;br /&gt;
# Studs: A Java-Struts port to PHP&lt;br /&gt;
# Phrame: A Java-Struts port&lt;br /&gt;
# Achievo: A good RAD framework&lt;br /&gt;
# WACT: Web Application Component Toolkit&lt;br /&gt;
# Ambivalence: A Java-Maverick Port&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;/div&gt;</summary>
		<author><name>Zivora</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_13_za&amp;diff=20404</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 13 za</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_13_za&amp;diff=20404"/>
		<updated>2009-09-20T16:36:11Z</updated>

		<summary type="html">&lt;p&gt;Zivora: /* Original MVC */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''History and Applications of the MVC Pattern'''&lt;br /&gt;
== MVC - the ''buzz'' term! ==&lt;br /&gt;
[[Image:mvc.png|thumb|Image taken from www.symfony-project.org]]&lt;br /&gt;
&lt;br /&gt;
MVC (Model-View-Controller) offers a framework consisting of a Model that enforces the logical rules that should be applied to the data.  A View is pertaining to the user-interface. It helps the user to interact with the Model. Finally the Controller acts as the point of communication between the Model and the View, taking inputs or requests from the user and manipulating or processing the underlying data accordingly to provide the user with the desired outputs. For example, in an e-commerce business setting, a model will make sure that the shipping charges are correctly applied, a view will generate pages displaying the items available and a controller will make sure to add selected products to the cart of the customer.&lt;br /&gt;
&lt;br /&gt;
MVC offers a clear separation of the presentation logic from the business logic. This is the main reason, why it has been widely used architecture for web-based application. With an MVC framework, it becomes easy to accommodate future changes and implementations in design or code. MVC pattern gained prominence because of its clean modular approach that allow programmers to follow a formal approach for implementing business or enterprise level applications. Though, it is worth mentioning that using the MVC methodology for designing applications requires a lot of planning in terms of working out the separations in design and how the modules would interact. What is achieved by keeping these functionalities separate is ''reusability'' which is one of the major advantages of MVC.&lt;br /&gt;
&lt;br /&gt;
== Evolution of MVC ==&lt;br /&gt;
=== MVC Architecture ===&lt;br /&gt;
Over all these years, history of MVC architecture has become dim. MVC was invented at Xerox Parc in the 70's. Trygve Reenskaug was the one who wrote original notes on MVC in 1978 but he never got to publish them. His first note on the MVC pattern consisted of : Model, View, Controller and Editor. The 'Editor' is a short-lived component that the 'View' creates when necessary. This component is created as an interface between the 'View' and the input devices. After Reenskaug left Xerox PARC, Jim Althoff with a group of other people implemented a version of MVC specific to the Smalltalk-80 class library [Ref [http://heim.ifi.uio.no/~trygver/themes/mvc/mvc-index.html]].Even though they changed his implementation and removed the 'Editor' , Trygve Reenskaug was credited for his work. &lt;br /&gt;
&lt;br /&gt;
=== MVP Architecture ===&lt;br /&gt;
After the implementation of smalltalks-80 MVC, there were a few downsides to MVC approach and so a new variant of MVC was introduced MVP (Model View Presenter). It was very similar too MVC controller. The only difference lies in the way presenter is linked to the associated views. But over time, the difference got more obscure and now implementations of MVC frameworks follow more concept of MVP[Ref [http://www.typo3-media.com/blog/mvc-mvp-typo3-introduction.html]].&lt;br /&gt;
&lt;br /&gt;
=== MVC Design Pattern ===&lt;br /&gt;
Ward Cunningham and Ken Beck who were working with Smalltalk were the first to start the MVC design pattern in 1987. The MVC design pattern is different from the MVC architectural pattern. In fact there are many other design patterns - Analysis, Creational, Structural, Behavioral [Ref [http://en.wikipedia.org/wiki/Design_pattern_%28computer_science%29]].  More information on the use of MVC as an architectural pattern or a design pattern can be found at [http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller]&lt;br /&gt;
&lt;br /&gt;
== Comparison of the MVC implementations in various web-based frameworks ==&lt;br /&gt;
MVC being a framework can be exploited to work with various languages. A list of such languages would include C++, JAVA, Ruby, Flex, DOT NET and many more [Ref [http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller#Implementations_of_MVC_as_web-based_frameworks]]. We make an attempt here to compare the different implementations of MVC, with respect to the different programming and markup languages. But all the implementations of MVC fall into three categories, Oringinal MVC framework, Model 2 MVC framework and Web application framework. So we will look at each implementation and compare them.&lt;br /&gt;
&lt;br /&gt;
=== Original MVC ===&lt;br /&gt;
[[http://stephenwalther.com/blog/images/stephenwalther_com/blog/WindowsLiveWriter/TheEvolutionofMVC_CBBD/image_2.png]]&lt;br /&gt;
&lt;br /&gt;
The original MVC pattern was very simple and had a very different path for the data, request and response of the user. Here the Controller modify the Model accordingly but does not interact with Views. The Views are updated directly by the Model. When the Model changes during an event, an observer design pattern is implemented to change the View in response to the event. Thus the View is continuously observing the Model, and gets updated. &lt;br /&gt;
&lt;br /&gt;
This original pattern helps in Separated Presentation. According to Martin Fowler, Separated Presentation means &amp;quot;Ensure that any code that manipulates presentation only manipulates presentation, pushing all domain and data source logic into clearly separated areas of the program&amp;quot;. [http://www.martinfowler.com/eaaDev/uiArchs.html]&lt;br /&gt;
&lt;br /&gt;
Not many web-based frameworks use this approach. JavaServer Pages (JSP) used this approach.This approach is also called page-centric approach also. Here we only build JSP pages which interact with users and handle In the Model 1 approach to creating a JSP application, browser requests are handled by a JavaServer Page directly. These pages only send the request further for processing. These pages go ahead and display the dynamic content generated [http://tutorials.beginners.co.uk/professional-jsp-architecture-part-4-the-page-centric-approach.htm].&lt;br /&gt;
&lt;br /&gt;
=== Ruby === &lt;br /&gt;
There are many frameworks in Ruby which implement MVC. Some of them are Monkeybars, Camping, Nitro, and Ruby on Rails etc. Ruby on Rails is the most widely know MVC framework pattern and will be easy to understand due to our previous background.[http://www.tutorialspoint.com/ruby-on-rails/rails-framework.htm]. Ruby on Rails provides special features to implement MVC framework. It enables you to create the MVC file structure easily. It is divided into separate packages which gets included by the model, view and controller files automatically to connect the functionalities of these files.&lt;br /&gt;
&lt;br /&gt;
* Model (ActiveRecord) : The ActiveRecord package maintains all the library functions which are required for binding the interface (i.e. object) and database. It also helps in handling validation, association, transactions, and more. Thus inclusion of this package enables Model to implement its functions.&lt;br /&gt;
* View (ActionView) : The ActionView package implements Embedded Ruby(ERb) based system. These help to define templates for data presentation. By including this library, the view files can use scripting languages like JSP, ASP, and PHP to display the data. It also helps to integrate AJAX technology with these files.&lt;br /&gt;
* Controller (ActionController): The ActionController package is included in a controller file by default when it is created. This gives default controller behavior to it. It helps to organize the data by searching and sorting so that the view does not have any calculations to perform.ActionController package acts like a bridge between ActiveRecord (the database interface) and ActionView (the presentation engine).&lt;br /&gt;
&lt;br /&gt;
Thus ActionController and ActionView provide facilities for displaying the data and ActionRecord provides techniques for manipulating database.&lt;br /&gt;
&lt;br /&gt;
== Flex ==&lt;br /&gt;
Cairngnorm is considered to be the best practice methodology for Flex software design [http://www.adobe.com/devnet/flex/articles/introducing_cairngorm.html]&lt;br /&gt;
&lt;br /&gt;
=== JAVA === &lt;br /&gt;
There are many frameworks like Struts, Spring which adopt the MVC methodology and are pertaining to JAVA.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PHP === &lt;br /&gt;
It has a plethora of MVC implementations. The top 10 MVC-based PHP frameworks are &lt;br /&gt;
# Symfony: Based on Mojavi and inspired by Rails&lt;br /&gt;
# Mojavi&lt;br /&gt;
# CakePHP: Inspired by Rails PHP4/5&lt;br /&gt;
# PHPOnTrax: a Rails port - PHP5 Only&lt;br /&gt;
# Prado: The winner of Zend coding contest&lt;br /&gt;
# Studs: A Java-Struts port to PHP&lt;br /&gt;
# Phrame: A Java-Struts port&lt;br /&gt;
# Achievo: A good RAD framework&lt;br /&gt;
# WACT: Web Application Component Toolkit&lt;br /&gt;
# Ambivalence: A Java-Maverick Port&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;/div&gt;</summary>
		<author><name>Zivora</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_13_za&amp;diff=20403</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 13 za</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_13_za&amp;diff=20403"/>
		<updated>2009-09-20T16:35:42Z</updated>

		<summary type="html">&lt;p&gt;Zivora: /* Original MVC */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''History and Applications of the MVC Pattern'''&lt;br /&gt;
== MVC - the ''buzz'' term! ==&lt;br /&gt;
[[Image:mvc.png|thumb|Image taken from www.symfony-project.org]]&lt;br /&gt;
&lt;br /&gt;
MVC (Model-View-Controller) offers a framework consisting of a Model that enforces the logical rules that should be applied to the data.  A View is pertaining to the user-interface. It helps the user to interact with the Model. Finally the Controller acts as the point of communication between the Model and the View, taking inputs or requests from the user and manipulating or processing the underlying data accordingly to provide the user with the desired outputs. For example, in an e-commerce business setting, a model will make sure that the shipping charges are correctly applied, a view will generate pages displaying the items available and a controller will make sure to add selected products to the cart of the customer.&lt;br /&gt;
&lt;br /&gt;
MVC offers a clear separation of the presentation logic from the business logic. This is the main reason, why it has been widely used architecture for web-based application. With an MVC framework, it becomes easy to accommodate future changes and implementations in design or code. MVC pattern gained prominence because of its clean modular approach that allow programmers to follow a formal approach for implementing business or enterprise level applications. Though, it is worth mentioning that using the MVC methodology for designing applications requires a lot of planning in terms of working out the separations in design and how the modules would interact. What is achieved by keeping these functionalities separate is ''reusability'' which is one of the major advantages of MVC.&lt;br /&gt;
&lt;br /&gt;
== Evolution of MVC ==&lt;br /&gt;
=== MVC Architecture ===&lt;br /&gt;
Over all these years, history of MVC architecture has become dim. MVC was invented at Xerox Parc in the 70's. Trygve Reenskaug was the one who wrote original notes on MVC in 1978 but he never got to publish them. His first note on the MVC pattern consisted of : Model, View, Controller and Editor. The 'Editor' is a short-lived component that the 'View' creates when necessary. This component is created as an interface between the 'View' and the input devices. After Reenskaug left Xerox PARC, Jim Althoff with a group of other people implemented a version of MVC specific to the Smalltalk-80 class library [Ref [http://heim.ifi.uio.no/~trygver/themes/mvc/mvc-index.html]].Even though they changed his implementation and removed the 'Editor' , Trygve Reenskaug was credited for his work. &lt;br /&gt;
&lt;br /&gt;
=== MVP Architecture ===&lt;br /&gt;
After the implementation of smalltalks-80 MVC, there were a few downsides to MVC approach and so a new variant of MVC was introduced MVP (Model View Presenter). It was very similar too MVC controller. The only difference lies in the way presenter is linked to the associated views. But over time, the difference got more obscure and now implementations of MVC frameworks follow more concept of MVP[Ref [http://www.typo3-media.com/blog/mvc-mvp-typo3-introduction.html]].&lt;br /&gt;
&lt;br /&gt;
=== MVC Design Pattern ===&lt;br /&gt;
Ward Cunningham and Ken Beck who were working with Smalltalk were the first to start the MVC design pattern in 1987. The MVC design pattern is different from the MVC architectural pattern. In fact there are many other design patterns - Analysis, Creational, Structural, Behavioral [Ref [http://en.wikipedia.org/wiki/Design_pattern_%28computer_science%29]].  More information on the use of MVC as an architectural pattern or a design pattern can be found at [http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller]&lt;br /&gt;
&lt;br /&gt;
== Comparison of the MVC implementations in various web-based frameworks ==&lt;br /&gt;
MVC being a framework can be exploited to work with various languages. A list of such languages would include C++, JAVA, Ruby, Flex, DOT NET and many more [Ref [http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller#Implementations_of_MVC_as_web-based_frameworks]]. We make an attempt here to compare the different implementations of MVC, with respect to the different programming and markup languages. But all the implementations of MVC fall into three categories, Oringinal MVC framework, Model 2 MVC framework and Web application framework. So we will look at each implementation and compare them.&lt;br /&gt;
&lt;br /&gt;
=== Original MVC ===&lt;br /&gt;
&lt;br /&gt;
The original MVC pattern was very simple and had a very different path for the data, request and response of the user. Here the Controller modify the Model accordingly but does not interact with Views. The Views are updated directly by the Model. When the Model changes during an event, an observer design pattern is implemented to change the View in response to the event. Thus the View is continuously observing the Model, and gets updated. &lt;br /&gt;
&lt;br /&gt;
This original pattern helps in Separated Presentation. According to Martin Fowler, Separated Presentation means &amp;quot;Ensure that any code that manipulates presentation only manipulates presentation, pushing all domain and data source logic into clearly separated areas of the program&amp;quot;. [http://www.martinfowler.com/eaaDev/uiArchs.html]&lt;br /&gt;
&lt;br /&gt;
Not many web-based frameworks use this approach. JavaServer Pages (JSP) used this approach.This approach is also called page-centric approach also. Here we only build JSP pages which interact with users and handle In the Model 1 approach to creating a JSP application, browser requests are handled by a JavaServer Page directly. These pages only send the request further for processing. These pages go ahead and display the dynamic content generated [http://tutorials.beginners.co.uk/professional-jsp-architecture-part-4-the-page-centric-approach.htm].&lt;br /&gt;
&lt;br /&gt;
=== Ruby === &lt;br /&gt;
There are many frameworks in Ruby which implement MVC. Some of them are Monkeybars, Camping, Nitro, and Ruby on Rails etc. Ruby on Rails is the most widely know MVC framework pattern and will be easy to understand due to our previous background.[http://www.tutorialspoint.com/ruby-on-rails/rails-framework.htm]. Ruby on Rails provides special features to implement MVC framework. It enables you to create the MVC file structure easily. It is divided into separate packages which gets included by the model, view and controller files automatically to connect the functionalities of these files.&lt;br /&gt;
&lt;br /&gt;
* Model (ActiveRecord) : The ActiveRecord package maintains all the library functions which are required for binding the interface (i.e. object) and database. It also helps in handling validation, association, transactions, and more. Thus inclusion of this package enables Model to implement its functions.&lt;br /&gt;
* View (ActionView) : The ActionView package implements Embedded Ruby(ERb) based system. These help to define templates for data presentation. By including this library, the view files can use scripting languages like JSP, ASP, and PHP to display the data. It also helps to integrate AJAX technology with these files.&lt;br /&gt;
* Controller (ActionController): The ActionController package is included in a controller file by default when it is created. This gives default controller behavior to it. It helps to organize the data by searching and sorting so that the view does not have any calculations to perform.ActionController package acts like a bridge between ActiveRecord (the database interface) and ActionView (the presentation engine).&lt;br /&gt;
&lt;br /&gt;
Thus ActionController and ActionView provide facilities for displaying the data and ActionRecord provides techniques for manipulating database.&lt;br /&gt;
&lt;br /&gt;
== Flex ==&lt;br /&gt;
Cairngnorm is considered to be the best practice methodology for Flex software design [http://www.adobe.com/devnet/flex/articles/introducing_cairngorm.html]&lt;br /&gt;
&lt;br /&gt;
=== JAVA === &lt;br /&gt;
There are many frameworks like Struts, Spring which adopt the MVC methodology and are pertaining to JAVA.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PHP === &lt;br /&gt;
It has a plethora of MVC implementations. The top 10 MVC-based PHP frameworks are &lt;br /&gt;
# Symfony: Based on Mojavi and inspired by Rails&lt;br /&gt;
# Mojavi&lt;br /&gt;
# CakePHP: Inspired by Rails PHP4/5&lt;br /&gt;
# PHPOnTrax: a Rails port - PHP5 Only&lt;br /&gt;
# Prado: The winner of Zend coding contest&lt;br /&gt;
# Studs: A Java-Struts port to PHP&lt;br /&gt;
# Phrame: A Java-Struts port&lt;br /&gt;
# Achievo: A good RAD framework&lt;br /&gt;
# WACT: Web Application Component Toolkit&lt;br /&gt;
# Ambivalence: A Java-Maverick Port&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;/div&gt;</summary>
		<author><name>Zivora</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_13_za&amp;diff=20396</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 13 za</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_13_za&amp;diff=20396"/>
		<updated>2009-09-20T16:24:14Z</updated>

		<summary type="html">&lt;p&gt;Zivora: /* Original MVC */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''History and Applications of the MVC Pattern'''&lt;br /&gt;
== MVC - the ''buzz'' term! ==&lt;br /&gt;
[[Image:mvc.png|thumb|Image taken from www.symfony-project.org]]&lt;br /&gt;
&lt;br /&gt;
MVC (Model-View-Controller) offers a framework consisting of a Model that enforces the logical rules that should be applied to the data.  A View is pertaining to the user-interface. It helps the user to interact with the Model. Finally the Controller acts as the point of communication between the Model and the View, taking inputs or requests from the user and manipulating or processing the underlying data accordingly to provide the user with the desired outputs. For example, in an e-commerce business setting, a model will make sure that the shipping charges are correctly applied, a view will generate pages displaying the items available and a controller will make sure to add selected products to the cart of the customer.&lt;br /&gt;
&lt;br /&gt;
MVC offers a clear separation of the presentation logic from the business logic. This is the main reason, why it has been widely used architecture for web-based application. With an MVC framework, it becomes easy to accommodate future changes and implementations in design or code. MVC pattern gained prominence because of its clean modular approach that allow programmers to follow a formal approach for implementing business or enterprise level applications. Though, it is worth mentioning that using the MVC methodology for designing applications requires a lot of planning in terms of working out the separations in design and how the modules would interact. What is achieved by keeping these functionalities separate is ''reusability'' which is one of the major advantages of MVC.&lt;br /&gt;
&lt;br /&gt;
== Evolution of MVC ==&lt;br /&gt;
=== MVC Architecture ===&lt;br /&gt;
Over all these years, history of MVC architecture has become dim. MVC was invented at Xerox Parc in the 70's. Trygve Reenskaug was the one who wrote original notes on MVC in 1978 but he never got to publish them. His first note on the MVC pattern consisted of : Model, View, Controller and Editor. The 'Editor' is a short-lived component that the 'View' creates when necessary. This component is created as an interface between the 'View' and the input devices. After Reenskaug left Xerox PARC, Jim Althoff with a group of other people implemented a version of MVC specific to the Smalltalk-80 class library [Ref [http://heim.ifi.uio.no/~trygver/themes/mvc/mvc-index.html]].Even though they changed his implementation and removed the 'Editor' , Trygve Reenskaug was credited for his work. &lt;br /&gt;
&lt;br /&gt;
=== MVP Architecture ===&lt;br /&gt;
After the implementation of smalltalks-80 MVC, there were a few downsides to MVC approach and so a new variant of MVC was introduced MVP (Model View Presenter). It was very similar too MVC controller. The only difference lies in the way presenter is linked to the associated views. But over time, the difference got more obscure and now implementations of MVC frameworks follow more concept of MVP[Ref [http://www.typo3-media.com/blog/mvc-mvp-typo3-introduction.html]].&lt;br /&gt;
&lt;br /&gt;
=== MVC Design Pattern ===&lt;br /&gt;
Ward Cunningham and Ken Beck who were working with Smalltalk were the first to start the MVC design pattern in 1987. The MVC design pattern is different from the MVC architectural pattern. In fact there are many other design patterns - Analysis, Creational, Structural, Behavioral [Ref [http://en.wikipedia.org/wiki/Design_pattern_%28computer_science%29]].  More information on the use of MVC as an architectural pattern or a design pattern can be found at [http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller]&lt;br /&gt;
&lt;br /&gt;
== Comparison of the MVC implementations in various web-based frameworks ==&lt;br /&gt;
MVC being a framework can be exploited to work with various languages. A list of such languages would include C++, JAVA, Ruby, Flex, DOT NET and many more [Ref [http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller#Implementations_of_MVC_as_web-based_frameworks]]. We make an attempt here to compare the different implementations of MVC, with respect to the different programming and markup languages. But all the implementations of MVC fall into three categories, Oringinal MVC framework, Model 2 MVC framework and Web application framework. So we will look at each implementation and compare them.&lt;br /&gt;
&lt;br /&gt;
=== Original MVC ===&lt;br /&gt;
&lt;br /&gt;
The original MVC pattern was very simple and had a very different path for the data, request and response of the user. Here whenever the request arrives it goes to the Controller.  It modifies the Model accordingly but does not interact with Views. The Views are updated directly by the Model. When the Model changes during an event, an observer design pattern is implemented to change the View in response to the event. Thus the View is continuously observing the Model, and gets updated. &lt;br /&gt;
&lt;br /&gt;
This original pattern helps in Separated Presentation. According to Martin Fowler, Separated Presentation means &amp;quot;Ensure that any code that manipulates presentation only manipulates presentation, pushing all domain and data source logic into clearly separated areas of the program&amp;quot;. [http://www.martinfowler.com/eaaDev/uiArchs.html]&lt;br /&gt;
&lt;br /&gt;
Not many&lt;br /&gt;
&lt;br /&gt;
=== Ruby === &lt;br /&gt;
There are many frameworks in Ruby which implement MVC. Some of them are Monkeybars, Camping, Nitro, and Ruby on Rails etc. Ruby on Rails is the most widely know MVC framework pattern and will be easy to understand due to our previous background.[http://www.tutorialspoint.com/ruby-on-rails/rails-framework.htm]. Ruby on Rails provides special features to implement MVC framework. It enables you to create the MVC file structure easily. It is divided into separate packages which gets included by the model, view and controller files automatically to connect the functionalities of these files.&lt;br /&gt;
&lt;br /&gt;
* Model (ActiveRecord) : The ActiveRecord package maintains all the library functions which are required for binding the interface (i.e. object) and database. It also helps in handling validation, association, transactions, and more. Thus inclusion of this package enables Model to implement its functions.&lt;br /&gt;
* View (ActionView) : The ActionView package implements Embedded Ruby(ERb) based system. These help to define templates for data presentation. By including this library, the view files can use scripting languages like JSP, ASP, and PHP to display the data. It also helps to integrate AJAX technology with these files.&lt;br /&gt;
* Controller (ActionController): The ActionController package is included in a controller file by default when it is created. This gives default controller behavior to it. It helps to organize the data by searching and sorting so that the view does not have any calculations to perform.ActionController package acts like a bridge between ActiveRecord (the database interface) and ActionView (the presentation engine).&lt;br /&gt;
&lt;br /&gt;
Thus ActionController and ActionView provide facilities for displaying the data and ActionRecord provides techniques for manipulating database.&lt;br /&gt;
&lt;br /&gt;
== Flex ==&lt;br /&gt;
Cairngnorm is considered to be the best practice methodology for Flex software design [http://www.adobe.com/devnet/flex/articles/introducing_cairngorm.html]&lt;br /&gt;
&lt;br /&gt;
=== JAVA === &lt;br /&gt;
There are many frameworks like Struts, Spring which adopt the MVC methodology and are pertaining to JAVA.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PHP === &lt;br /&gt;
It has a plethora of MVC implementations. The top 10 MVC-based PHP frameworks are &lt;br /&gt;
# Symfony: Based on Mojavi and inspired by Rails&lt;br /&gt;
# Mojavi&lt;br /&gt;
# CakePHP: Inspired by Rails PHP4/5&lt;br /&gt;
# PHPOnTrax: a Rails port - PHP5 Only&lt;br /&gt;
# Prado: The winner of Zend coding contest&lt;br /&gt;
# Studs: A Java-Struts port to PHP&lt;br /&gt;
# Phrame: A Java-Struts port&lt;br /&gt;
# Achievo: A good RAD framework&lt;br /&gt;
# WACT: Web Application Component Toolkit&lt;br /&gt;
# Ambivalence: A Java-Maverick Port&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;/div&gt;</summary>
		<author><name>Zivora</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_13_za&amp;diff=20394</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 13 za</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_13_za&amp;diff=20394"/>
		<updated>2009-09-20T16:22:59Z</updated>

		<summary type="html">&lt;p&gt;Zivora: /* Original MVC */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''History and Applications of the MVC Pattern'''&lt;br /&gt;
== MVC - the ''buzz'' term! ==&lt;br /&gt;
[[Image:mvc.png|thumb|Image taken from www.symfony-project.org]]&lt;br /&gt;
&lt;br /&gt;
MVC (Model-View-Controller) offers a framework consisting of a Model that enforces the logical rules that should be applied to the data.  A View is pertaining to the user-interface. It helps the user to interact with the Model. Finally the Controller acts as the point of communication between the Model and the View, taking inputs or requests from the user and manipulating or processing the underlying data accordingly to provide the user with the desired outputs. For example, in an e-commerce business setting, a model will make sure that the shipping charges are correctly applied, a view will generate pages displaying the items available and a controller will make sure to add selected products to the cart of the customer.&lt;br /&gt;
&lt;br /&gt;
MVC offers a clear separation of the presentation logic from the business logic. This is the main reason, why it has been widely used architecture for web-based application. With an MVC framework, it becomes easy to accommodate future changes and implementations in design or code. MVC pattern gained prominence because of its clean modular approach that allow programmers to follow a formal approach for implementing business or enterprise level applications. Though, it is worth mentioning that using the MVC methodology for designing applications requires a lot of planning in terms of working out the separations in design and how the modules would interact. What is achieved by keeping these functionalities separate is ''reusability'' which is one of the major advantages of MVC.&lt;br /&gt;
&lt;br /&gt;
== Evolution of MVC ==&lt;br /&gt;
=== MVC Architecture ===&lt;br /&gt;
Over all these years, history of MVC architecture has become dim. MVC was invented at Xerox Parc in the 70's. Trygve Reenskaug was the one who wrote original notes on MVC in 1978 but he never got to publish them. His first note on the MVC pattern consisted of : Model, View, Controller and Editor. The 'Editor' is a short-lived component that the 'View' creates when necessary. This component is created as an interface between the 'View' and the input devices. After Reenskaug left Xerox PARC, Jim Althoff with a group of other people implemented a version of MVC specific to the Smalltalk-80 class library [Ref [http://heim.ifi.uio.no/~trygver/themes/mvc/mvc-index.html]].Even though they changed his implementation and removed the 'Editor' , Trygve Reenskaug was credited for his work. &lt;br /&gt;
&lt;br /&gt;
=== MVP Architecture ===&lt;br /&gt;
After the implementation of smalltalks-80 MVC, there were a few downsides to MVC approach and so a new variant of MVC was introduced MVP (Model View Presenter). It was very similar too MVC controller. The only difference lies in the way presenter is linked to the associated views. But over time, the difference got more obscure and now implementations of MVC frameworks follow more concept of MVP[Ref [http://www.typo3-media.com/blog/mvc-mvp-typo3-introduction.html]].&lt;br /&gt;
&lt;br /&gt;
=== MVC Design Pattern ===&lt;br /&gt;
Ward Cunningham and Ken Beck who were working with Smalltalk were the first to start the MVC design pattern in 1987. The MVC design pattern is different from the MVC architectural pattern. In fact there are many other design patterns - Analysis, Creational, Structural, Behavioral [Ref [http://en.wikipedia.org/wiki/Design_pattern_%28computer_science%29]].  More information on the use of MVC as an architectural pattern or a design pattern can be found at [http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller]&lt;br /&gt;
&lt;br /&gt;
== Comparison of the MVC implementations in various web-based frameworks ==&lt;br /&gt;
MVC being a framework can be exploited to work with various languages. A list of such languages would include C++, JAVA, Ruby, Flex, DOT NET and many more [Ref [http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller#Implementations_of_MVC_as_web-based_frameworks]]. We make an attempt here to compare the different implementations of MVC, with respect to the different programming and markup languages. But all the implementations of MVC fall into three categories, Oringinal MVC framework, Model 2 MVC framework and Web application framework. So we will look at each implementation and compare them.&lt;br /&gt;
&lt;br /&gt;
=== Original MVC ===&lt;br /&gt;
&lt;br /&gt;
The original MVC pattern was very simple and had a very different path for the data, request and response of the user. Here whenever the request arrives it goes to the Controller.  It modifies the Model accordingly but does not interact with Views. The Views are updated directly by the Model. When the Model changes during an event, an observer design pattern is implemented to change the View in response to the event. Thus the View is continuously observing the Model, and gets updated. &lt;br /&gt;
&lt;br /&gt;
This original pattern helps in Separated Presentation. According to Martin Fowler, Separated Presentation means &amp;quot;Ensure that any code that manipulates presentation only manipulates presentation, pushing all domain and data source logic into clearly separated areas of the program&amp;quot;. [http://www.martinfowler.com/eaaDev/uiArchs.html]&lt;br /&gt;
&lt;br /&gt;
=== Ruby === &lt;br /&gt;
There are many frameworks in Ruby which implement MVC. Some of them are Monkeybars, Camping, Nitro, and Ruby on Rails etc. Ruby on Rails is the most widely know MVC framework pattern and will be easy to understand due to our previous background.[http://www.tutorialspoint.com/ruby-on-rails/rails-framework.htm]. Ruby on Rails provides special features to implement MVC framework. It enables you to create the MVC file structure easily. It is divided into separate packages which gets included by the model, view and controller files automatically to connect the functionalities of these files.&lt;br /&gt;
&lt;br /&gt;
* Model (ActiveRecord) : The ActiveRecord package maintains all the library functions which are required for binding the interface (i.e. object) and database. It also helps in handling validation, association, transactions, and more. Thus inclusion of this package enables Model to implement its functions.&lt;br /&gt;
* View (ActionView) : The ActionView package implements Embedded Ruby(ERb) based system. These help to define templates for data presentation. By including this library, the view files can use scripting languages like JSP, ASP, and PHP to display the data. It also helps to integrate AJAX technology with these files.&lt;br /&gt;
* Controller (ActionController): The ActionController package is included in a controller file by default when it is created. This gives default controller behavior to it. It helps to organize the data by searching and sorting so that the view does not have any calculations to perform.ActionController package acts like a bridge between ActiveRecord (the database interface) and ActionView (the presentation engine).&lt;br /&gt;
&lt;br /&gt;
Thus ActionController and ActionView provide facilities for displaying the data and ActionRecord provides techniques for manipulating database.&lt;br /&gt;
&lt;br /&gt;
== Flex ==&lt;br /&gt;
Cairngnorm is considered to be the best practice methodology for Flex software design [http://www.adobe.com/devnet/flex/articles/introducing_cairngorm.html]&lt;br /&gt;
&lt;br /&gt;
=== JAVA === &lt;br /&gt;
There are many frameworks like Struts, Spring which adopt the MVC methodology and are pertaining to JAVA.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PHP === &lt;br /&gt;
It has a plethora of MVC implementations. The top 10 MVC-based PHP frameworks are &lt;br /&gt;
# Symfony: Based on Mojavi and inspired by Rails&lt;br /&gt;
# Mojavi&lt;br /&gt;
# CakePHP: Inspired by Rails PHP4/5&lt;br /&gt;
# PHPOnTrax: a Rails port - PHP5 Only&lt;br /&gt;
# Prado: The winner of Zend coding contest&lt;br /&gt;
# Studs: A Java-Struts port to PHP&lt;br /&gt;
# Phrame: A Java-Struts port&lt;br /&gt;
# Achievo: A good RAD framework&lt;br /&gt;
# WACT: Web Application Component Toolkit&lt;br /&gt;
# Ambivalence: A Java-Maverick Port&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;/div&gt;</summary>
		<author><name>Zivora</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_13_za&amp;diff=20390</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 13 za</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_13_za&amp;diff=20390"/>
		<updated>2009-09-20T16:10:04Z</updated>

		<summary type="html">&lt;p&gt;Zivora: /* Comparison of the MVC implementations in various web-based frameworks */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''History and Applications of the MVC Pattern'''&lt;br /&gt;
== MVC - the ''buzz'' term! ==&lt;br /&gt;
[[Image:mvc.png|thumb|Image taken from www.symfony-project.org]]&lt;br /&gt;
&lt;br /&gt;
MVC (Model-View-Controller) offers a framework consisting of a Model that enforces the logical rules that should be applied to the data.  A View is pertaining to the user-interface. It helps the user to interact with the Model. Finally the Controller acts as the point of communication between the Model and the View, taking inputs or requests from the user and manipulating or processing the underlying data accordingly to provide the user with the desired outputs. For example, in an e-commerce business setting, a model will make sure that the shipping charges are correctly applied, a view will generate pages displaying the items available and a controller will make sure to add selected products to the cart of the customer.&lt;br /&gt;
&lt;br /&gt;
MVC offers a clear separation of the presentation logic from the business logic. This is the main reason, why it has been widely used architecture for web-based application. With an MVC framework, it becomes easy to accommodate future changes and implementations in design or code. MVC pattern gained prominence because of its clean modular approach that allow programmers to follow a formal approach for implementing business or enterprise level applications. Though, it is worth mentioning that using the MVC methodology for designing applications requires a lot of planning in terms of working out the separations in design and how the modules would interact. What is achieved by keeping these functionalities separate is ''reusability'' which is one of the major advantages of MVC.&lt;br /&gt;
&lt;br /&gt;
== Evolution of MVC ==&lt;br /&gt;
=== MVC Architecture ===&lt;br /&gt;
Over all these years, history of MVC architecture has become dim. MVC was invented at Xerox Parc in the 70's. Trygve Reenskaug was the one who wrote original notes on MVC in 1978 but he never got to publish them. His first note on the MVC pattern consisted of : Model, View, Controller and Editor. The 'Editor' is a short-lived component that the 'View' creates when necessary. This component is created as an interface between the 'View' and the input devices. After Reenskaug left Xerox PARC, Jim Althoff with a group of other people implemented a version of MVC specific to the Smalltalk-80 class library [Ref [http://heim.ifi.uio.no/~trygver/themes/mvc/mvc-index.html]].Even though they changed his implementation and removed the 'Editor' , Trygve Reenskaug was credited for his work. &lt;br /&gt;
&lt;br /&gt;
=== MVP Architecture ===&lt;br /&gt;
After the implementation of smalltalks-80 MVC, there were a few downsides to MVC approach and so a new variant of MVC was introduced MVP (Model View Presenter). It was very similar too MVC controller. The only difference lies in the way presenter is linked to the associated views. But over time, the difference got more obscure and now implementations of MVC frameworks follow more concept of MVP[Ref [http://www.typo3-media.com/blog/mvc-mvp-typo3-introduction.html]].&lt;br /&gt;
&lt;br /&gt;
=== MVC Design Pattern ===&lt;br /&gt;
Ward Cunningham and Ken Beck who were working with Smalltalk were the first to start the MVC design pattern in 1987. The MVC design pattern is different from the MVC architectural pattern. In fact there are many other design patterns - Analysis, Creational, Structural, Behavioral [Ref [http://en.wikipedia.org/wiki/Design_pattern_%28computer_science%29]].  More information on the use of MVC as an architectural pattern or a design pattern can be found at [http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller]&lt;br /&gt;
&lt;br /&gt;
== Comparison of the MVC implementations in various web-based frameworks ==&lt;br /&gt;
MVC being a framework can be exploited to work with various languages. A list of such languages would include C++, JAVA, Ruby, Flex, DOT NET and many more [Ref [http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller#Implementations_of_MVC_as_web-based_frameworks]]. We make an attempt here to compare the different implementations of MVC, with respect to the different programming and markup languages. But all the implementations of MVC fall into three categories, Oringinal MVC framework, Model 2 MVC framework and Web application framework. So we will look at each implementation and compare them.&lt;br /&gt;
&lt;br /&gt;
=== Original MVC ===&lt;br /&gt;
&lt;br /&gt;
The original MVC pattern was very simple and had a very different path for the data, request and response of the user. Here the Views are updated directly by the Model. When the Model changes during an event, an observer design pattern is implemented to change the View in response to the event. The Controller here doesnot interact with  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Ruby === &lt;br /&gt;
There are many frameworks in Ruby which implement MVC. Some of them are Monkeybars, Camping, Nitro, and Ruby on Rails etc. Ruby on Rails is the most widely know MVC framework pattern and will be easy to understand due to our previous background.[http://www.tutorialspoint.com/ruby-on-rails/rails-framework.htm]. Ruby on Rails provides special features to implement MVC framework. It enables you to create the MVC file structure easily. It is divided into separate packages which gets included by the model, view and controller files automatically to connect the functionalities of these files.&lt;br /&gt;
&lt;br /&gt;
* Model (ActiveRecord) : The ActiveRecord package maintains all the library functions which are required for binding the interface (i.e. object) and database. It also helps in handling validation, association, transactions, and more. Thus inclusion of this package enables Model to implement its functions.&lt;br /&gt;
* View (ActionView) : The ActionView package implements Embedded Ruby(ERb) based system. These help to define templates for data presentation. By including this library, the view files can use scripting languages like JSP, ASP, and PHP to display the data. It also helps to integrate AJAX technology with these files.&lt;br /&gt;
* Controller (ActionController): The ActionController package is included in a controller file by default when it is created. This gives default controller behavior to it. It helps to organize the data by searching and sorting so that the view does not have any calculations to perform.ActionController package acts like a bridge between ActiveRecord (the database interface) and ActionView (the presentation engine).&lt;br /&gt;
&lt;br /&gt;
Thus ActionController and ActionView provide facilities for displaying the data and ActionRecord provides techniques for manipulating database.&lt;br /&gt;
&lt;br /&gt;
== Flex ==&lt;br /&gt;
Cairngnorm is considered to be the best practice methodology for Flex software design [http://www.adobe.com/devnet/flex/articles/introducing_cairngorm.html]&lt;br /&gt;
&lt;br /&gt;
=== JAVA === &lt;br /&gt;
There are many frameworks like Struts, Spring which adopt the MVC methodology and are pertaining to JAVA.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PHP === &lt;br /&gt;
It has a plethora of MVC implementations. The top 10 MVC-based PHP frameworks are &lt;br /&gt;
# Symfony: Based on Mojavi and inspired by Rails&lt;br /&gt;
# Mojavi&lt;br /&gt;
# CakePHP: Inspired by Rails PHP4/5&lt;br /&gt;
# PHPOnTrax: a Rails port - PHP5 Only&lt;br /&gt;
# Prado: The winner of Zend coding contest&lt;br /&gt;
# Studs: A Java-Struts port to PHP&lt;br /&gt;
# Phrame: A Java-Struts port&lt;br /&gt;
# Achievo: A good RAD framework&lt;br /&gt;
# WACT: Web Application Component Toolkit&lt;br /&gt;
# Ambivalence: A Java-Maverick Port&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;/div&gt;</summary>
		<author><name>Zivora</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_13_za&amp;diff=20218</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 13 za</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_13_za&amp;diff=20218"/>
		<updated>2009-09-20T06:01:31Z</updated>

		<summary type="html">&lt;p&gt;Zivora: /* Ruby */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''History and Applications of the MVC Pattern'''&lt;br /&gt;
== MVC - the ''buzz'' term! ==&lt;br /&gt;
[[Image:mvc.png|thumb|Image taken from www.symfony-project.org]]&lt;br /&gt;
&lt;br /&gt;
MVC (Model-View-Controller) offers a framework consisting of a Model that enforces the logical rules that should be applied to the data.  A View is pertaining to the user-interface. It helps the user to interact with the Model. Finally the Controller acts as the point of communication between the Model and the View, taking inputs or requests from the user and manipulating or processing the underlying data accordingly to provide the user with the desired outputs. For example, in an e-commerce business setting, a model will make sure that the shipping charges are correctly applied, a view will generate pages displaying the items available and a controller will make sure to add selected products to the cart of the customer.&lt;br /&gt;
&lt;br /&gt;
MVC offers a clear separation of the presentation logic from the business logic. This is the main reason, why it has been widely used architecture for web-based application. With an MVC framework, it becomes easy to accommodate future changes and implementations in design or code. MVC pattern gained prominence because of its clean modular approach that allow programmers to follow a formal approach for implementing business or enterprise level applications. Though, it is worth mentioning that using the MVC methodology for designing applications requires a lot of planning in terms of working out the separations in design and how the modules would interact. What is achieved by keeping these functionalities separate is ''reusability'' which is one of the major advantages of MVC.&lt;br /&gt;
&lt;br /&gt;
== Evolution of MVC ==&lt;br /&gt;
=== MVC Architecture ===&lt;br /&gt;
Over all these years, history of MVC architecture has become dim. MVC was invented at Xerox Parc in the 70's. Trygve Reenskaug was the one who wrote original notes on MVC in 1978 but he never got to publish them. His first note on the MVC pattern consisted of : Model, View, Controller and Editor. The 'Editor' is a short-lived component that the 'View' creates when necessary. This component is created as an interface between the 'View' and the input devices. After Reenskaug left Xerox PARC, Jim Althoff with a group of other people implemented a version of MVC specific to the Smalltalk-80 class library [Ref [http://heim.ifi.uio.no/~trygver/themes/mvc/mvc-index.html]].Even though they changed his implementation and removed the 'Editor' , Trygve Reenskaug was credited for his work. &lt;br /&gt;
&lt;br /&gt;
=== MVP Architecture ===&lt;br /&gt;
After the implementation of smalltalks-80 MVC, there were a few downsides to MVC approach and so a new variant of MVC was introduced MVP (Model View Presenter). It was very similar too MVC controller. The only difference lies in the way presenter is linked to the associated views. But over time, the difference got more obscure and now implementations of MVC frameworks follow more concept of MVP[Ref [http://www.typo3-media.com/blog/mvc-mvp-typo3-introduction.html]].&lt;br /&gt;
&lt;br /&gt;
=== MVC Design Pattern ===&lt;br /&gt;
Ward Cunningham and Ken Beck who were working with Smalltalk were the first to start the MVC design pattern in 1987. The MVC design pattern is different from the MVC architectural pattern. In fact there are many other design patterns - Analysis, Creational, Structural, Behavioral [Ref [http://en.wikipedia.org/wiki/Design_pattern_%28computer_science%29]].  More information on the use of MVC as an architectural pattern or a design pattern can be found at [http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller]&lt;br /&gt;
&lt;br /&gt;
== Comparison of the MVC implementations in various web-based frameworks ==&lt;br /&gt;
MVC being a framework can be exploited to work with various languages. A list of such languages would include C++, JAVA, Ruby, Flex, DOT NET and many more [Ref [http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller#Implementations_of_MVC_as_web-based_frameworks]]. We make an attempt here to compare the different implementations of MVC, with respect to the different programming and markup languages.&lt;br /&gt;
&lt;br /&gt;
=== Ruby === &lt;br /&gt;
There are many frameworks in Ruby which implement MVC. Some of them are Monkeybars, Camping, Nitro, and Ruby on Rails etc. Ruby on Rails is the most widely know MVC framework pattern and will be easy to understand due to our previous background.[http://www.tutorialspoint.com/ruby-on-rails/rails-framework.htm]. Ruby on Rails provides special features to implement MVC framework. It enables you to create the MVC file structure easily. It is divided into separate packages which gets included by the model, view and controller files automatically to connect the functionalities of these files.&lt;br /&gt;
&lt;br /&gt;
* Model (ActiveRecord) : The ActiveRecord package maintains all the library functions which are required for binding the interface (i.e. object) and database. It also helps in handling validation, association, transactions, and more. Thus inclusion of this package enables Model to implement its functions.&lt;br /&gt;
* View (ActionView) : The ActionView package implements Embedded Ruby(ERb) based system. These help to define templates for data presentation. By including this library, the view files can use scripting languages like JSP, ASP, and PHP to display the data. It also helps to integrate AJAX technology with these files.&lt;br /&gt;
* Controller (ActionController): The ActionController package is included in a controller file by default when it is created. This gives default controller behavior to it. It helps to organize the data by searching and sorting so that the view does not have any calculations to perform.ActionController package acts like a bridge between ActiveRecord (the database interface) and ActionView (the presentation engine).&lt;br /&gt;
&lt;br /&gt;
Thus ActionController and ActionView provide facilities for displaying the data and ActionRecord provides techniques for manipulating database.&lt;br /&gt;
&lt;br /&gt;
== Flex ==&lt;br /&gt;
Cairngnorm is considered to be the best practice methodology for Flex software design [http://www.adobe.com/devnet/flex/articles/introducing_cairngorm.html]&lt;br /&gt;
&lt;br /&gt;
=== JAVA === &lt;br /&gt;
There are many frameworks like Struts, Spring which adopt the MVC methodology and are pertaining to JAVA.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PHP === &lt;br /&gt;
It has a plethora of MVC implementations. The top 10 MVC-based PHP frameworks are &lt;br /&gt;
# Symfony: Based on Mojavi and inspired by Rails&lt;br /&gt;
# Mojavi&lt;br /&gt;
# CakePHP: Inspired by Rails PHP4/5&lt;br /&gt;
# PHPOnTrax: a Rails port - PHP5 Only&lt;br /&gt;
# Prado: The winner of Zend coding contest&lt;br /&gt;
# Studs: A Java-Struts port to PHP&lt;br /&gt;
# Phrame: A Java-Struts port&lt;br /&gt;
# Achievo: A good RAD framework&lt;br /&gt;
# WACT: Web Application Component Toolkit&lt;br /&gt;
# Ambivalence: A Java-Maverick Port&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;/div&gt;</summary>
		<author><name>Zivora</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_13_za&amp;diff=20212</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 13 za</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_13_za&amp;diff=20212"/>
		<updated>2009-09-20T05:54:11Z</updated>

		<summary type="html">&lt;p&gt;Zivora: /* Ruby */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''History and Applications of the MVC Pattern'''&lt;br /&gt;
== MVC - the ''buzz'' term! ==&lt;br /&gt;
[[Image:mvc.png|thumb|Image taken from www.symfony-project.org]]&lt;br /&gt;
&lt;br /&gt;
MVC (Model-View-Controller) offers a framework consisting of a Model that enforces the logical rules that should be applied to the data.  A View is pertaining to the user-interface. It helps the user to interact with the Model. Finally the Controller acts as the point of communication between the Model and the View, taking inputs or requests from the user and manipulating or processing the underlying data accordingly to provide the user with the desired outputs. For example, in an e-commerce business setting, a model will make sure that the shipping charges are correctly applied, a view will generate pages displaying the items available and a controller will make sure to add selected products to the cart of the customer.&lt;br /&gt;
&lt;br /&gt;
MVC offers a clear separation of the presentation logic from the business logic. This is the main reason, why it has been widely used architecture for web-based application. With an MVC framework, it becomes easy to accommodate future changes and implementations in design or code. MVC pattern gained prominence because of its clean modular approach that allow programmers to follow a formal approach for implementing business or enterprise level applications. Though, it is worth mentioning that using the MVC methodology for designing applications requires a lot of planning in terms of working out the separations in design and how the modules would interact. What is achieved by keeping these functionalities separate is ''reusability'' which is one of the major advantages of MVC.&lt;br /&gt;
&lt;br /&gt;
== Evolution of MVC ==&lt;br /&gt;
=== MVC Architecture ===&lt;br /&gt;
Over all these years, history of MVC architecture has become dim. MVC was invented at Xerox Parc in the 70's. Trygve Reenskaug was the one who wrote original notes on MVC in 1978 but he never got to publish them. His first note on the MVC pattern consisted of : Model, View, Controller and Editor. The 'Editor' is a short-lived component that the 'View' creates when necessary. This component is created as an interface between the 'View' and the input devices. After Reenskaug left Xerox PARC, Jim Althoff with a group of other people implemented a version of MVC specific to the Smalltalk-80 class library [Ref [http://heim.ifi.uio.no/~trygver/themes/mvc/mvc-index.html]].Even though they changed his implementation and removed the 'Editor' , Trygve Reenskaug was credited for his work. &lt;br /&gt;
&lt;br /&gt;
=== MVP Architecture ===&lt;br /&gt;
After the implementation of smalltalks-80 MVC, there were a few downsides to MVC approach and so a new variant of MVC was introduced MVP (Model View Presenter). It was very similar too MVC controller. The only difference lies in the way presenter is linked to the associated views. But over time, the difference got more obscure and now implementations of MVC frameworks follow more concept of MVP[Ref [http://www.typo3-media.com/blog/mvc-mvp-typo3-introduction.html]].&lt;br /&gt;
&lt;br /&gt;
=== MVC Design Pattern ===&lt;br /&gt;
Ward Cunningham and Ken Beck who were working with Smalltalk were the first to start the MVC design pattern in 1987. The MVC design pattern is different from the MVC architectural pattern. In fact there are many other design patterns - Analysis, Creational, Structural, Behavioral [Ref [http://en.wikipedia.org/wiki/Design_pattern_%28computer_science%29]].  More information on the use of MVC as an architectural pattern or a design pattern can be found at [http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller]&lt;br /&gt;
&lt;br /&gt;
== Comparison of the MVC implementations in various web-based frameworks ==&lt;br /&gt;
MVC being a framework can be exploited to work with various languages. A list of such languages would include C++, JAVA, Ruby, Flex, DOT NET and many more [Ref [http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller#Implementations_of_MVC_as_web-based_frameworks]]. We make an attempt here to compare the different implementations of MVC, with respect to the different programming and markup languages.&lt;br /&gt;
&lt;br /&gt;
=== Ruby === &lt;br /&gt;
Ruby on Rails is the most widely know MVC framework pattern and will be easy to understand due to our previous background [http://www.tutorialspoint.com/ruby-on-rails/rails-framework.htm]. Ruby on Rails provides special features to implement MVC framework. It enables you to create the MVC file structure easily. It is divided into separate packages which gets included by the model, view and controller files automatically to connect the functionalities of these files.&lt;br /&gt;
&lt;br /&gt;
* Model (ActiveRecord) : The ActiveRecord package maintains all the library functions which are required for binding the interface (i.e. object) and database. It also helps in handling validation, association, transactions, and more. Thus inclusion of this package enables Model to implement its functions.&lt;br /&gt;
* View (ActionView) : The ActionView package implements Embedded Ruby(ERb) based system. These help to define templates for data presentation. By including this library, the view files can use scripting languages like JSP, ASP, and PHP to display the data. It also helps to integrate AJAX technology with these files.&lt;br /&gt;
* Controller (ActionController): The ActionController package is included in a controller file by default when it is created. This gives default controller behavior to it. It helps to organize the data by searching and sorting so that the view does not have any calculations to perform.ActionController package acts like a bridge between ActiveRecord (the database interface) and ActionView (the presentation engine).&lt;br /&gt;
&lt;br /&gt;
Thus ActionController and ActionView provide facilities for displaying the data and ActionRecord provides techniques for manipulating database.&lt;br /&gt;
&lt;br /&gt;
== Flex ==&lt;br /&gt;
Cairngnorm is considered to be the best practice methodology for Flex software design [http://www.adobe.com/devnet/flex/articles/introducing_cairngorm.html]&lt;br /&gt;
&lt;br /&gt;
=== JAVA === &lt;br /&gt;
There are many frameworks like Struts, Spring which adopt the MVC methodology and are pertaining to JAVA.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PHP === &lt;br /&gt;
It has a plethora of MVC implementations. The top 10 MVC-based PHP frameworks are &lt;br /&gt;
# Symfony: Based on Mojavi and inspired by Rails&lt;br /&gt;
# Mojavi&lt;br /&gt;
# CakePHP: Inspired by Rails PHP4/5&lt;br /&gt;
# PHPOnTrax: a Rails port - PHP5 Only&lt;br /&gt;
# Prado: The winner of Zend coding contest&lt;br /&gt;
# Studs: A Java-Struts port to PHP&lt;br /&gt;
# Phrame: A Java-Struts port&lt;br /&gt;
# Achievo: A good RAD framework&lt;br /&gt;
# WACT: Web Application Component Toolkit&lt;br /&gt;
# Ambivalence: A Java-Maverick Port&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;/div&gt;</summary>
		<author><name>Zivora</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_13_za&amp;diff=20196</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 13 za</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_13_za&amp;diff=20196"/>
		<updated>2009-09-20T05:15:45Z</updated>

		<summary type="html">&lt;p&gt;Zivora: /* Ruby */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''History and Applications of the MVC Pattern'''&lt;br /&gt;
== MVC - the ''buzz'' term! ==&lt;br /&gt;
[[Image:mvc.png|thumb|Image taken from www.symfony-project.org]]&lt;br /&gt;
&lt;br /&gt;
MVC (Model-View-Controller) offers a framework consisting of a Model that enforces the logical rules that should be applied to the data.  A View is pertaining to the user-interface. It helps the user to interact with the Model. Finally the Controller acts as the point of communication between the Model and the View, taking inputs or requests from the user and manipulating or processing the underlying data accordingly to provide the user with the desired outputs. For example, in an e-commerce business setting, a model will make sure that the shipping charges are correctly applied, a view will generate pages displaying the items available and a controller will make sure to add selected products to the cart of the customer.&lt;br /&gt;
&lt;br /&gt;
MVC offers a clear separation of the presentation logic from the business logic. This is the main reason, why it has been widely used architecture for web-based application. With an MVC framework, it becomes easy to accommodate future changes and implementations in design or code. MVC pattern gained prominence because of its clean modular approach that allow programmers to follow a formal approach for implementing business or enterprise level applications. Though, it is worth mentioning that using the MVC methodology for designing applications requires a lot of planning in terms of working out the separations in design and how the modules would interact. What is achieved by keeping these functionalities separate is ''reusability'' which is one of the major advantages of MVC.&lt;br /&gt;
&lt;br /&gt;
== Evolution of MVC ==&lt;br /&gt;
=== MVC Architecture ===&lt;br /&gt;
Over all these years, history of MVC architecture has become dim. MVC was invented at Xerox Parc in the 70's. Trygve Reenskaug was the one who wrote original notes on MVC in 1978 but he never got to publish them. His first note on the MVC pattern consisted of : Model, View, Controller and Editor. The 'Editor' is a short-lived component that the 'View' creates when necessary. This component is created as an interface between the 'View' and the input devices. After Reenskaug left Xerox PARC, Jim Althoff with a group of other people implemented a version of MVC specific to the Smalltalk-80 class library [Ref [http://heim.ifi.uio.no/~trygver/themes/mvc/mvc-index.html]].Even though they changed his implementation and removed the 'Editor' , Trygve Reenskaug was credited for his work. &lt;br /&gt;
&lt;br /&gt;
=== MVP Architecture ===&lt;br /&gt;
After the implementation of smalltalks-80 MVC, there were a few downsides to MVC approach and so a new variant of MVC was introduced MVP (Model View Presenter). It was very similar too MVC controller. The only difference lies in the way presenter is linked to the associated views. But over time, the difference got more obscure and now implementations of MVC frameworks follow more concept of MVP[Ref [http://www.typo3-media.com/blog/mvc-mvp-typo3-introduction.html]].&lt;br /&gt;
&lt;br /&gt;
=== MVC Design Pattern ===&lt;br /&gt;
Ward Cunningham and Ken Beck who were working with Smalltalk were the first to start the MVC design pattern in 1987. The MVC design pattern is different from the MVC architectural pattern. In fact there are many other design patterns - Analysis, Creational, Structural, Behavioral [Ref [http://en.wikipedia.org/wiki/Design_pattern_%28computer_science%29]].  More information on the use of MVC as an architectural pattern or a design pattern can be found at [http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller]&lt;br /&gt;
&lt;br /&gt;
== Comparison of the MVC implementations in various web-based frameworks ==&lt;br /&gt;
MVC being a framework can be exploited to work with various languages. A list of such languages would include C++, JAVA, Ruby, Flex, DOT NET and many more [Ref [http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller#Implementations_of_MVC_as_web-based_frameworks]]. We make an attempt here to compare the different implementations of MVC, with respect to the different programming and markup languages.&lt;br /&gt;
&lt;br /&gt;
=== Ruby === &lt;br /&gt;
Ruby on Rails is the most widely know MVC framework pattern and will be easy to understand due to our previous background [http://www.tutorialspoint.com/ruby-on-rails/rails-framework.htm]. Ruby on Rails provides special features to implement MVC framework. It enables you to create the MVC file structure easily. It is divided into separate packages which gets included by the model, view and controller files automatically to connect the functionalities of these files.&lt;br /&gt;
&lt;br /&gt;
* Model (ActiveRecord) : This package maintains all the library functions which are required for binding the interface (i.e. object) and database. It also helps in handling validation, association, transactions, and more. Thus inclusion of this package enables Model to implement its functions.&lt;br /&gt;
* View (ActionView) : A presentation of data in a particular format, triggered by a controller's decision to present the data. They are script based templating systems like JSP, ASP, PHP and very easy to integrate with AJAX technology.&lt;br /&gt;
* Controller ( ActionController ): The facility within the application that directs traffic, on the one hand querying the models for specific data, and on the other hand organizing that data (searching, sorting, massaging it) into a form that fits the needs of a given view. ActionController is thus a data broker sitting between ActiveRecord (the database interface) and ActionView (the presentation engine).&lt;br /&gt;
&lt;br /&gt;
== Flex ==&lt;br /&gt;
Cairngnorm is considered to be the best practice methodology for Flex software design [http://www.adobe.com/devnet/flex/articles/introducing_cairngorm.html]&lt;br /&gt;
&lt;br /&gt;
=== JAVA === &lt;br /&gt;
There are many frameworks like Struts, Spring which adopt the MVC methodology and are pertaining to JAVA.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PHP === &lt;br /&gt;
It has a plethora of MVC implementations. The top 10 MVC-based PHP frameworks are &lt;br /&gt;
# Symfony: Based on Mojavi and inspired by Rails&lt;br /&gt;
# Mojavi&lt;br /&gt;
# CakePHP: Inspired by Rails PHP4/5&lt;br /&gt;
# PHPOnTrax: a Rails port - PHP5 Only&lt;br /&gt;
# Prado: The winner of Zend coding contest&lt;br /&gt;
# Studs: A Java-Struts port to PHP&lt;br /&gt;
# Phrame: A Java-Struts port&lt;br /&gt;
# Achievo: A good RAD framework&lt;br /&gt;
# WACT: Web Application Component Toolkit&lt;br /&gt;
# Ambivalence: A Java-Maverick Port&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;/div&gt;</summary>
		<author><name>Zivora</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_13_za&amp;diff=20190</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 13 za</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_13_za&amp;diff=20190"/>
		<updated>2009-09-20T04:59:06Z</updated>

		<summary type="html">&lt;p&gt;Zivora: /* History and Applications of the MVC Pattern */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''History and Applications of the MVC Pattern'''&lt;br /&gt;
== MVC - the ''buzz'' term! ==&lt;br /&gt;
[[Image:mvc.png|thumb|Image taken from www.symfony-project.org]]&lt;br /&gt;
&lt;br /&gt;
MVC (Model-View-Controller) offers a framework consisting of a Model that enforces the logical rules that should be applied to the data.  A View is pertaining to the user-interface. It helps the user to interact with the Model. Finally the Controller acts as the point of communication between the Model and the View, taking inputs or requests from the user and manipulating or processing the underlying data accordingly to provide the user with the desired outputs. For example, in an e-commerce business setting, a model will make sure that the shipping charges are correctly applied, a view will generate pages displaying the items available and a controller will make sure to add selected products to the cart of the customer.&lt;br /&gt;
&lt;br /&gt;
MVC offers a clear separation of the presentation logic from the business logic. This is the main reason, why it has been widely used architecture for web-based application. With an MVC framework, it becomes easy to accommodate future changes and implementations in design or code. MVC pattern gained prominence because of its clean modular approach that allow programmers to follow a formal approach for implementing business or enterprise level applications. Though, it is worth mentioning that using the MVC methodology for designing applications requires a lot of planning in terms of working out the separations in design and how the modules would interact. What is achieved by keeping these functionalities separate is ''reusability'' which is one of the major advantages of MVC.&lt;br /&gt;
&lt;br /&gt;
== Evolution of MVC ==&lt;br /&gt;
=== MVC Architecture ===&lt;br /&gt;
Over all these years, history of MVC architecture has become dim. MVC was invented at Xerox Parc in the 70's. Trygve Reenskaug was the one who wrote original notes on MVC in 1978 but he never got to publish them. His first note on the MVC pattern consisted of : Model, View, Controller and Editor. The 'Editor' is a short-lived component that the 'View' creates when necessary. This component is created as an interface between the 'View' and the input devices. After Reenskaug left Xerox PARC, Jim Althoff with a group of other people implemented a version of MVC specific to the Smalltalk-80 class library [Ref [http://heim.ifi.uio.no/~trygver/themes/mvc/mvc-index.html]].Even though they changed his implementation and removed the 'Editor' , Trygve Reenskaug was credited for his work. &lt;br /&gt;
&lt;br /&gt;
=== MVP Architecture ===&lt;br /&gt;
After the implementation of smalltalks-80 MVC, there were a few downsides to MVC approach and so a new variant of MVC was introduced MVP (Model View Presenter). It was very similar too MVC controller. The only difference lies in the way presenter is linked to the associated views. But over time, the difference got more obscure and now implementations of MVC frameworks follow more concept of MVP[Ref [http://www.typo3-media.com/blog/mvc-mvp-typo3-introduction.html]].&lt;br /&gt;
&lt;br /&gt;
=== MVC Design Pattern ===&lt;br /&gt;
Ward Cunningham and Ken Beck who were working with Smalltalk were the first to start the MVC design pattern in 1987. The MVC design pattern is different from the MVC architectural pattern. In fact there are many other design patterns - Analysis, Creational, Structural, Behavioral [Ref [http://en.wikipedia.org/wiki/Design_pattern_%28computer_science%29]].  More information on the use of MVC as an architectural pattern or a design pattern can be found at [http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller]&lt;br /&gt;
&lt;br /&gt;
== Comparison of the MVC implementations in various web-based frameworks ==&lt;br /&gt;
MVC being a framework can be exploited to work with various languages. A list of such languages would include C++, JAVA, Ruby, Flex, DOT NET and many more [Ref [http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller#Implementations_of_MVC_as_web-based_frameworks]]. We make an attempt here to compare the different implementations of MVC, with respect to the different programming and markup languages.&lt;br /&gt;
&lt;br /&gt;
=== Ruby === &lt;br /&gt;
Ruby on Rails is the most widely know MVC framework pattern and will be easy to understand due to our previous background [http://www.tutorialspoint.com/ruby-on-rails/rails-framework.htm]. Ruby on Rails provides special features to implement MVC framework. It enables you to create the MVC file structure easily and automatically connects the functionalities of these files. It is also divided into separate packages which need to be included by the model, view and controller to execute their    &lt;br /&gt;
&lt;br /&gt;
* Model (ActiveRecord ) :Maintains the relationship between Object and Database and handles validation, association, transactions, and more. &lt;br /&gt;
&lt;br /&gt;
* View ( ActionView ) :A presentation of data in a particular format, triggered by a controller's decision to present the data. They are script based templating systems like JSP, ASP, PHP and very easy to integrate with AJAX technology.&lt;br /&gt;
&lt;br /&gt;
* Controller ( ActionController ): The facility within the application that directs traffic, on the one hand querying the models for specific data, and on the other hand organizing that data (searching, sorting, massaging it) into a form that fits the needs of a given view. ActionController is thus a data broker sitting between ActiveRecord (the database interface) and ActionView (the presentation engine).&lt;br /&gt;
&lt;br /&gt;
== Flex ==&lt;br /&gt;
Cairngnorm is considered to be the best practice methodology for Flex software design [http://www.adobe.com/devnet/flex/articles/introducing_cairngorm.html]&lt;br /&gt;
&lt;br /&gt;
=== JAVA === &lt;br /&gt;
There are many frameworks like Struts, Spring which adopt the MVC methodology and are pertaining to JAVA.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PHP === &lt;br /&gt;
It has a plethora of MVC implementations. The top 10 MVC-based PHP frameworks are &lt;br /&gt;
# Symfony: Based on Mojavi and inspired by Rails&lt;br /&gt;
# Mojavi&lt;br /&gt;
# CakePHP: Inspired by Rails PHP4/5&lt;br /&gt;
# PHPOnTrax: a Rails port - PHP5 Only&lt;br /&gt;
# Prado: The winner of Zend coding contest&lt;br /&gt;
# Studs: A Java-Struts port to PHP&lt;br /&gt;
# Phrame: A Java-Struts port&lt;br /&gt;
# Achievo: A good RAD framework&lt;br /&gt;
# WACT: Web Application Component Toolkit&lt;br /&gt;
# Ambivalence: A Java-Maverick Port&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;/div&gt;</summary>
		<author><name>Zivora</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_13_za&amp;diff=20189</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 13 za</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_13_za&amp;diff=20189"/>
		<updated>2009-09-20T04:55:00Z</updated>

		<summary type="html">&lt;p&gt;Zivora: /* Ruby */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=History and Applications of the MVC Pattern=&lt;br /&gt;
== MVC - the ''buzz'' term! ==&lt;br /&gt;
[[Image:mvc.png|thumb|Image taken from www.symfony-project.org]]&lt;br /&gt;
&lt;br /&gt;
MVC (Model-View-Controller) offers a framework consisting of a Model that enforces the logical rules that should be applied to the data.  A View is pertaining to the user-interface. It helps the user to interact with the Model. Finally the Controller acts as the point of communication between the Model and the View, taking inputs or requests from the user and manipulating or processing the underlying data accordingly to provide the user with the desired outputs. For example, in an e-commerce business setting, a model will make sure that the shipping charges are correctly applied, a view will generate pages displaying the items available and a controller will make sure to add selected products to the cart of the customer.&lt;br /&gt;
&lt;br /&gt;
MVC offers a clear separation of the presentation logic from the business logic. This is the main reason, why it has been widely used architecture for web-based application. With an MVC framework, it becomes easy to accommodate future changes and implementations in design or code. MVC pattern gained prominence because of its clean modular approach that allow programmers to follow a formal approach for implementing business or enterprise level applications. Though, it is worth mentioning that using the MVC methodology for designing applications requires a lot of planning in terms of working out the separations in design and how the modules would interact. What is achieved by keeping these functionalities separate is ''reusability'' which is one of the major advantages of MVC.&lt;br /&gt;
&lt;br /&gt;
== Evolution of MVC ==&lt;br /&gt;
=== MVC Architecture ===&lt;br /&gt;
Over all these years, history of MVC architecture has become dim. MVC was invented at Xerox Parc in the 70's. Trygve Reenskaug was the one who wrote original notes on MVC in 1978 but he never got to publish them. His first note on the MVC pattern consisted of : Model, View, Controller and Editor. The 'Editor' is a short-lived component that the 'View' creates when necessary. This component is created as an interface between the 'View' and the input devices. After Reenskaug left Xerox PARC, Jim Althoff with a group of other people implemented a version of MVC specific to the Smalltalk-80 class library [Ref [http://heim.ifi.uio.no/~trygver/themes/mvc/mvc-index.html]].Even though they changed his implementation and removed the 'Editor' , Trygve Reenskaug was credited for his work. &lt;br /&gt;
&lt;br /&gt;
=== MVP Architecture ===&lt;br /&gt;
After the implementation of smalltalks-80 MVC, there were a few downsides to MVC approach and so a new variant of MVC was introduced MVP (Model View Presenter). It was very similar too MVC controller. The only difference lies in the way presenter is linked to the associated views. But over time, the difference got more obscure and now implementations of MVC frameworks follow more concept of MVP[Ref [http://www.typo3-media.com/blog/mvc-mvp-typo3-introduction.html]].&lt;br /&gt;
&lt;br /&gt;
=== MVC Design Pattern ===&lt;br /&gt;
Ward Cunningham and Ken Beck who were working with Smalltalk were the first to start the MVC design pattern in 1987. The MVC design pattern is different from the MVC architectural pattern. In fact there are many other design patterns - Analysis, Creational, Structural, Behavioral [Ref [http://en.wikipedia.org/wiki/Design_pattern_%28computer_science%29]].  More information on the use of MVC as an architectural pattern or a design pattern can be found at [http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller]&lt;br /&gt;
&lt;br /&gt;
== Comparison of the MVC implementations in various web-based frameworks ==&lt;br /&gt;
MVC being a framework can be exploited to work with various languages. A list of such languages would include C++, JAVA, Ruby, Flex, DOT NET and many more [Ref [http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller#Implementations_of_MVC_as_web-based_frameworks]]. We make an attempt here to compare the different implementations of MVC, with respect to the different programming and markup languages.&lt;br /&gt;
&lt;br /&gt;
=== Ruby === &lt;br /&gt;
Ruby on Rails is the most widely know MVC framework pattern and will be easy to understand due to our previous background [http://www.tutorialspoint.com/ruby-on-rails/rails-framework.htm]. Ruby on Rails provides special features to implement MVC framework. It enables you to create the MVC file structure easily and automatically connects the functionalities of these files. It is also divided into separate packages which need to be included by the model, view and controller to execute their    &lt;br /&gt;
&lt;br /&gt;
* Model (ActiveRecord ) :Maintains the relationship between Object and Database and handles validation, association, transactions, and more. &lt;br /&gt;
&lt;br /&gt;
* View ( ActionView ) :A presentation of data in a particular format, triggered by a controller's decision to present the data. They are script based templating systems like JSP, ASP, PHP and very easy to integrate with AJAX technology.&lt;br /&gt;
&lt;br /&gt;
* Controller ( ActionController ): The facility within the application that directs traffic, on the one hand querying the models for specific data, and on the other hand organizing that data (searching, sorting, massaging it) into a form that fits the needs of a given view. ActionController is thus a data broker sitting between ActiveRecord (the database interface) and ActionView (the presentation engine).&lt;br /&gt;
&lt;br /&gt;
== Flex ==&lt;br /&gt;
Cairngnorm is considered to be the best practice methodology for Flex software design [http://www.adobe.com/devnet/flex/articles/introducing_cairngorm.html]&lt;br /&gt;
&lt;br /&gt;
=== JAVA === &lt;br /&gt;
There are many frameworks like Struts, Spring which adopt the MVC methodology and are pertaining to JAVA.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PHP === &lt;br /&gt;
It has a plethora of MVC implementations. The top 10 MVC-based PHP frameworks are &lt;br /&gt;
# Symfony: Based on Mojavi and inspired by Rails&lt;br /&gt;
# Mojavi&lt;br /&gt;
# CakePHP: Inspired by Rails PHP4/5&lt;br /&gt;
# PHPOnTrax: a Rails port - PHP5 Only&lt;br /&gt;
# Prado: The winner of Zend coding contest&lt;br /&gt;
# Studs: A Java-Struts port to PHP&lt;br /&gt;
# Phrame: A Java-Struts port&lt;br /&gt;
# Achievo: A good RAD framework&lt;br /&gt;
# WACT: Web Application Component Toolkit&lt;br /&gt;
# Ambivalence: A Java-Maverick Port&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;/div&gt;</summary>
		<author><name>Zivora</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_13_za&amp;diff=20172</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 13 za</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_13_za&amp;diff=20172"/>
		<updated>2009-09-20T04:31:05Z</updated>

		<summary type="html">&lt;p&gt;Zivora: /* History and Applications of the MVC Pattern */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=History and Applications of the MVC Pattern=&lt;br /&gt;
== MVC - the ''buzz'' term! ==&lt;br /&gt;
[[Image:mvc.png|thumb|Image taken from www.symfony-project.org]]&lt;br /&gt;
&lt;br /&gt;
MVC (Model-View-Controller) offers a framework consisting of a Model that enforces the logical rules that should be applied to the data.  A View is pertaining to the user-interface. It helps the user to interact with the Model. Finally the Controller acts as the point of communication between the Model and the View, taking inputs or requests from the user and manipulating or processing the underlying data accordingly to provide the user with the desired outputs. For example, in an e-commerce business setting, a model will make sure that the shipping charges are correctly applied, a view will generate pages displaying the items available and a controller will make sure to add selected products to the cart of the customer.&lt;br /&gt;
&lt;br /&gt;
MVC offers a clear separation of the presentation logic from the business logic. This is the main reason, why it has been widely used architecture for web-based application. With an MVC framework, it becomes easy to accommodate future changes and implementations in design or code. MVC pattern gained prominence because of its clean modular approach that allow programmers to follow a formal approach for implementing business or enterprise level applications. Though, it is worth mentioning that using the MVC methodology for designing applications requires a lot of planning in terms of working out the separations in design and how the modules would interact. What is achieved by keeping these functionalities separate is ''reusability'' which is one of the major advantages of MVC.&lt;br /&gt;
&lt;br /&gt;
== Evolution of MVC ==&lt;br /&gt;
=== MVC Architecture ===&lt;br /&gt;
Over all these years, history of MVC architecture has become dim. MVC was invented at Xerox Parc in the 70's. Trygve Reenskaug was the one who wrote original notes on MVC in 1978 but he never got to publish them. His first note on the MVC pattern consisted of : Model, View, Controller and Editor. The 'Editor' is a short-lived component that the 'View' creates when necessary. This component is created as an interface between the 'View' and the input devices. After Reenskaug left Xerox PARC, Jim Althoff with a group of other people implemented a version of MVC specific to the Smalltalk-80 class library [Ref [http://heim.ifi.uio.no/~trygver/themes/mvc/mvc-index.html]].Even though they changed his implementation and removed the 'Editor' , Trygve Reenskaug was credited for his work. &lt;br /&gt;
&lt;br /&gt;
=== MVP Architecture ===&lt;br /&gt;
After the implementation of smalltalks-80 MVC, there were a few downsides to MVC approach and so a new variant of MVC was introduced MVP (Model View Presenter). It was very similar too MVC controller. The only difference lies in the way presenter is linked to the associated views. But over time, the difference got more obscure and now implementations of MVC frameworks follow more concept of MVP[Ref [http://www.typo3-media.com/blog/mvc-mvp-typo3-introduction.html]].&lt;br /&gt;
&lt;br /&gt;
=== MVC Design Pattern ===&lt;br /&gt;
Ward Cunningham and Ken Beck who were working with Smalltalk were the first to start the MVC design pattern in 1987. The MVC design pattern is different from the MVC architectural pattern. In fact there are many other design patterns - Analysis, Creational, Structural, Behavioral [Ref [http://en.wikipedia.org/wiki/Design_pattern_%28computer_science%29]].  More information on the use of MVC as an architectural pattern or a design pattern can be found at [http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller]&lt;br /&gt;
&lt;br /&gt;
== Comparison of the MVC implementations in various web-based frameworks ==&lt;br /&gt;
MVC being a framework can be exploited to work with various languages. A list of such languages would include C++, JAVA, Ruby, Flex, DOT NET and many more [Ref [http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller#Implementations_of_MVC_as_web-based_frameworks]]. We make an attempt here to compare the different implementations of MVC, with respect to the different programming and markup languages.&lt;br /&gt;
&lt;br /&gt;
=== Ruby === &lt;br /&gt;
Ruby on Rails is the most widely know MVC framework pattern [http://www.tutorialspoint.com/ruby-on-rails/rails-framework.htm]&lt;br /&gt;
&lt;br /&gt;
* Model (ActiveRecord ) :Maintains the relationship between Object and Database and handles validation, association, transactions, and more. &lt;br /&gt;
&lt;br /&gt;
* View ( ActionView ) :A presentation of data in a particular format, triggered by a controller's decision to present the data. They are script based templating systems like JSP, ASP, PHP and very easy to integrate with AJAX technology.&lt;br /&gt;
&lt;br /&gt;
* Controller ( ActionController ): The facility within the application that directs traffic, on the one hand querying the models for specific data, and on the other hand organizing that data (searching, sorting, massaging it) into a form that fits the needs of a given view. ActionController is thus a data broker sitting between ActiveRecord (the database interface) and ActionView (the presentation engine).&lt;br /&gt;
&lt;br /&gt;
== Flex ==&lt;br /&gt;
Cairngnorm is considered to be the best practice methodology for Flex software design [http://www.adobe.com/devnet/flex/articles/introducing_cairngorm.html]&lt;br /&gt;
&lt;br /&gt;
=== JAVA === &lt;br /&gt;
There are many frameworks like Struts, Spring which adopt the MVC methodology and are pertaining to JAVA.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PHP === &lt;br /&gt;
It has a plethora of MVC implementations. The top 10 MVC-based PHP frameworks are &lt;br /&gt;
# Symfony: Based on Mojavi and inspired by Rails&lt;br /&gt;
# Mojavi&lt;br /&gt;
# CakePHP: Inspired by Rails PHP4/5&lt;br /&gt;
# PHPOnTrax: a Rails port - PHP5 Only&lt;br /&gt;
# Prado: The winner of Zend coding contest&lt;br /&gt;
# Studs: A Java-Struts port to PHP&lt;br /&gt;
# Phrame: A Java-Struts port&lt;br /&gt;
# Achievo: A good RAD framework&lt;br /&gt;
# WACT: Web Application Component Toolkit&lt;br /&gt;
# Ambivalence: A Java-Maverick Port&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;/div&gt;</summary>
		<author><name>Zivora</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_13_za&amp;diff=20160</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 13 za</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_13_za&amp;diff=20160"/>
		<updated>2009-09-20T04:20:53Z</updated>

		<summary type="html">&lt;p&gt;Zivora: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=History and Applications of the MVC Pattern=&lt;br /&gt;
&lt;br /&gt;
== Evolution of MVC ==&lt;br /&gt;
=== MVC Architecture ===&lt;br /&gt;
Over all these years, history of MVC architecture has become dim. MVC was invented at Xerox Parc in the 70's. Trygve Reenskaug was the one who wrote original notes on MVC in 1978 but he never got to publish them. His first note on the MVC pattern consisted of : Model, View, Controller and Editor. The 'Editor' is a short-lived component that the 'View' creates when necessary. This component is created as an interface between the 'View' and the input devices. After Reenskaug left Xerox PARC, Jim Althoff with a group of other people implemented a version of MVC specific to the Smalltalk-80 class library [Ref [http://heim.ifi.uio.no/~trygver/themes/mvc/mvc-index.html]].Even though they changed his implementation and removed the 'Editor' , Trygve Reenskaug was credited for his work. &lt;br /&gt;
&lt;br /&gt;
=== MVP Architecture ===&lt;br /&gt;
After the implementation of smalltalks-80 MVC, there were a few downsides to MVC approach and so a new variant of MVC was introduced MVP (Model View Presenter). It was very similar too MVC controller. The only difference lies in the way presenter is linked to the associated views. But over time, the difference got more obscure and now implementations of MVC frameworks follow more concept of MVP[Ref [http://www.typo3-media.com/blog/mvc-mvp-typo3-introduction.html]].&lt;br /&gt;
&lt;br /&gt;
=== MVC Design Pattern ===&lt;br /&gt;
Ward Cunningham and Ken Beck who were working with Smalltalk were the first to start the MVC design pattern in 1987. The MVC design pattern is different from the MVC architectural pattern. In fact there are many other design patterns - Analysis, Creational, Structural, Behavioral [Ref [http://en.wikipedia.org/wiki/Design_pattern_%28computer_science%29]].  More information on the use of MVC as an architectural pattern or a design pattern can be found at [http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller]&lt;br /&gt;
&lt;br /&gt;
== MVC - the ''buzz'' term! ==&lt;br /&gt;
[[Image:mvc.png|thumb|Image taken from www.symfony-project.org]]&lt;br /&gt;
&lt;br /&gt;
MVC (Model-View-Controller) offers a framework consisting of a Model that enforces the logical rules that should be applied to the data.  A View is pertaining to the user-interface. It helps the user to interact with the Model. Finally the Controller acts as the point of communication between the Model and the View, taking inputs or requests from the user and manipulating or processing the underlying data accordingly to provide the user with the desired outputs. For example, in an e-commerce business setting, a model will make sure that the shipping charges are correctly applied, a view will generate pages displaying the items available and a controller will make sure to add selected products to the cart of the customer.&lt;br /&gt;
&lt;br /&gt;
MVC offers a clear separation of the presentation logic from the business logic. This is the main reason, why it has been widely used architecture for web-based application. With an MVC framework, it becomes easy to accommodate future changes and implementations in design or code. MVC pattern gained prominence because of its clean modular approach that allow programmers to follow a formal approach for implementing business or enterprise level applications. Though, it is worth mentioning that using the MVC methodology for designing applications requires a lot of planning in terms of working out the separations in design and how the modules would interact. What is achieved by keeping these functionalities separate is ''reusability'' which is one of the major advantages of MVC.&lt;br /&gt;
&lt;br /&gt;
== Comparison of the MVC implementations in various web-based frameworks ==&lt;br /&gt;
MVC being a framework can be exploited to work with various languages. A list of such languages would include C++, JAVA, Ruby, Flex, DOT NET and many more [Ref [http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller#Implementations_of_MVC_as_web-based_frameworks]]. We make an attempt here to compare the different implementations of MVC, with respect to the different programming and markup languages.&lt;br /&gt;
&lt;br /&gt;
=== Ruby === &lt;br /&gt;
Ruby on Rails is the most widely know MVC framework pattern [http://www.tutorialspoint.com/ruby-on-rails/rails-framework.htm]&lt;br /&gt;
&lt;br /&gt;
* Model (ActiveRecord ) :Maintains the relationship between Object and Database and handles validation, association, transactions, and more. &lt;br /&gt;
&lt;br /&gt;
* View ( ActionView ) :A presentation of data in a particular format, triggered by a controller's decision to present the data. They are script based templating systems like JSP, ASP, PHP and very easy to integrate with AJAX technology.&lt;br /&gt;
&lt;br /&gt;
* Controller ( ActionController ): The facility within the application that directs traffic, on the one hand querying the models for specific data, and on the other hand organizing that data (searching, sorting, massaging it) into a form that fits the needs of a given view. ActionController is thus a data broker sitting between ActiveRecord (the database interface) and ActionView (the presentation engine).&lt;br /&gt;
&lt;br /&gt;
== Flex ==&lt;br /&gt;
Cairngnorm is considered to be the best practice methodology for Flex software design [http://www.adobe.com/devnet/flex/articles/introducing_cairngorm.html]&lt;br /&gt;
&lt;br /&gt;
=== JAVA === &lt;br /&gt;
There are many frameworks like Struts, Spring which adopt the MVC methodology and are pertaining to JAVA.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PHP === &lt;br /&gt;
It has a plethora of MVC implementations. The top 10 MVC-based PHP frameworks are &lt;br /&gt;
# Symfony: Based on Mojavi and inspired by Rails&lt;br /&gt;
# Mojavi&lt;br /&gt;
# CakePHP: Inspired by Rails PHP4/5&lt;br /&gt;
# PHPOnTrax: a Rails port - PHP5 Only&lt;br /&gt;
# Prado: The winner of Zend coding contest&lt;br /&gt;
# Studs: A Java-Struts port to PHP&lt;br /&gt;
# Phrame: A Java-Struts port&lt;br /&gt;
# Achievo: A good RAD framework&lt;br /&gt;
# WACT: Web Application Component Toolkit&lt;br /&gt;
# Ambivalence: A Java-Maverick Port&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;/div&gt;</summary>
		<author><name>Zivora</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_13_za&amp;diff=20159</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 13 za</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_13_za&amp;diff=20159"/>
		<updated>2009-09-20T04:20:03Z</updated>

		<summary type="html">&lt;p&gt;Zivora: /* History and Applications of the MVC Pattern */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;History and Applications of the MVC Pattern&lt;br /&gt;
&lt;br /&gt;
== Evolution of MVC ==&lt;br /&gt;
=== MVC Architecture ===&lt;br /&gt;
Over all these years, history of MVC architecture has become dim. MVC was invented at Xerox Parc in the 70's. Trygve Reenskaug was the one who wrote original notes on MVC in 1978 but he never got to publish them. His first note on the MVC pattern consisted of : Model, View, Controller and Editor. The 'Editor' is a short-lived component that the 'View' creates when necessary. This component is created as an interface between the 'View' and the input devices. After Reenskaug left Xerox PARC, Jim Althoff with a group of other people implemented a version of MVC specific to the Smalltalk-80 class library [Ref [http://heim.ifi.uio.no/~trygver/themes/mvc/mvc-index.html]].Even though they changed his implementation and removed the 'Editor' , Trygve Reenskaug was credited for his work. &lt;br /&gt;
&lt;br /&gt;
=== MVP Architecture ===&lt;br /&gt;
After the implementation of smalltalks-80 MVC, there were a few downsides to MVC approach and so a new variant of MVC was introduced MVP (Model View Presenter). It was very similar too MVC controller. The only difference lies in the way presenter is linked to the associated views. But over time, the difference got more obscure and now implementations of MVC frameworks follow more concept of MVP[Ref [http://www.typo3-media.com/blog/mvc-mvp-typo3-introduction.html]].&lt;br /&gt;
&lt;br /&gt;
=== MVC Design Pattern ===&lt;br /&gt;
Ward Cunningham and Ken Beck who were working with Smalltalk were the first to start the MVC design pattern in 1987. The MVC design pattern is different from the MVC architectural pattern. In fact there are many other design patterns - Analysis, Creational, Structural, Behavioral [Ref [http://en.wikipedia.org/wiki/Design_pattern_%28computer_science%29]].  More information on the use of MVC as an architectural pattern or a design pattern can be found at [http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller]&lt;br /&gt;
&lt;br /&gt;
== MVC - the ''buzz'' term! ==&lt;br /&gt;
[[Image:mvc.png|thumb|Image taken from www.symfony-project.org]]&lt;br /&gt;
&lt;br /&gt;
MVC (Model-View-Controller) offers a framework consisting of a Model that enforces the logical rules that should be applied to the data.  A View is pertaining to the user-interface. It helps the user to interact with the Model. Finally the Controller acts as the point of communication between the Model and the View, taking inputs or requests from the user and manipulating or processing the underlying data accordingly to provide the user with the desired outputs. For example, in an e-commerce business setting, a model will make sure that the shipping charges are correctly applied, a view will generate pages displaying the items available and a controller will make sure to add selected products to the cart of the customer.&lt;br /&gt;
&lt;br /&gt;
MVC offers a clear separation of the presentation logic from the business logic. This is the main reason, why it has been widely used architecture for web-based application. With an MVC framework, it becomes easy to accommodate future changes and implementations in design or code. MVC pattern gained prominence because of its clean modular approach that allow programmers to follow a formal approach for implementing business or enterprise level applications. Though, it is worth mentioning that using the MVC methodology for designing applications requires a lot of planning in terms of working out the separations in design and how the modules would interact. What is achieved by keeping these functionalities separate is ''reusability'' which is one of the major advantages of MVC.&lt;br /&gt;
&lt;br /&gt;
== Comparison of the MVC implementations in various web-based frameworks ==&lt;br /&gt;
MVC being a framework can be exploited to work with various languages. A list of such languages would include C++, JAVA, Ruby, Flex, DOT NET and many more [Ref [http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller#Implementations_of_MVC_as_web-based_frameworks]]. We make an attempt here to compare the different implementations of MVC, with respect to the different programming and markup languages.&lt;br /&gt;
&lt;br /&gt;
=== Ruby === &lt;br /&gt;
Ruby on Rails is the most widely know MVC framework pattern [http://www.tutorialspoint.com/ruby-on-rails/rails-framework.htm]&lt;br /&gt;
&lt;br /&gt;
* Model (ActiveRecord ) :Maintains the relationship between Object and Database and handles validation, association, transactions, and more. &lt;br /&gt;
&lt;br /&gt;
* View ( ActionView ) :A presentation of data in a particular format, triggered by a controller's decision to present the data. They are script based templating systems like JSP, ASP, PHP and very easy to integrate with AJAX technology.&lt;br /&gt;
&lt;br /&gt;
* Controller ( ActionController ): The facility within the application that directs traffic, on the one hand querying the models for specific data, and on the other hand organizing that data (searching, sorting, massaging it) into a form that fits the needs of a given view. ActionController is thus a data broker sitting between ActiveRecord (the database interface) and ActionView (the presentation engine).&lt;br /&gt;
&lt;br /&gt;
== Flex ==&lt;br /&gt;
Cairngnorm is considered to be the best practice methodology for Flex software design [http://www.adobe.com/devnet/flex/articles/introducing_cairngorm.html]&lt;br /&gt;
&lt;br /&gt;
=== JAVA === &lt;br /&gt;
There are many frameworks like Struts, Spring which adopt the MVC methodology and are pertaining to JAVA.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PHP === &lt;br /&gt;
It has a plethora of MVC implementations. The top 10 MVC-based PHP frameworks are &lt;br /&gt;
# Symfony: Based on Mojavi and inspired by Rails&lt;br /&gt;
# Mojavi&lt;br /&gt;
# CakePHP: Inspired by Rails PHP4/5&lt;br /&gt;
# PHPOnTrax: a Rails port - PHP5 Only&lt;br /&gt;
# Prado: The winner of Zend coding contest&lt;br /&gt;
# Studs: A Java-Struts port to PHP&lt;br /&gt;
# Phrame: A Java-Struts port&lt;br /&gt;
# Achievo: A good RAD framework&lt;br /&gt;
# WACT: Web Application Component Toolkit&lt;br /&gt;
# Ambivalence: A Java-Maverick Port&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;/div&gt;</summary>
		<author><name>Zivora</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_13_za&amp;diff=20157</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 13 za</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_13_za&amp;diff=20157"/>
		<updated>2009-09-20T04:19:19Z</updated>

		<summary type="html">&lt;p&gt;Zivora: /* History and Applications of the MVC Pattern */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= History and Applications of the MVC Pattern =&lt;br /&gt;
&lt;br /&gt;
== Evolution of MVC ==&lt;br /&gt;
=== MVC Architecture ===&lt;br /&gt;
Over all these years, history of MVC architecture has become dim. MVC was invented at Xerox Parc in the 70's. Trygve Reenskaug was the one who wrote original notes on MVC in 1978 but he never got to publish them. His first note on the MVC pattern consisted of : Model, View, Controller and Editor. The 'Editor' is a short-lived component that the 'View' creates when necessary. This component is created as an interface between the 'View' and the input devices. After Reenskaug left Xerox PARC, Jim Althoff with a group of other people implemented a version of MVC specific to the Smalltalk-80 class library [Ref [http://heim.ifi.uio.no/~trygver/themes/mvc/mvc-index.html]].Even though they changed his implementation and removed the 'Editor' , Trygve Reenskaug was credited for his work. &lt;br /&gt;
&lt;br /&gt;
=== MVP Architecture ===&lt;br /&gt;
After the implementation of smalltalks-80 MVC, there were a few downsides to MVC approach and so a new variant of MVC was introduced MVP (Model View Presenter). It was very similar too MVC controller. The only difference lies in the way presenter is linked to the associated views. But over time, the difference got more obscure and now implementations of MVC frameworks follow more concept of MVP[Ref [http://www.typo3-media.com/blog/mvc-mvp-typo3-introduction.html]].&lt;br /&gt;
&lt;br /&gt;
=== MVC Design Pattern ===&lt;br /&gt;
Ward Cunningham and Ken Beck who were working with Smalltalk were the first to start the MVC design pattern in 1987. The MVC design pattern is different from the MVC architectural pattern. In fact there are many other design patterns - Analysis, Creational, Structural, Behavioral [Ref [http://en.wikipedia.org/wiki/Design_pattern_%28computer_science%29]].  More information on the use of MVC as an architectural pattern or a design pattern can be found at [http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller]&lt;br /&gt;
&lt;br /&gt;
== MVC - the ''buzz'' term! ==&lt;br /&gt;
[[Image:mvc.png|thumb|Image taken from www.symfony-project.org]]&lt;br /&gt;
&lt;br /&gt;
MVC (Model-View-Controller) offers a framework consisting of a Model that enforces the logical rules that should be applied to the data.  A View is pertaining to the user-interface. It helps the user to interact with the Model. Finally the Controller acts as the point of communication between the Model and the View, taking inputs or requests from the user and manipulating or processing the underlying data accordingly to provide the user with the desired outputs. For example, in an e-commerce business setting, a model will make sure that the shipping charges are correctly applied, a view will generate pages displaying the items available and a controller will make sure to add selected products to the cart of the customer.&lt;br /&gt;
&lt;br /&gt;
MVC offers a clear separation of the presentation logic from the business logic. This is the main reason, why it has been widely used architecture for web-based application. With an MVC framework, it becomes easy to accommodate future changes and implementations in design or code. MVC pattern gained prominence because of its clean modular approach that allow programmers to follow a formal approach for implementing business or enterprise level applications. Though, it is worth mentioning that using the MVC methodology for designing applications requires a lot of planning in terms of working out the separations in design and how the modules would interact. What is achieved by keeping these functionalities separate is ''reusability'' which is one of the major advantages of MVC.&lt;br /&gt;
&lt;br /&gt;
== Comparison of the MVC implementations in various web-based frameworks ==&lt;br /&gt;
MVC being a framework can be exploited to work with various languages. A list of such languages would include C++, JAVA, Ruby, Flex, DOT NET and many more [Ref [http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller#Implementations_of_MVC_as_web-based_frameworks]]. We make an attempt here to compare the different implementations of MVC, with respect to the different programming and markup languages.&lt;br /&gt;
&lt;br /&gt;
=== Ruby === &lt;br /&gt;
Ruby on Rails is the most widely know MVC framework pattern [http://www.tutorialspoint.com/ruby-on-rails/rails-framework.htm]&lt;br /&gt;
&lt;br /&gt;
* Model (ActiveRecord ) :Maintains the relationship between Object and Database and handles validation, association, transactions, and more. &lt;br /&gt;
&lt;br /&gt;
* View ( ActionView ) :A presentation of data in a particular format, triggered by a controller's decision to present the data. They are script based templating systems like JSP, ASP, PHP and very easy to integrate with AJAX technology.&lt;br /&gt;
&lt;br /&gt;
* Controller ( ActionController ): The facility within the application that directs traffic, on the one hand querying the models for specific data, and on the other hand organizing that data (searching, sorting, massaging it) into a form that fits the needs of a given view. ActionController is thus a data broker sitting between ActiveRecord (the database interface) and ActionView (the presentation engine).&lt;br /&gt;
&lt;br /&gt;
== Flex ==&lt;br /&gt;
Cairngnorm is considered to be the best practice methodology for Flex software design [http://www.adobe.com/devnet/flex/articles/introducing_cairngorm.html]&lt;br /&gt;
&lt;br /&gt;
=== JAVA === &lt;br /&gt;
There are many frameworks like Struts, Spring which adopt the MVC methodology and are pertaining to JAVA.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PHP === &lt;br /&gt;
It has a plethora of MVC implementations. The top 10 MVC-based PHP frameworks are &lt;br /&gt;
# Symfony: Based on Mojavi and inspired by Rails&lt;br /&gt;
# Mojavi&lt;br /&gt;
# CakePHP: Inspired by Rails PHP4/5&lt;br /&gt;
# PHPOnTrax: a Rails port - PHP5 Only&lt;br /&gt;
# Prado: The winner of Zend coding contest&lt;br /&gt;
# Studs: A Java-Struts port to PHP&lt;br /&gt;
# Phrame: A Java-Struts port&lt;br /&gt;
# Achievo: A good RAD framework&lt;br /&gt;
# WACT: Web Application Component Toolkit&lt;br /&gt;
# Ambivalence: A Java-Maverick Port&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;/div&gt;</summary>
		<author><name>Zivora</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_13_za&amp;diff=20154</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 13 za</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_13_za&amp;diff=20154"/>
		<updated>2009-09-20T04:18:36Z</updated>

		<summary type="html">&lt;p&gt;Zivora: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= History and Applications of the MVC Pattern =&lt;br /&gt;
[[Image:mvc.png|thumb|Image taken from www.symfony-project.org]]&lt;br /&gt;
&lt;br /&gt;
== Evolution of MVC ==&lt;br /&gt;
=== MVC Architecture ===&lt;br /&gt;
Over all these years, history of MVC architecture has become dim. MVC was invented at Xerox Parc in the 70's. Trygve Reenskaug was the one who wrote original notes on MVC in 1978 but he never got to publish them. His first note on the MVC pattern consisted of : Model, View, Controller and Editor. The 'Editor' is a short-lived component that the 'View' creates when necessary. This component is created as an interface between the 'View' and the input devices. After Reenskaug left Xerox PARC, Jim Althoff with a group of other people implemented a version of MVC specific to the Smalltalk-80 class library [Ref [http://heim.ifi.uio.no/~trygver/themes/mvc/mvc-index.html]].Even though they changed his implementation and removed the 'Editor' , Trygve Reenskaug was credited for his work. &lt;br /&gt;
&lt;br /&gt;
=== MVP Architecture ===&lt;br /&gt;
After the implementation of smalltalks-80 MVC, there were a few downsides to MVC approach and so a new variant of MVC was introduced MVP (Model View Presenter). It was very similar too MVC controller. The only difference lies in the way presenter is linked to the associated views. But over time, the difference got more obscure and now implementations of MVC frameworks follow more concept of MVP[Ref [http://www.typo3-media.com/blog/mvc-mvp-typo3-introduction.html]].&lt;br /&gt;
&lt;br /&gt;
=== MVC Design Pattern ===&lt;br /&gt;
Ward Cunningham and Ken Beck who were working with Smalltalk were the first to start the MVC design pattern in 1987. The MVC design pattern is different from the MVC architectural pattern. In fact there are many other design patterns - Analysis, Creational, Structural, Behavioral [Ref [http://en.wikipedia.org/wiki/Design_pattern_%28computer_science%29]].  More information on the use of MVC as an architectural pattern or a design pattern can be found at [http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller]&lt;br /&gt;
&lt;br /&gt;
== MVC - the ''buzz'' term! ==&lt;br /&gt;
&lt;br /&gt;
MVC (Model-View-Controller) offers a framework consisting of a Model that enforces the logical rules that should be applied to the data.  A View is pertaining to the user-interface. It helps the user to interact with the Model. Finally the Controller acts as the point of communication between the Model and the View, taking inputs or requests from the user and manipulating or processing the underlying data accordingly to provide the user with the desired outputs. For example, in an e-commerce business setting, a model will make sure that the shipping charges are correctly applied, a view will generate pages displaying the items available and a controller will make sure to add selected products to the cart of the customer.&lt;br /&gt;
&lt;br /&gt;
MVC offers a clear separation of the presentation logic from the business logic. This is the main reason, why it has been widely used architecture for web-based application. With an MVC framework, it becomes easy to accommodate future changes and implementations in design or code. MVC pattern gained prominence because of its clean modular approach that allow programmers to follow a formal approach for implementing business or enterprise level applications. Though, it is worth mentioning that using the MVC methodology for designing applications requires a lot of planning in terms of working out the separations in design and how the modules would interact. What is achieved by keeping these functionalities separate is ''reusability'' which is one of the major advantages of MVC.&lt;br /&gt;
&lt;br /&gt;
== Comparison of the MVC implementations in various web-based frameworks ==&lt;br /&gt;
MVC being a framework can be exploited to work with various languages. A list of such languages would include C++, JAVA, Ruby, Flex, DOT NET and many more [Ref [http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller#Implementations_of_MVC_as_web-based_frameworks]]. We make an attempt here to compare the different implementations of MVC, with respect to the different programming and markup languages.&lt;br /&gt;
&lt;br /&gt;
=== Ruby === &lt;br /&gt;
Ruby on Rails is the most widely know MVC framework pattern [http://www.tutorialspoint.com/ruby-on-rails/rails-framework.htm]&lt;br /&gt;
&lt;br /&gt;
* Model (ActiveRecord ) :Maintains the relationship between Object and Database and handles validation, association, transactions, and more. &lt;br /&gt;
&lt;br /&gt;
* View ( ActionView ) :A presentation of data in a particular format, triggered by a controller's decision to present the data. They are script based templating systems like JSP, ASP, PHP and very easy to integrate with AJAX technology.&lt;br /&gt;
&lt;br /&gt;
* Controller ( ActionController ): The facility within the application that directs traffic, on the one hand querying the models for specific data, and on the other hand organizing that data (searching, sorting, massaging it) into a form that fits the needs of a given view. ActionController is thus a data broker sitting between ActiveRecord (the database interface) and ActionView (the presentation engine).&lt;br /&gt;
&lt;br /&gt;
== Flex ==&lt;br /&gt;
Cairngnorm is considered to be the best practice methodology for Flex software design [http://www.adobe.com/devnet/flex/articles/introducing_cairngorm.html]&lt;br /&gt;
&lt;br /&gt;
=== JAVA === &lt;br /&gt;
There are many frameworks like Struts, Spring which adopt the MVC methodology and are pertaining to JAVA.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PHP === &lt;br /&gt;
It has a plethora of MVC implementations. The top 10 MVC-based PHP frameworks are &lt;br /&gt;
# Symfony: Based on Mojavi and inspired by Rails&lt;br /&gt;
# Mojavi&lt;br /&gt;
# CakePHP: Inspired by Rails PHP4/5&lt;br /&gt;
# PHPOnTrax: a Rails port - PHP5 Only&lt;br /&gt;
# Prado: The winner of Zend coding contest&lt;br /&gt;
# Studs: A Java-Struts port to PHP&lt;br /&gt;
# Phrame: A Java-Struts port&lt;br /&gt;
# Achievo: A good RAD framework&lt;br /&gt;
# WACT: Web Application Component Toolkit&lt;br /&gt;
# Ambivalence: A Java-Maverick Port&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;/div&gt;</summary>
		<author><name>Zivora</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_13_za&amp;diff=20147</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 13 za</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_13_za&amp;diff=20147"/>
		<updated>2009-09-20T04:15:16Z</updated>

		<summary type="html">&lt;p&gt;Zivora: /* Trygve Reenskaug */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= History and Applications of the MVC Pattern =&lt;br /&gt;
[[Image:mvc.png|thumb|Image taken from www.symfony-project.org]]&lt;br /&gt;
&lt;br /&gt;
== Trygve Reenskaug ==&lt;br /&gt;
&lt;br /&gt;
Over all these years, history of MVC architecture has become dim. MVC was invented at Xerox Parc in the 70's. Trygve Reenskaug was the one who wrote original notes on MVC in 1978 but he never got to publish them. His first note on the MVC pattern consisted of : Model, View, Controller and Editor. The 'Editor' is a short-lived component that the 'View' creates when necessary. This component is created as an interface between the 'View' and the input devices. After Reenskaug left Xerox PARC, Jim Althoff with a group of other people implemented a version of MVC specific to the Smalltalk-80 class library [Ref [http://heim.ifi.uio.no/~trygver/themes/mvc/mvc-index.html]].Even though they changed his implementation and removed the 'Editor' , Trygve Reenskaug was credited for his work. &lt;br /&gt;
&lt;br /&gt;
After the implementation of smalltalks-80 MVC, there were a few downsides to MVC approach and so a new variant of MVC was introduced MVP (Model View Presenter). It was very similar too MVC controller. The only difference lies in the way presenter is linked to the associated views. But over time, the difference got more obscure and now implementations of MVC frameworks follow more concept of MVP[Ref [http://www.typo3-media.com/blog/mvc-mvp-typo3-introduction.html]].&lt;br /&gt;
&lt;br /&gt;
Ward Cunningham and Ken Beck who were working with Smalltalk were the first to start the MVC design pattern in 1987. The MVC design pattern is different from the MVC architectural pattern. In fact there are many other design patterns - Analysis, Creational, Structural, Behavioral [Ref [http://en.wikipedia.org/wiki/Design_pattern_%28computer_science%29]].  More information on the use of MVC as an architectural pattern or a design pattern can be found at [http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller]&lt;br /&gt;
&lt;br /&gt;
== MVC - the ''buzz'' term! ==&lt;br /&gt;
MVC (Model-View-Controller) offers a framework consisting of a Model that represents the logical form of data. For example, in an e-commerce business setting, a shopping cart is a model that would represent the underlying data for the business. A View is pertaining to the user-interface. It helps the user to interact with the Model. Finally the Controller acts as the point of communication between the Model and the View, taking inputs or requests from the user and manipulating or processing the underlying data accordingly to provide the user with the desired outputs.&lt;br /&gt;
&lt;br /&gt;
MVC (Model-View-Controller) offers a framework consisting of a Model that enforces the logical rules that should be applied to the data.  A View is pertaining to the user-interface. It helps the user to interact with the Model. Finally the Controller acts as the point of communication between the Model and the View, taking inputs or requests from the user and manipulating or processing the underlying data accordingly to provide the user with the desired outputs. &lt;br /&gt;
&lt;br /&gt;
For example, in an e-commerce business setting, a model will make sure that the shipping charges are correctly applied, a view will generate pages displaying the items available and a controller will make sure to add selected products to the cart of the customer.&lt;br /&gt;
&lt;br /&gt;
== How it came into prominence ==&lt;br /&gt;
MVC offers a clear separation of the presentation logic from the business logic. This is the main reason, why it has been widely used architecture for web-based application. With an MVC framework, it becomes easy to accommodate future changes and implementations in design or code. MVC pattern gained prominence because of its clean modular approach that allow programmers to follow a formal approach for implementing business or enterprise level applications. Though, it is worth mentioning that using the MVC methodology for designing applications requires a lot of planning in terms of working out the separations in design and how the modules would interact. What is achieved by keeping these functionalities separate is ''reusability'' which is one of the major advantages of MVC.&lt;br /&gt;
&lt;br /&gt;
== Comparison of the MVC implementations in various web-based frameworks ==&lt;br /&gt;
MVC being a framework can be exploited to work with various languages. A list of such languages would include C++, JAVA, Ruby, Flex, DOT NET and many more [Ref [http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller#Implementations_of_MVC_as_web-based_frameworks]]. We make an attempt here to compare the different implementations of MVC, with respect to the different programming and markup languages.&lt;br /&gt;
&lt;br /&gt;
=== Ruby === &lt;br /&gt;
Ruby on Rails is the most widely know MVC framework pattern [http://www.tutorialspoint.com/ruby-on-rails/rails-framework.htm]&lt;br /&gt;
&lt;br /&gt;
* Model (ActiveRecord ) :Maintains the relationship between Object and Database and handles validation, association, transactions, and more. &lt;br /&gt;
&lt;br /&gt;
* View ( ActionView ) :A presentation of data in a particular format, triggered by a controller's decision to present the data. They are script based templating systems like JSP, ASP, PHP and very easy to integrate with AJAX technology.&lt;br /&gt;
&lt;br /&gt;
* Controller ( ActionController ): The facility within the application that directs traffic, on the one hand querying the models for specific data, and on the other hand organizing that data (searching, sorting, massaging it) into a form that fits the needs of a given view. ActionController is thus a data broker sitting between ActiveRecord (the database interface) and ActionView (the presentation engine).&lt;br /&gt;
&lt;br /&gt;
== Flex ==&lt;br /&gt;
Cairngnorm is considered to be the best practice methodology for Flex software design [http://www.adobe.com/devnet/flex/articles/introducing_cairngorm.html]&lt;br /&gt;
&lt;br /&gt;
=== JAVA === &lt;br /&gt;
There are many frameworks like Struts, Spring which adopt the MVC methodology and are pertaining to JAVA.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PHP === &lt;br /&gt;
It has a plethora of MVC implementations. The top 10 MVC-based PHP frameworks are &lt;br /&gt;
# Symfony: Based on Mojavi and inspired by Rails&lt;br /&gt;
# Mojavi&lt;br /&gt;
# CakePHP: Inspired by Rails PHP4/5&lt;br /&gt;
# PHPOnTrax: a Rails port - PHP5 Only&lt;br /&gt;
# Prado: The winner of Zend coding contest&lt;br /&gt;
# Studs: A Java-Struts port to PHP&lt;br /&gt;
# Phrame: A Java-Struts port&lt;br /&gt;
# Achievo: A good RAD framework&lt;br /&gt;
# WACT: Web Application Component Toolkit&lt;br /&gt;
# Ambivalence: A Java-Maverick Port&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;/div&gt;</summary>
		<author><name>Zivora</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_13_za&amp;diff=20140</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 13 za</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_13_za&amp;diff=20140"/>
		<updated>2009-09-20T03:57:44Z</updated>

		<summary type="html">&lt;p&gt;Zivora: /* Trygve Reenskaug */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= History and Applications of the MVC Pattern =&lt;br /&gt;
[[Image:mvc.png|thumb|Image taken from www.symfony-project.org]]&lt;br /&gt;
&lt;br /&gt;
== Trygve Reenskaug ==&lt;br /&gt;
Trygve Reenskaug has published historical documents on MVC that date back to 1973. His first note on the MVC pattern consisted of : Model, View, Controller and Editor. The 'Editor' is a short-lived component that the 'View' creates when necessary. This component is created as an interface between the 'View' and the input devices. After Reenskaug left Xerox PARC, Jim Althoff with a group of other people implemented a version of MVC specific to the Smalltalk-80 class library [Ref [http://heim.ifi.uio.no/~trygver/themes/mvc/mvc-index.html]]. MVC pattern served as a means to simplify the implementation of complex systems.&lt;br /&gt;
&lt;br /&gt;
Over all these years, history of MVC architecture has become dim. MVC was invented at Xerox Parc in the 70's. Trygve Reenskaug was the one who wrote original notes on MVC in 1978 but he never got to publish them. His first note on the MVC pattern consisted of : Model, View, Controller and Editor. The 'Editor' is a short-lived component that the 'View' creates when necessary. This component is created as an interface between the 'View' and the input devices. After Reenskaug left Xerox PARC, Jim Althoff with a group of other people implemented a version of MVC specific to the Smalltalk-80 class library [Ref [http://heim.ifi.uio.no/~trygver/themes/mvc/mvc-index.html]].Even though they changed his implementation and removed the 'Editor' , Trygve Reenskaug was credited for his work. &lt;br /&gt;
&lt;br /&gt;
After the implementation of smalltalks-80 MVC, there were a few downsides to MVC approach and so a new variant of MVC was introduced MVP (Model View Presenter). It was very similar too MVC controller. The only difference lies in the way presenter is linked to the associated views. But over time, the difference got more obscure and now implementations of MVC frameworks follow more concept of MVP[Ref [http://www.typo3-media.com/blog/mvc-mvp-typo3-introduction.html]].&lt;br /&gt;
&lt;br /&gt;
Ward Cunningham and Ken Beck who were working with Smalltalk were the first to start the MVC design pattern in 1987. The MVC design pattern is different from the MVC architectural pattern. In fact there are many other design patterns - Analysis, Creational, Structural, Behavioral [Ref [http://en.wikipedia.org/wiki/Design_pattern_%28computer_science%29]].  More information on the use of MVC as an architectural pattern or a design pattern can be found at [http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller]&lt;br /&gt;
&lt;br /&gt;
== MVC - the ''buzz'' term! ==&lt;br /&gt;
MVC (Model-View-Controller) offers a framework consisting of a Model that represents the logical form of data. For example, in an e-commerce business setting, a shopping cart is a model that would represent the underlying data for the business. A View is pertaining to the user-interface. It helps the user to interact with the Model. Finally the Controller acts as the point of communication between the Model and the View, taking inputs or requests from the user and manipulating or processing the underlying data accordingly to provide the user with the desired outputs.&lt;br /&gt;
&lt;br /&gt;
MVC (Model-View-Controller) offers a framework consisting of a Model that enforces the logical rules that should be applied to the data.  A View is pertaining to the user-interface. It helps the user to interact with the Model. Finally the Controller acts as the point of communication between the Model and the View, taking inputs or requests from the user and manipulating or processing the underlying data accordingly to provide the user with the desired outputs. &lt;br /&gt;
&lt;br /&gt;
For example, in an e-commerce business setting, a model will make sure that the shipping charges are correctly applied, a view will generate pages displaying the items available and a controller will make sure to add selected products to the cart of the customer.&lt;br /&gt;
&lt;br /&gt;
== How it came into prominence ==&lt;br /&gt;
MVC offers a clear separation of the presentation logic from the business logic. This is the main reason, why it has been widely used architecture for web-based application. With an MVC framework, it becomes easy to accommodate future changes and implementations in design or code. MVC pattern gained prominence because of its clean modular approach that allow programmers to follow a formal approach for implementing business or enterprise level applications. Though, it is worth mentioning that using the MVC methodology for designing applications requires a lot of planning in terms of working out the separations in design and how the modules would interact. What is achieved by keeping these functionalities separate is ''reusability'' which is one of the major advantages of MVC.&lt;br /&gt;
&lt;br /&gt;
== Comparison of the MVC implementations in various web-based frameworks ==&lt;br /&gt;
MVC being a framework can be exploited to work with various languages. A list of such languages would include C++, JAVA, Ruby, Flex, DOT NET and many more [Ref [http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller#Implementations_of_MVC_as_web-based_frameworks]]. We make an attempt here to compare the different implementations of MVC, with respect to the different programming and markup languages.&lt;br /&gt;
&lt;br /&gt;
=== Ruby === &lt;br /&gt;
Ruby on Rails is the most widely know MVC framework pattern [http://www.tutorialspoint.com/ruby-on-rails/rails-framework.htm]&lt;br /&gt;
&lt;br /&gt;
* Model (ActiveRecord ) :Maintains the relationship between Object and Database and handles validation, association, transactions, and more. &lt;br /&gt;
&lt;br /&gt;
* View ( ActionView ) :A presentation of data in a particular format, triggered by a controller's decision to present the data. They are script based templating systems like JSP, ASP, PHP and very easy to integrate with AJAX technology.&lt;br /&gt;
&lt;br /&gt;
* Controller ( ActionController ): The facility within the application that directs traffic, on the one hand querying the models for specific data, and on the other hand organizing that data (searching, sorting, massaging it) into a form that fits the needs of a given view. ActionController is thus a data broker sitting between ActiveRecord (the database interface) and ActionView (the presentation engine).&lt;br /&gt;
&lt;br /&gt;
== Flex ==&lt;br /&gt;
Cairngnorm is considered to be the best practice methodology for Flex software design [http://www.adobe.com/devnet/flex/articles/introducing_cairngorm.html]&lt;br /&gt;
&lt;br /&gt;
=== JAVA === &lt;br /&gt;
There are many frameworks like Struts, Spring which adopt the MVC methodology and are pertaining to JAVA.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PHP === &lt;br /&gt;
It has a plethora of MVC implementations. The top 10 MVC-based PHP frameworks are &lt;br /&gt;
# Symfony: Based on Mojavi and inspired by Rails&lt;br /&gt;
# Mojavi&lt;br /&gt;
# CakePHP: Inspired by Rails PHP4/5&lt;br /&gt;
# PHPOnTrax: a Rails port - PHP5 Only&lt;br /&gt;
# Prado: The winner of Zend coding contest&lt;br /&gt;
# Studs: A Java-Struts port to PHP&lt;br /&gt;
# Phrame: A Java-Struts port&lt;br /&gt;
# Achievo: A good RAD framework&lt;br /&gt;
# WACT: Web Application Component Toolkit&lt;br /&gt;
# Ambivalence: A Java-Maverick Port&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;/div&gt;</summary>
		<author><name>Zivora</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_13_za&amp;diff=20088</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 13 za</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_13_za&amp;diff=20088"/>
		<updated>2009-09-20T02:19:15Z</updated>

		<summary type="html">&lt;p&gt;Zivora: /* How it came into prominence */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= History and Applications of the MVC Pattern =&lt;br /&gt;
[[Image:mvc.png|thumb|Image taken from www.symfony-project.org]]&lt;br /&gt;
&lt;br /&gt;
== Trygve Reenskaug ==&lt;br /&gt;
Trygve Reenskaug has published historical documents on MVC that date back to 1973. His first note on the MVC pattern consisted of : Model, View, Controller and Editor. The 'Editor' is a short-lived component that the 'View' creates when necessary. This component is created as an interface between the 'View' and the input devices. After Reenskaug left Xerox PARC, Jim Althoff with a group of other people implemented a version of MVC specific to the Smalltalk-80 class library [Ref [http://heim.ifi.uio.no/~trygver/themes/mvc/mvc-index.html]]. MVC pattern served as a means to simplify the implementation of complex systems.&lt;br /&gt;
&lt;br /&gt;
The MVC design pattern is different from the MVC architectural pattern. In fact there are many other design patterns - Analysis, Creational, Structural, Behavioral [Ref [http://en.wikipedia.org/wiki/Design_pattern_%28computer_science%29]]. Ward Cunningham and Ken Beck who were working with Smalltalk were the first to start the MVC design pattern in 1987.&lt;br /&gt;
&lt;br /&gt;
More information on the use of MVC as an architectural pattern or a design pattern can be found at [http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== MVC - the ''buzz'' term! ==&lt;br /&gt;
MVC (Model-View-Controller) offers a framework consisting of a Model that represents the logical form of data. For example, in an e-commerce business setting, a shopping cart is a model that would represent the underlying data for the business. A View is pertaining to the user-interface. It helps the user to interact with the Model. Finally the Controller acts as the point of communication between the Model and the View, taking inputs or requests from the user and manipulating or processing the underlying data accordingly to provide the user with the desired outputs.&lt;br /&gt;
&lt;br /&gt;
MVC (Model-View-Controller) offers a framework consisting of a Model that enforces the logical rules that should be applied to the data.  A View is pertaining to the user-interface. It helps the user to interact with the Model. Finally the Controller acts as the point of communication between the Model and the View, taking inputs or requests from the user and manipulating or processing the underlying data accordingly to provide the user with the desired outputs. &lt;br /&gt;
&lt;br /&gt;
For example, in an e-commerce business setting, a model will make sure that the shipping charges are correctly applied, a view will generate pages displaying the items available and a controller will make sure to add selected products to the cart of the customer.&lt;br /&gt;
&lt;br /&gt;
== How it came into prominence ==&lt;br /&gt;
MVC offers a clear separation of the presentation logic from the business logic. This is the main reason, why it has been widely used architecture for web-based application. With an MVC framework, it becomes easy to accommodate future changes and implementations in design or code. MVC pattern gained prominence because of its clean modular approach that allow programmers to follow a formal approach for implementing business or enterprise level applications. Though, it is worth mentioning that using the MVC methodology for designing applications requires a lot of planning in terms of working out the separations in design and how the modules would interact. What is achieved by keeping these functionalities separate is ''reusability'' which is one of the major advantages of MVC.&lt;br /&gt;
&lt;br /&gt;
== Comparison of the MVC implementations in various web-based frameworks ==&lt;br /&gt;
MVC being a framework can be exploited to work with various languages. A list of such languages would include C++, JAVA, Ruby, Flex, DOT NET and many more [Ref [http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller#Implementations_of_MVC_as_web-based_frameworks]]. We make an attempt here to compare the different implementations of MVC, with respect to the different programming and markup languages.&lt;br /&gt;
&lt;br /&gt;
=== Ruby === &lt;br /&gt;
Ruby on Rails is the most widely know MVC framework pattern [http://www.tutorialspoint.com/ruby-on-rails/rails-framework.htm]&lt;br /&gt;
&lt;br /&gt;
* Model (ActiveRecord ) :Maintains the relationship between Object and Database and handles validation, association, transactions, and more. &lt;br /&gt;
&lt;br /&gt;
* View ( ActionView ) :A presentation of data in a particular format, triggered by a controller's decision to present the data. They are script based templating systems like JSP, ASP, PHP and very easy to integrate with AJAX technology.&lt;br /&gt;
&lt;br /&gt;
* Controller ( ActionController ): The facility within the application that directs traffic, on the one hand querying the models for specific data, and on the other hand organizing that data (searching, sorting, massaging it) into a form that fits the needs of a given view. ActionController is thus a data broker sitting between ActiveRecord (the database interface) and ActionView (the presentation engine).&lt;br /&gt;
&lt;br /&gt;
== Flex ==&lt;br /&gt;
Cairngnorm is considered to be the best practice methodology for Flex software design [http://www.adobe.com/devnet/flex/articles/introducing_cairngorm.html]&lt;br /&gt;
&lt;br /&gt;
=== JAVA === &lt;br /&gt;
There are many frameworks like Struts, Spring which adopt the MVC methodology and are pertaining to JAVA.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PHP === &lt;br /&gt;
It has a plethora of MVC implementations. The top 10 MVC-based PHP frameworks are &lt;br /&gt;
# Symfony: Based on Mojavi and inspired by Rails&lt;br /&gt;
# Mojavi&lt;br /&gt;
# CakePHP: Inspired by Rails PHP4/5&lt;br /&gt;
# PHPOnTrax: a Rails port - PHP5 Only&lt;br /&gt;
# Prado: The winner of Zend coding contest&lt;br /&gt;
# Studs: A Java-Struts port to PHP&lt;br /&gt;
# Phrame: A Java-Struts port&lt;br /&gt;
# Achievo: A good RAD framework&lt;br /&gt;
# WACT: Web Application Component Toolkit&lt;br /&gt;
# Ambivalence: A Java-Maverick Port&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;/div&gt;</summary>
		<author><name>Zivora</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_13_za&amp;diff=20085</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 13 za</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_13_za&amp;diff=20085"/>
		<updated>2009-09-20T02:18:37Z</updated>

		<summary type="html">&lt;p&gt;Zivora: /* How it came into prominence */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= History and Applications of the MVC Pattern =&lt;br /&gt;
[[Image:mvc.png|thumb|Image taken from www.symfony-project.org]]&lt;br /&gt;
&lt;br /&gt;
== Trygve Reenskaug ==&lt;br /&gt;
Trygve Reenskaug has published historical documents on MVC that date back to 1973. His first note on the MVC pattern consisted of : Model, View, Controller and Editor. The 'Editor' is a short-lived component that the 'View' creates when necessary. This component is created as an interface between the 'View' and the input devices. After Reenskaug left Xerox PARC, Jim Althoff with a group of other people implemented a version of MVC specific to the Smalltalk-80 class library [Ref [http://heim.ifi.uio.no/~trygver/themes/mvc/mvc-index.html]]. MVC pattern served as a means to simplify the implementation of complex systems.&lt;br /&gt;
&lt;br /&gt;
The MVC design pattern is different from the MVC architectural pattern. In fact there are many other design patterns - Analysis, Creational, Structural, Behavioral [Ref [http://en.wikipedia.org/wiki/Design_pattern_%28computer_science%29]]. Ward Cunningham and Ken Beck who were working with Smalltalk were the first to start the MVC design pattern in 1987.&lt;br /&gt;
&lt;br /&gt;
More information on the use of MVC as an architectural pattern or a design pattern can be found at [http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== MVC - the ''buzz'' term! ==&lt;br /&gt;
MVC (Model-View-Controller) offers a framework consisting of a Model that represents the logical form of data. For example, in an e-commerce business setting, a shopping cart is a model that would represent the underlying data for the business. A View is pertaining to the user-interface. It helps the user to interact with the Model. Finally the Controller acts as the point of communication between the Model and the View, taking inputs or requests from the user and manipulating or processing the underlying data accordingly to provide the user with the desired outputs.&lt;br /&gt;
&lt;br /&gt;
MVC (Model-View-Controller) offers a framework consisting of a Model that enforces the logical rules that should be applied to the data.  A View is pertaining to the user-interface. It helps the user to interact with the Model. Finally the Controller acts as the point of communication between the Model and the View, taking inputs or requests from the user and manipulating or processing the underlying data accordingly to provide the user with the desired outputs. &lt;br /&gt;
&lt;br /&gt;
For example, in an e-commerce business setting, a model will make sure that the shipping charges are correctly applied, a view will generate pages displaying the items available and a controller will make sure to add selected products to the cart of the customer.&lt;br /&gt;
&lt;br /&gt;
== How it came into prominence ==&lt;br /&gt;
MVC offers a clear separation of the presentation logic from the business logic. This is the main reason why it is widely used architecture for web-based application. With an MVC framework, it becomes easy to accommodate future changes and implementations in design or code. MVC pattern gained prominence because of its clean modular approach that allow programmers to follow a formal approach for implementing business or enterprise level applications. Though, it is worth mentioning that using the MVC methodology for designing applications requires a lot of planning in terms of working out the separations in design and how the modules would interact. What is achieved by keeping these functionalities separate is ''reusability'' which is one of the major advantages of MVC.&lt;br /&gt;
&lt;br /&gt;
== Comparison of the MVC implementations in various web-based frameworks ==&lt;br /&gt;
MVC being a framework can be exploited to work with various languages. A list of such languages would include C++, JAVA, Ruby, Flex, DOT NET and many more [Ref [http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller#Implementations_of_MVC_as_web-based_frameworks]]. We make an attempt here to compare the different implementations of MVC, with respect to the different programming and markup languages.&lt;br /&gt;
&lt;br /&gt;
=== Ruby === &lt;br /&gt;
Ruby on Rails is the most widely know MVC framework pattern [http://www.tutorialspoint.com/ruby-on-rails/rails-framework.htm]&lt;br /&gt;
&lt;br /&gt;
* Model (ActiveRecord ) :Maintains the relationship between Object and Database and handles validation, association, transactions, and more. &lt;br /&gt;
&lt;br /&gt;
* View ( ActionView ) :A presentation of data in a particular format, triggered by a controller's decision to present the data. They are script based templating systems like JSP, ASP, PHP and very easy to integrate with AJAX technology.&lt;br /&gt;
&lt;br /&gt;
* Controller ( ActionController ): The facility within the application that directs traffic, on the one hand querying the models for specific data, and on the other hand organizing that data (searching, sorting, massaging it) into a form that fits the needs of a given view. ActionController is thus a data broker sitting between ActiveRecord (the database interface) and ActionView (the presentation engine).&lt;br /&gt;
&lt;br /&gt;
== Flex ==&lt;br /&gt;
Cairngnorm is considered to be the best practice methodology for Flex software design [http://www.adobe.com/devnet/flex/articles/introducing_cairngorm.html]&lt;br /&gt;
&lt;br /&gt;
=== JAVA === &lt;br /&gt;
There are many frameworks like Struts, Spring which adopt the MVC methodology and are pertaining to JAVA.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PHP === &lt;br /&gt;
It has a plethora of MVC implementations. The top 10 MVC-based PHP frameworks are &lt;br /&gt;
# Symfony: Based on Mojavi and inspired by Rails&lt;br /&gt;
# Mojavi&lt;br /&gt;
# CakePHP: Inspired by Rails PHP4/5&lt;br /&gt;
# PHPOnTrax: a Rails port - PHP5 Only&lt;br /&gt;
# Prado: The winner of Zend coding contest&lt;br /&gt;
# Studs: A Java-Struts port to PHP&lt;br /&gt;
# Phrame: A Java-Struts port&lt;br /&gt;
# Achievo: A good RAD framework&lt;br /&gt;
# WACT: Web Application Component Toolkit&lt;br /&gt;
# Ambivalence: A Java-Maverick Port&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;/div&gt;</summary>
		<author><name>Zivora</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_13_za&amp;diff=20082</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 13 za</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_13_za&amp;diff=20082"/>
		<updated>2009-09-20T02:07:47Z</updated>

		<summary type="html">&lt;p&gt;Zivora: /* MVC - the ''buzz'' term! */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= History and Applications of the MVC Pattern =&lt;br /&gt;
[[Image:mvc.png|thumb|Image taken from www.symfony-project.org]]&lt;br /&gt;
&lt;br /&gt;
== Trygve Reenskaug ==&lt;br /&gt;
Trygve Reenskaug has published historical documents on MVC that date back to 1973. His first note on the MVC pattern consisted of : Model, View, Controller and Editor. The 'Editor' is a short-lived component that the 'View' creates when necessary. This component is created as an interface between the 'View' and the input devices. After Reenskaug left Xerox PARC, Jim Althoff with a group of other people implemented a version of MVC specific to the Smalltalk-80 class library [Ref [http://heim.ifi.uio.no/~trygver/themes/mvc/mvc-index.html]]. MVC pattern served as a means to simplify the implementation of complex systems.&lt;br /&gt;
&lt;br /&gt;
The MVC design pattern is different from the MVC architectural pattern. In fact there are many other design patterns - Analysis, Creational, Structural, Behavioral [Ref [http://en.wikipedia.org/wiki/Design_pattern_%28computer_science%29]]. Ward Cunningham and Ken Beck who were working with Smalltalk were the first to start the MVC design pattern in 1987.&lt;br /&gt;
&lt;br /&gt;
More information on the use of MVC as an architectural pattern or a design pattern can be found at [http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== MVC - the ''buzz'' term! ==&lt;br /&gt;
MVC (Model-View-Controller) offers a framework consisting of a Model that represents the logical form of data. For example, in an e-commerce business setting, a shopping cart is a model that would represent the underlying data for the business. A View is pertaining to the user-interface. It helps the user to interact with the Model. Finally the Controller acts as the point of communication between the Model and the View, taking inputs or requests from the user and manipulating or processing the underlying data accordingly to provide the user with the desired outputs.&lt;br /&gt;
&lt;br /&gt;
MVC (Model-View-Controller) offers a framework consisting of a Model that enforces the logical rules that should be applied to the data.  A View is pertaining to the user-interface. It helps the user to interact with the Model. Finally the Controller acts as the point of communication between the Model and the View, taking inputs or requests from the user and manipulating or processing the underlying data accordingly to provide the user with the desired outputs. &lt;br /&gt;
&lt;br /&gt;
For example, in an e-commerce business setting, a model will make sure that the shipping charges are correctly applied, a view will generate pages displaying the items available and a controller will make sure to add selected products to the cart of the customer.&lt;br /&gt;
&lt;br /&gt;
== How it came into prominence ==&lt;br /&gt;
MVC offers a clear separation of the presentation logic from the business logic. With an MVC framework, it becomes easy to accommodate future changes and implementations in design or code. MVC pattern gained prominence because of its clean modular approach that allow programmers to follow a formal approach for implementing business or enterprise level applications. Though, it is worth mentioning that using the MVC methodology for designing applications requires a lot of planning in terms of working out the separations in design and how the modules would interact. What is achieved by keeping these functionalities separate is ''reusability'' which is one of the major advantages of MVC.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Comparison of the MVC implementations in various web-based frameworks ==&lt;br /&gt;
MVC being a framework can be exploited to work with various languages. A list of such languages would include C++, JAVA, Ruby, Flex, DOT NET and many more [Ref [http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller#Implementations_of_MVC_as_web-based_frameworks]]. We make an attempt here to compare the different implementations of MVC, with respect to the different programming and markup languages.&lt;br /&gt;
&lt;br /&gt;
=== Ruby === &lt;br /&gt;
Ruby on Rails is the most widely know MVC framework pattern [http://www.tutorialspoint.com/ruby-on-rails/rails-framework.htm]&lt;br /&gt;
&lt;br /&gt;
* Model (ActiveRecord ) :Maintains the relationship between Object and Database and handles validation, association, transactions, and more. &lt;br /&gt;
&lt;br /&gt;
* View ( ActionView ) :A presentation of data in a particular format, triggered by a controller's decision to present the data. They are script based templating systems like JSP, ASP, PHP and very easy to integrate with AJAX technology.&lt;br /&gt;
&lt;br /&gt;
* Controller ( ActionController ): The facility within the application that directs traffic, on the one hand querying the models for specific data, and on the other hand organizing that data (searching, sorting, massaging it) into a form that fits the needs of a given view. ActionController is thus a data broker sitting between ActiveRecord (the database interface) and ActionView (the presentation engine).&lt;br /&gt;
&lt;br /&gt;
== Flex ==&lt;br /&gt;
Cairngnorm is considered to be the best practice methodology for Flex software design [http://www.adobe.com/devnet/flex/articles/introducing_cairngorm.html]&lt;br /&gt;
&lt;br /&gt;
=== JAVA === &lt;br /&gt;
There are many frameworks like Struts, Spring which adopt the MVC methodology and are pertaining to JAVA.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PHP === &lt;br /&gt;
It has a plethora of MVC implementations. The top 10 MVC-based PHP frameworks are &lt;br /&gt;
# Symfony: Based on Mojavi and inspired by Rails&lt;br /&gt;
# Mojavi&lt;br /&gt;
# CakePHP: Inspired by Rails PHP4/5&lt;br /&gt;
# PHPOnTrax: a Rails port - PHP5 Only&lt;br /&gt;
# Prado: The winner of Zend coding contest&lt;br /&gt;
# Studs: A Java-Struts port to PHP&lt;br /&gt;
# Phrame: A Java-Struts port&lt;br /&gt;
# Achievo: A good RAD framework&lt;br /&gt;
# WACT: Web Application Component Toolkit&lt;br /&gt;
# Ambivalence: A Java-Maverick Port&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;/div&gt;</summary>
		<author><name>Zivora</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_13_za&amp;diff=20079</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 13 za</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_13_za&amp;diff=20079"/>
		<updated>2009-09-20T02:05:04Z</updated>

		<summary type="html">&lt;p&gt;Zivora: /* MVC - the ''buzz'' term! */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= History and Applications of the MVC Pattern =&lt;br /&gt;
[[Image:mvc.png|thumb|Image taken from www.symfony-project.org]]&lt;br /&gt;
&lt;br /&gt;
== Trygve Reenskaug ==&lt;br /&gt;
Trygve Reenskaug has published historical documents on MVC that date back to 1973. His first note on the MVC pattern consisted of : Model, View, Controller and Editor. The 'Editor' is a short-lived component that the 'View' creates when necessary. This component is created as an interface between the 'View' and the input devices. After Reenskaug left Xerox PARC, Jim Althoff with a group of other people implemented a version of MVC specific to the Smalltalk-80 class library [Ref [http://heim.ifi.uio.no/~trygver/themes/mvc/mvc-index.html]]. MVC pattern served as a means to simplify the implementation of complex systems.&lt;br /&gt;
&lt;br /&gt;
The MVC design pattern is different from the MVC architectural pattern. In fact there are many other design patterns - Analysis, Creational, Structural, Behavioral [Ref [http://en.wikipedia.org/wiki/Design_pattern_%28computer_science%29]]. Ward Cunningham and Ken Beck who were working with Smalltalk were the first to start the MVC design pattern in 1987.&lt;br /&gt;
&lt;br /&gt;
More information on the use of MVC as an architectural pattern or a design pattern can be found at [http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== MVC - the ''buzz'' term! ==&lt;br /&gt;
MVC (Model-View-Controller) offers a framework consisting of a Model that represents the logical form of data. For example, in an e-commerce business setting, a shopping cart is a model that would represent the underlying data for the business. A View is pertaining to the user-interface. It helps the user to interact with the Model. Finally the Controller acts as the point of communication between the Model and the View, taking inputs or requests from the user and manipulating or processing the underlying data accordingly to provide the user with the desired outputs.&lt;br /&gt;
&lt;br /&gt;
MVC (Model-View-Controller) offers a framework consisting of a Model that enforces the logical rules that should be applied to the data. For example, in an e-commerce business setting, a model will make sure that the shipping charges are correctly applied. A View is pertaining to the user-interface. It helps the user to interact with the Model. In the above example only, a view will generate pages displaying the items available. Finally the Controller acts as the point of communication between the Model and the View, taking inputs or requests from the user and manipulating or processing the underlying data accordingly to provide the user with the desired outputs. Similarly, a controller will make sure to add selected products to the cart of the customer.&lt;br /&gt;
&lt;br /&gt;
== How it came into prominence ==&lt;br /&gt;
MVC offers a clear separation of the presentation logic from the business logic. With an MVC framework, it becomes easy to accommodate future changes and implementations in design or code. MVC pattern gained prominence because of its clean modular approach that allow programmers to follow a formal approach for implementing business or enterprise level applications. Though, it is worth mentioning that using the MVC methodology for designing applications requires a lot of planning in terms of working out the separations in design and how the modules would interact. What is achieved by keeping these functionalities separate is ''reusability'' which is one of the major advantages of MVC.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Comparison of the MVC implementations in various web-based frameworks ==&lt;br /&gt;
MVC being a framework can be exploited to work with various languages. A list of such languages would include C++, JAVA, Ruby, Flex, DOT NET and many more [Ref [http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller#Implementations_of_MVC_as_web-based_frameworks]]. We make an attempt here to compare the different implementations of MVC, with respect to the different programming and markup languages.&lt;br /&gt;
&lt;br /&gt;
=== Ruby === &lt;br /&gt;
Ruby on Rails is the most widely know MVC framework pattern [http://www.tutorialspoint.com/ruby-on-rails/rails-framework.htm]&lt;br /&gt;
&lt;br /&gt;
* Model (ActiveRecord ) :Maintains the relationship between Object and Database and handles validation, association, transactions, and more. &lt;br /&gt;
&lt;br /&gt;
* View ( ActionView ) :A presentation of data in a particular format, triggered by a controller's decision to present the data. They are script based templating systems like JSP, ASP, PHP and very easy to integrate with AJAX technology.&lt;br /&gt;
&lt;br /&gt;
* Controller ( ActionController ): The facility within the application that directs traffic, on the one hand querying the models for specific data, and on the other hand organizing that data (searching, sorting, massaging it) into a form that fits the needs of a given view. ActionController is thus a data broker sitting between ActiveRecord (the database interface) and ActionView (the presentation engine).&lt;br /&gt;
&lt;br /&gt;
== Flex ==&lt;br /&gt;
Cairngnorm is considered to be the best practice methodology for Flex software design [http://www.adobe.com/devnet/flex/articles/introducing_cairngorm.html]&lt;br /&gt;
&lt;br /&gt;
=== JAVA === &lt;br /&gt;
There are many frameworks like Struts, Spring which adopt the MVC methodology and are pertaining to JAVA.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PHP === &lt;br /&gt;
It has a plethora of MVC implementations. The top 10 MVC-based PHP frameworks are &lt;br /&gt;
# Symfony: Based on Mojavi and inspired by Rails&lt;br /&gt;
# Mojavi&lt;br /&gt;
# CakePHP: Inspired by Rails PHP4/5&lt;br /&gt;
# PHPOnTrax: a Rails port - PHP5 Only&lt;br /&gt;
# Prado: The winner of Zend coding contest&lt;br /&gt;
# Studs: A Java-Struts port to PHP&lt;br /&gt;
# Phrame: A Java-Struts port&lt;br /&gt;
# Achievo: A good RAD framework&lt;br /&gt;
# WACT: Web Application Component Toolkit&lt;br /&gt;
# Ambivalence: A Java-Maverick Port&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;/div&gt;</summary>
		<author><name>Zivora</name></author>
	</entry>
</feed>