2. *** Web 3.0
• I was brought on board 8/2011
• Discussion/architecture continued until 10/2011
• Our platform consists of
• Web Forms with Custom Web Parts
• Open Source Grid/Layout/Window plugins
• Challenges we faced
• Localization of client side script
• How to take advantage of ***’s awesome biz architecture
• How to support licensing/authentication through a state-full architecture
• How to organize client side code in a meaningful efficient manner
• How to create rich UI widgets in HTML 5 that have “near native” performance
3. Our Choices
• Localization:
• Uses AJAX ScriptManager and embedded JavaScript files in web part assemblies
• Biz Architecture
• Created a Service Oriented Architecture on top of the *** biz layer using Windows Communication
Foundation. All client side interactions are handled through AJAX calls to these services.
• Authentication/Licensing
• Handled by shuffling a cookie containing “auth” object from web application to client side JavaScript
and back to web service. User is authenticated via cookie through two separate app domains.
• Client Side Code Organization
• Each main UI element is encapsulated in it’s own “web part project” in the UI layer under ***.UI.Web.*.
Each web part is embedded with it’s own HTML/JavaScript/CSS resources, and injected into the site via
the web forms script manager. During injection ScriptManager can handle things like localization.
• UI Widget
• Used the open source plugins DataTables, AeroWindow, and jQueryLayout
4. Our UI Framework Alternatives Were Not
Ready…
• KendoUI/IgniteUI were both in infancy
• IgniteUI was previously called
NetVantage for jQuery
• Neither had a stable grid component that
supported the advanced functionality we
required.
• These features did not yet exist per the
Netvantage jQuery 2011.2 document:
• Column resizing/reordering
• Item previewing
• NetVantage’s grid had a list of 27 known
bugs, 7 of which had no workaround and
were never fixed.
KendoUI
5. Microsoft Also changed the Web Service
game…
• At the time, WCF or traditional ASPX web services were
the only way to create RESTful web services
• WCF is a pain in the ass.
• WCF REST is an extra hard pain in the ass.
• WCF REST with both windows authentication and
anonymous authentication is the most unbelievably
largest pain in the ass imaginable.
• Plus it ruined my Disneyworld trip.
• Help was around the corner – Two project promised to
simplify RESTful services:
• WCF Web API:
• http://wcf.codeplex.com/wikipage?title=WCF%20Web
%20API%20is%20now%20ASP.NET%20Web%20API
• WCF REST Starter Kit:
• http://aspnet.codeplex.com/releases/view/24644
6. Microsoft Also changed the Web Service
game…
• Microsoft was very awesome. :-/
• They decided to replace WCF REST API
with MVC Web API
• As always – the story is that WCF REST
has very viable use cases blah blah
blah… *cough* Silverlight *cough*
• Web API was released Aug 2012 –
about halfway through our
development cycle.
• MVC itself was in Version 3 when we
started – Version 4 was released Aug
2012, and Version 5 is currently in
preview.
WEB
API
WCF
7. Other technology that has popped up over
the last two years
• SignalR/WebSockets
• TypeScript
• SASS/LeSS
• NodeJS
• NuGET
• GitHub
• 5 gazillion JavaScript frameworks
• Native JS Development (Windows
8, Google Apps)
• ShadowDOM
• Web Components/Polymer
• HTTP 2.0
• SPDY (IE11 supports!)
In Use Today Around the Corner
8. Web Forms vs. MVC
Web Forms
• Great UI encapsulation
• Localization through
RESX/ScriptManager
• Poor web development practices
• ViewState
• Single Form per Page
• Slows development – very difficult
to order JavaScript/CSS/HTML in
the most efficient manner.
MVC
• Ex Ruby staff
• UI encapsulated only through JS files –
not separate projects
• Localization through JSON
• Thin HTML – no extra hidden
elements/ViewState/random Microsoft
garbage
• All of the new Visual Studio tooling is
being developed with WinForms in mind
– i.e. web essentials doesn’t have a way
to preview/reference files from an
embedded assembly.
9. In Summation
• I’ve developed a healthy hatred for the Microsoft platform
• I also like some really cool things about the new Microsoft
platforms.
• But those really cool things will probably be replaced in a year or
two.
• MVC is a very cool way to develop
• Except for it abandons the way Microsoft has built web software for over 10 years.
• And it also does not integrated with Microsoft Web products like SharePoint, which
will remain web forms based for years to come.
• It is more closely related to every other web platform out there, like PHP, Ruby, Java
Server Pages (JSP), etc.
• MVC is a faster, more web oriented, and a less bug prone method
of developing.
• I don’t have to spend time digging around in viewstate
• JavaScript isn’t parsed through web handlers
• Web toolsets like Google Chrome are easier to use.
• We are prepared for the transition – MVC was on the radar, and all
of our web parts will built with the concept of one day transitions to
MVC in mind.
• No server side DOM
• No ViewState
I ran out of time building this
PowerPoint – here’s a picture
of a kitten petting a duck