Introduction
In my current job task, I must find a good base framework for developing an Enterprise Solution. Never before have I tried to work on this kind of project. I wanted to find a framework that offers some functionality such as MVC Model, Layer Abstraction and GUI facilities, so I can reduce development time.
Background
In this project, we have a lot of services already built, and the major objective we have is to integrate existent services with custom development. In detail, we have some webservices and databases, and we want to develop a new WebUi that can communicate with them. The new WebUi must be user-friendly and easy to use for the final user. Ideally we also want a set of controls that can make some functions for us. The tools and framework visited during my search are:
- ASP.NET 3.5 MVC Framework
- Castle Project - Mono Rail
- Spring.Net
- DotNetNuke
- Iron Speed
- ASP.NET Maker
- Code Smith
ASP.NET 3.5 MVC Framework
On October 6, 2007, Scott Guthrie officially unveiled the ASP.NET MVC Framework at the AltNetConf in Austin, TX. While you'll find several MVC frameworks in the Java space, ASP.NET has provided Web Forms as the default model. For .NET developers, MonoRail (discuss later), to date, has been the only MVC alternative to Web applications. But what is MVC? Mode-View-Controller is a mature, proven architecture for the presentation layer. It’s applicable in fat client applications as well as Web applications. When applied to Web applications, the twist is that the controller lives for a single HTTP request and then goes away. But what’s wrong with Web Forms? Many developers agree that the Postback and ViewState model employed by Web Forms causes pain and heartache. With event handlers and the page lifecycle, the developer falls into managing state with ViewState and Postbacks, and when employed in the reality of the stateless Web, the model becomes fragile and has problems scaling with complexity.
Castle Project - Mono Rail
Castle is a collection of projects that includes database access layers (using NHibernate to power an ActiveRecord implementation), templating engines (of which NVelocity and Brail are but two examples), and a series of other services geared to rapid application development. MonoRail, 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.
Pros | Cons |
- Is MVC compliant
- Is integrated in Visual Studio IDE
- Uses NHibernate as ORM Layer
- Great variety of View Engine
|
- It is in RC3 status
- View engine is easy to use but devoid of functions
- Is not possible and/or complex to use existent ASP.NET controls such as
GridView , FormView , etc…
|
Spring.NET
Spring.NET is an open source application framework that makes building enterprise .NET applications easier. Providing components based on proven design patterns that can be integrated into all tiers of your application architecture, Spring helps increase development productivity and improve application quality and performance.
Pros | Cons |
- It is in stable release 1.1
- Use NHibernate as ORM Layer
- Data binding, validation and localization
|
- Complex to configure and setup
|
DotNetNuke
DotNetNuke is an open source web application framework written in VB.NET for the ASP.NET Framework. The application's content management system is extensible and customizable through the use of skins and modules.
Pros | Cons |
- It is in stable release 4.8
- Data binding, validation and localization
- Easy to use and MVC compliant
|
- Store all non relevant information such as Pages in Database.
- Is oriented to CMS use
|
IronSpeed
Iron Speed Designer is a Rapid Application Development (RAD) tool developed by
Iron Speed Inc.
Pros | Cons |
- It is in stable release 5.0
- Data binding, validation and localization
- Quickly and efficient on CRUD operations
|
- Pages with custom logic are difficult to manage.
|
ASP.NET Maker
ASP.NET Maker 3 is a powerful yet easy-to-use ASP.NET code generator for ASP.NET 2.0. It can create a full set of ASP.NET 2.0 pages quickly from Microsoft Access, Microsoft SQL Server, MySQL, Oracle and other ODBC data sources. You can instantly create Web sites that allow users to view, edit, search, add and delete records on the Web.
ASP.NET Maker 3 offers numerous useful features, including 3-Tier Architecture, ASP.NET AJAX, Extended Quick Search, Drill-down Master/Detail, Advanced Security, User Registration System, Custom View, Report, Export, File uploading, etc. It is a tool that can save you tons of time and is suitable for both beginners and experienced developers alike.
Pros | Cons |
- It is in stable release 3.3
- Data binding and validation
- Quick and efficient on CRUD operations
- Generates native ASPX controls
|
- Pages with custom logic are difficult to manage
- With GUID type as PK require some changes
- Not simple to customize the GUI
|
CodeSmith
CodeSmith is a software development tool to help you get your job done faster. Technically speaking, it is a template driven code generator that automates the creation of common application code for any language (C#, Java, VB, PHP, ASP.NET, SQL, etc.).
CodeSmith includes many useful templates as well as entire sets of templates for generating proven architectures (.netTiers, CSLA, NHibernate, PLINQO, Wilson's ORMapper, APOSA, and more). You can easily modify any templates or write your own to generate your code exactly the way you want it.
CodeSmith can help you produce higher-quality, more consistent code in less.
NetTiers Template
.netTiers is a set of open source code generation templates that simplify the tasks of creating customized Application Tiers for your Microsoft.NET applications in just a few minutes and is FREE.
Pros | Cons |
- It is in stable release 2.2
- Generates a reusable code
- Generates code from template
- Generates native ASPX controls
- Quick and efficient on CRUD operations
|
- High customization of template
|
Conclusion
Making a good choice of frameworks shown is very difficult.
The better choice is the framework that better maps your problem and resolves it. Some frameworks propend GUI facilities, others Abstracting Layer, yet others then for DI.
Bibliography