What is most popular .NET WEB Frameworks? Web frameworks for .NET - some confusion around the difference between WebForms, ASP.NET MVC, FubuMVC, ASP.NET. Basic explanations of these frameworks, what the intended audience is for each, and what the strengths and weaknesses are of this Frameworks. This is not an exhaustive list. It does not include all the frameworks that are out there. There are many good ones for .NET each with their own particular take on the matter in behalf what you need. If you’re shopping for a framework, please do your research and only consider this post as one of many resources.
FubuMVC is another framework built on top of ASP.NET and sits at the same level (“competes” with if you will) Web Forms, MonoRail, and ASP.NET MVC. Fubu is an acronym which means "For us, by us." After using the Microsoft ASP.NET MVC Beta framework and disagreeing with some of the design choices made therein, several of us decided to try to bend it to our design choices using its extensibility points. Eventually we reached our goal, but we realized we had overrode or replaced large portions of the MVC framework. At this point, it was suggested that maybe we take it one step further and write our own MVC framework starting at the same layer where ASP.NET MVC begins. This is the realization of that suggestion. FubuMVC was originally designed in response to the perceived issues (identified in the preceding section) with ASP.NET MVC. The original designers felt that ASP.NET MVC was good, but didn’t go far enough in certain areas to be truly great. FubuMVC uses various view engines like ASP.NET MVC and MonoRail. Currently FubuMVC supports Spark and Web Forms view engines and a Razor engine is being considered. FubuMVC’s strengths include being more IoC/DI and SOLID friendly than ASP.NET MVC. It’s more compositional (versus inheritance-based) which allows for greater freedom for the developer. FubuMVC also has greater support for conventional development saving developers a lot of time in both development and testing by standardizing the aspects of their application that are similar. FubuMVC’s weaknesses include the same approachability issue that MonoRail and ASP.NET MVC, but I would say FubuMVC fairs worst in this regard. FubuMVC is designed for advanced, experienced developers. FubuMVC also has a sore lack of documentation and guides at the moment. FubuMVC is also not as comprehensive as ASP.NET MVC and MonoRail. In some respects, FubuMVC has more functionality, but in (many) other respects it still has a ways to go. Though FubuMVC has a small development team currently, but is gaining ground steadily and growing. FubuMVC is open source (contributions welcome). It is under active development.
OpenRasta is an open source framework. OpenRasta is a development framework targeting the Microsoft .NET platform for building web-based applications and services, and distributed under an Open-Source MIT License.
Their doc page explains it best when it says, “OpenRasta is a resource-oriented framework for .NET enabling easy ReST-ful development of web sites and services.” OpenRasta however does have many MVC features and can serve as a full-fledge web application framework (i.e. it’s not *just* a REST framework). OpenRasta’s strengths lie in it’s comprehensiveness, wide range of features, active development and support community plus good documentation. OpenRasta’s weaknesses are similar to other frameworks in that is not as approachable as Web Forms and is intended for experienced developers. Also in the interest of full disclosure, like MonoRail, I don’t have a lot of personal experience with OpenRasta and so I cannot effectively discuss it’s strengths and weaknesses. Please investigate for yourself and engage the OpenRasta community for more information. Hosting of an application built on OpenRasta is available through ASP.NET, in-memory, in-process through Windows' HTTP APIs, or through any other environment able to receive HTTP requests, as the framework itself has no dependency on ASP.NET.
Castle MonoRail is an open source framework that was built, in large part, due to frustrations that web developers in .NET experienced with Web Forms – especially after having worked with several non-.NET frameworks and seeing how much easier many tasks were to perform. MonoRail is still actively maintained and there are many production deployments using it as the core web framework. MonoRail can use various “view engines” including the “Web Forms” view engine, Brail, NVelocity, and others. Its strengths are that it is a comprehensive framework, it fits well within the whole Castle family of projects, and allows for much more freedom than Web Forms. It’s weaknesses include being fairly different from other forms of ASP.NET-based development (which some might consider a strength, so weigh this for your own team), and it has heavy dependence upon other Castle frameworks (which may not be an issue for all teams, but for some it is). In the interest of full disclosure, I admit that I don’t personally have a lot of experience with MonoRail so I cannot effectively discuss it’s strengths and weaknesses. I know that many colleagues, whom I respect, use MonoRail with great effectiveness. So it is a serious contender and worthy of investigation if you are shopping for a web framework. MonoRail is open source (contributions welcome). It is under active development. MonoRail (formerly called Castle on Rails), a component of the Castle Project, is an open source web application framework built on top of the ASP.NET platform. Inspired by Ruby on Rails Action Pack, MonoRail differs from standard ASP.NET WebForms development by enforcing separation of concerns using a model-view-controller (MVC) architecture. The framework is commonly used in conjunction with Castle ActiveRecord, an ORM layer built on NHibernate. On January 2010, version 2.0 of Monorail was released, however, many projects use the trunk version of the source to leverage new features without waiting for official releases.
ASP.NET is more of a foundational framework. I wouldn’t recommend developing a whole app directly against ASP.NET itself. All the frameworks mentioned below are built on TOP of ASP.NET and provide greater convenience and accelerators for making web development easier. While it is possible to build an entire web application directly using ASP.NET HttpModules and HttpHandlers, I wouldn’t recommend it. It’s somewhat similar to doing Assembly language programming, but for the web. Knowing and being familiar with the libraries, services, and facilities that ASP.NET provides is critical for doing development with any of the frameworks mentioned below. So I highly recommend that you study ASP.NET, read documentation, examples, articles, and books on the subject. ASP.NET is a free web framework that enables great Web applications. Used by millions of developers, it runs some of the biggest sites in the world.
ASP.NET Web Forms
ASP.NET Web Forms was developed at the same time as ASP.NET and was meant to be the primary framework for developers moving from VB6 and ASP (VBScript/JScript) development to the .NET framework. Web Forms was intended to make web programming a familiar experience for VB6 developers who were used to Windows application event-driven development (i.e. Button1_Click events) and who were used to building user interfaces on designer surfaces by dragging and dropping controls. Web Forms has some strengths in that it’s been around for awhile, it’s fairly comprehensive, and it’s approachable for many developers. While you might at first thing that this is a strength, Web Forms’ greatest weakness is that it too abstracts the developer from the underlying realities of stateless HTTP-based web development. Web Forms are the heart and soul of ASP.NET. Web Forms are the User Interface (UI) elements that give your Web applications their look and feel. Web Forms are similar to Windows Forms in that they provide properties, methods, and events for the controls that are placed onto them. However, these UI elements render themselves in the appropriate markup language required by the request, e.g. HTML. If you use Microsoft Visual Studio® .NET, you will also get the familiar drag-and-drop interface used to create your UI for your Web application.
Many critical aspects of web development are managed for the developer (sometimes in sub-optimal ways) leaving the web developer into problems when trying to anything outside of the normal Web Forms development path. Web Forms has its place (for example, in small IT shops where the developer isn’t a full-time developer and just needs to quickly assemble a forms-over-data application). For any serious web development effort, however, I would consider the friction and hand-tying effects of Web Forms too great to bear and so therefore I don’t recommend Web Forms for most development scenarios for .NET. ASP.NET Web Forms is commercial closed-source, built by Microsoft and is still under active development. However, development has slowed recently in favor of the newer ASP.NET MVC framework. ASP.NET is a web application framework developed and marketed by Microsoft to allow programmers to build dynamic web sites, web applications and web services. It was first released in January 2002 with version 1.0 of the .NET Framework, and is the successor to Microsoft's Active Server Pages (ASP) technology. ASP.NET is built on the Common Language Runtime (CLR), allowing programmers to write ASP.NET code using any supported .NET language. The ASP.NET SOAP extension framework allows ASP.NET components to process SOAP messages.
ASP.NET MVC is another framework built on TOP of ASP.NET (but not on top of Web Forms – MVC is parallel to Web Forms). ASP.NET MVC was developed by Microsoft in response to complaints of .NET web-based developers who complained about design problems with Web Forms. While you can mix Web Forms and MVC development in the same project, I wouldn’t recommend it unless there was a specific need to do it. MVC does away with the cumbersome “Page Control Lifecycle” of Web Forms and provides a much more stream-lined approach to web development. MVC is much closer to the inherent stateless request/response nature of HTTP and so therefore makes it much easier for experienced web developers (and even inexperienced ones) to develop complex web applications. MVC is less focused on designer-based drag-and-drop programming and more on code-centric programming. There sometimes is confusion about the difference between ASP.NET MVC and Web Forms because MVC can use *some* parts of Web Forms for presentation. This is known as the “Web Forms View Engine”. There are also other view engines for ASP.NET MVC including Spark and Razor.
The ASP.NET MVC Framework is a web application framework that implements the model-view-controller pattern. Based on ASP.NET, it allows software developers to build a Web application as a composition of three roles: Model, View and Controller. A model represents the state of a particular aspect of the application. Frequently, a model maps to a database table with the entries in the table representing the state of the application. A controller handles interactions and updates the model to reflect a change in state of the application, and then passes information to the view. A view accepts necessary information from the controller and renders a user interface to display that.
This allows you to use ASPX and ASCX files and some runat=”server” controls in your views, but without having to have code-behind files and Page Control Lifecycle event handling. MVC’s strengths are similar to MonoRail in that it’s fairly comprehensive, and allows a lot more freedom of development and puts the developer back in touch with the fundamentals of web/HTTP programming. It is well documented and has many guides and a great user community around it. It shares the same weakness as MonoRail in that MVC is less approachable for less experienced developers. For more experienced, advanced developers, certain design aspects of MVC can be cumbersome (such as the use of too much inheritance, problematic support for dependency injection and IoC tooling, and too much friction when writing unit tests). These weaknesses are not critical, however, and many good developers are using ASP.NET MVC quite effectively. ASP.NET MVC is a good contender if you’re investigating frameworks and definitely worth some time to spike out some examples. ASP.NET MVC is commercial open-source (contributions are not accepted, but you can view the source). It is currently in active development by Microsoft and is on its 3rd version.