This document discusses the past, present, and future of server-side web development on Windows. It describes how server-side scripting was initially used to generate markup on the server. Frameworks like ASP.NET were introduced to bridge differences between web and application development, though they remained focused on server-side rendering. More recently, frameworks have embraced approaches like separating data, logic, and presentation inspired by Ruby on Rails. The document argues that Microsoft's new Helios project represents the future of ASP.NET by adopting an asynchronous, middleware-based approach like Node.js while retaining integration with IIS and existing .NET programming models.
5. Consulting/Training
Skillset mismatch between application dev
and web dev (languages, statefulness, etc.)
Interpreted execution, synchronous I/O
bad perf and scale
Your markup chocolate got in my app
logic peanut butter
8. Consulting/Training
Page-based forms over data metaphor
unified application and web development
Still generating markup on the server
Still not much happening in the browser
9. Consulting/Training
Increasing web app sophistication pushed
boundaries of the framework
Forms over data metaphor not always
desirable
Law of Leaky Abstractions
15. Consulting/Training
Plug-in based app model died on the vine
Canned AJAX behaviors performed poorly,
unattractive relative to newer options
Microsoft zigged, the world zagged
18. Consulting/Training
Borrowed from Rails (and Smalltalk, etc.) to
achieve formal separation of data, logic,
and presentation
Back to generating real HTML
Still integrated with core ASP.NET pipeline
19. Consulting/Training
Still (mostly) about server-side markup
generation
Still drags around legacy ASP.NET (Web
Forms is still in your AppDomain!)
Heavyweight, prescriptive model
31. Consulting/Training
All I/O is non-blocking, uses internal thread
pool
Non I/O-based request processing occurs
on a single threaded event loop, with
minimal per-request allocation
34. Consulting/Training
So, node is great for two main reasons:
Async I/O ensures high scale
Event loop model helps ensure minimal
memory allocation per request
40. Consulting/Training
Helios is an OWIN-compatible network
server
Helios requires IIS, but does not run in the
context of System.Web*
Helios can run outside of OWIN proper
41. Consulting/Training
Take the good parts of ASP.NET (pluggable
programming models, async, IIS
integration, etc.)
Leave behind the bad parts (System.Web
monolith, weird stuff like 401 302, etc.)
42. Consulting/Training
Borrow liberally from node (async by
default, extension via middleware,
minimal ceremony, etc.)
Still utilizes thread-based concurrency vs.
nodes event loop model
46. Consulting/Training
How to satisfy two core constituencies?
How to foster nodes third-party module
community for Helios?
Nodes appeal: simple, opt-in dev model?
Or is it JS on the server?
Implications for ASP.NET?