Stupid Web Technology Moves Too
*** 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
• 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.
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.*.
the web forms script manager. During injection ScriptManager can handle things like localization.
• UI Widget
• Used the open source plugins DataTables, AeroWindow, and jQueryLayout
Our UI Framework Alternatives Were Not
• 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
• 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.
Microsoft Also changed the Web Service
• 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:
• WCF REST Starter Kit:
Microsoft Also changed the Web Service
• 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
• MVC itself was in Version 3 when we
started – Version 4 was released Aug
2012, and Version 5 is currently in
Other technology that has popped up over
the last two years
• Native JS Development (Windows
8, Google Apps)
• Web Components/Polymer
• HTTP 2.0
• SPDY (IE11 supports!)
In Use Today Around the Corner
Web Forms vs. MVC
• Great UI encapsulation
• Localization through
• Poor web development practices
• Single Form per Page
• Slows development – very difficult
the most efficient manner.
• Ex Ruby staff
• UI encapsulated only through JS files –
not separate projects
• Localization through JSON
• Thin HTML – no extra hidden
• 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
• I’ve developed a healthy hatred for the Microsoft platform
• I also like some really cool things about the new Microsoft
• But those really cool things will probably be replaced in a year or
• 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
• I don’t have to spend time digging around in viewstate
• 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
A particular slide catching your eye?
Clipping is a handy way to collect important slides you want to go back to later.