Before discussing more, please realize what I’m talking about is not “theoretical research”, but “real successful practice”.
I created the word – “jqMVC#”, which means bunch of things:
Another thing which is not directly represented by the word but implied is TDD in JavaScript but whose code is written in C#.
When all these things come together, it is jqMVC# – a new practical architecture which makes enterprise-level HTML & JavaScript only rich UI development in B/S-architecture application become not only possible, but also as a representative of HTML5 with which we could really say ‘Good bye!’ to Flash & Silverlight even now.
In this summary, I’m trying to talk a little bit more for each of the items I mentioned in previous section to make this architecture look more conceivable.
Firstly, our JavaScript code is written in C# with the help of Script#. Script# could compile C# source code to JavaScript automatically. The biggest benefit here is, even a junior developer who is familiar with C# but only know a little of JavaScript could write huge OO JavaScript code efficiently.
Secondly, the M, V, C classes implementing the MVC pattern in client-side JavaScript are written in C# and are compiled into JavaScript through Script# automatically.
Why MVC?
Two main benefits:
1. Separations of data, controlling and presentation;
2. Easier for unit testing;
In JavaScript, when we implementing MVC pattern,
Thirdly, jQuery & jQuery plugins are wrapped by Script# together with the Script# predefined libraries as the main tool libraries for client side UI rendering & controlling. Especially, jTemplate is used as the main HTML rendering engine. QUnit is also wrapped by Script# and used as the client-side testing library to implement client-side regression testing which is the core of client-side TDD.
In next post, I’m going to give a simple but runable example and try to convince you why I’m saying “It is time to say ‘Good bye!’ to Flash & Silverlight in RIA” when we are applying jqMVC# architecture.
<script type="text/javascript"> if ($ != jQuery) { $ = jQuery.noConflict(); } </script>