givanse/mvc-tree

View on GitHub
app/templates/technologies/msaccess.hbs

Summary

Maintainability
Test Coverage
<p>
  In the 90's Microsoft loved "data binding" where UI controls were coupled to rows in database tables. To some this is the antithesis of MVC, and might be the primary reason Microsoft was late to the MVC party.
</p>

<p>
  The 1995 Microsoft Access had a perfectly functional data binding capability. MS Access bound a record in a database table to the form showing it. Forms had next/previous ("&lt;" and "&gt;") controls. When those were interacted with the form would transition to the intended row in the table, with the data-bound fields in the form updating automatically. If the user had changed some fields in the form, before hitting next, they would be saved automatically too when next/prev was pressed. It was possible to veto the advancing of the form, but the data-bound nature of the form and the fields from a database attempted to be dominant. In the context of MVC, there was no intermediate model. The view (form) was wired directly to the database.
</p>

<p>
  ActiveX had a data-binding technology called ActiveX Data Objects (<a href="http://en.wikipedia.org/wiki/ActiveX_Data_Objects">ADO</a>). Microsoft released ADO in October 1996.
</p>

<p>
  MicroSoft launched .Net for public consupmtion in 2000. One facet of that was Active Data Objects (ADO.NET). Obviously that was taking ADO into the new .NET era. It very much continued the data-bound style, and UI technologies for .NET were also wired to it. 
</p>

<p>
  In 2003, Erik Dörnenburg wrote a technology called .NET Entity Objects Framework (<a href="http://neo.sourceforge.net/">NEO</a>). He had worked with NeXTSTEP in '92, which was strongly modelled on MVC, and Enterprise Objects Framework (<a href="http://en.wikipedia.org/wiki/Enterprise_Objects_Framework">EOF</a>) specifically, and wanted to bring some of that to .NET. He was also an Agile enthusiast, and wanted to have as much testable code as possible. He made Neo to help separate ADO.NET a little and allow some that testable, separative goodness. Neo as a persistence technology worked very well with WinForms.NET, at the time, It also had some other strong non-functional features but they are not important to this description. Erik later presented on this at a conference "Data programming beyond ADO.NET" in 2004 (see <a href="http://erik.doernenburg.com/talks/really-old/">his old presentations page - scroll to the bottom</a>), and some time after Microsoft bundled non data-binding technologies with .NET, but it could have been a coincidence. That started their patronage of the MVP sub-family of patterns.
</p>

<p>
  MS being a patron of data-binding for many years might be one part of why they were so late to a proper implementation of MVC. Late being <a href="#aspnet">ASP.Net MVC</a> in 2008.
</p>