.Net BluePrint wiki
Presentation layer frameworks
Framework: ASP.NET MVC
It is the web framework of our choice. WebForms will be used in specific cases when it speeds up a feature development, and no (or little) complexity overhead involved.
JavaScript libraries
We think that a combination of the following frameworks will best serve our goals:
- Prototype as the basic JS library for coding.
- JQuery for UI manipulations.
- Dojo for widgets
- Scriptaculuos for effects.
- Silverlight - Should be used from version 4 and above (currently Beta), when fat client on the web is required, while considering its limitations - SEO unfriendly, and small install base.
Frameworks we don't recommend
We will not recommend the following:
- WebForms as the main web framework.
- MS Ajax
- Silverlight 3 and below
Data access frameworks
ADO.Net
- Is outdated and cumbersome
- Can be recommend it only for tiny projects with weak developers not able to master new and more sophisticated technologies.
- So the modern approach to Data Access is ORM (Object-Relational Mapping)
Entity Framework
- easy for beginner
- GUI builder and drag-and-drop generators in Visual Studio
- positive experience on using it with small well-structured database
- bad feedbacks on using this ORM on big tables, which were not designed from scratch: bad database layout is automatically copied into code
- limited customization
- significantly slower than LINQ or NHibernate
LINQ
- not easy for beginner, requires understanding of advanced C# language features
- is suitable also for non-relational data access (XML for example)
- drag and drop and intellisense supported for existing database
- other database support may be limited (mysql, etc)
NHibernate
- excellent support of different DB vendors, with no or little changes in code
- can be used when DB still does not exist and auto-generate database according to code
- powerful customization abilities - when existing DB schema is messy, classes still can be created in a clean way
- performance - faster than LINQ in write, slower in read
- good community, sometimes better than MS support according to feedbacks
- easier to understand than LINQ, but no built-in VS support
- very familiar for developers with Java background
Business Logic frameworks: Dependency Injection
Ninject
Lightweight, fast tool, focuses only on Inversion of Control & Dependency Injection
Recommended when Dependency Injection is required, won’t supply any other services
- Lightweight, won’t bloat your project with its code
- Focuses only on Dependency Injection, thus very fast
- Requires referencing Ninject.Core everywhere in your code to add [inject] attributes
- Uses type binding in code (i.e. references and not configuration files) , thus, binding cannot be altered after the application is compiled.
Unity Application Block
Part of MS Patterns & Practices, a lightweight extensible Dependency Injector
- Open source
- Part of EntLib
- Seems to rely too much on XML Configuration
Spring.NET
Inversion of Control & Dependency Injection are only a part of the deal. Spring.NET covers many more areas, such as AOP, Unit Testing, Data Access (Spring.NHibernate), Web services and Web Extensions.
Heavy, everything included – use when you need more than just Dependency Injection
- Familiar to Java Converts
- Clean (if you are used to) Syntax for Wiring
- Many out-of-the-box components
- Wasn’t invented at Microsoft
- Can look like magic at the beginning
- Now has MS proprietary competitor (MEF)
- Configuration intensive – lots of XML
