views:

610

answers:

8

I'm looking for a framework to simplify the creation of a website with social networking features and plenty of custom functionality.

I'm quite keen to use an ORM like nHibernate or similar for data access.

Would DotNetNuke be a good choice? Or are there other options which are better.

Added: I'm quite keen not to have to reinvent the wheel for the social network features like secure login, open id, friends etc.

A: 

Dot net Nuke is good if you want a Content Management System. I wouldn't use it if you want a lot of fancy custom development but that is totally my own opinion.

I would definetly use nHibernate good ORM.

JoshBerke
+4  A: 

Depending on what your timeframe for starting is, you should definitely consider ASP.NET MVC. It is a compelling improvement over ASP.NET, and is a spiritual successor to many similar frameworks from the Java space, including Spring/Struts and the like. It's still in beta for now, but has two release candidates so far. Check it out here: http://www.asp.net/mvc/

NHibernate is a good general choice for your ORM; it'll integrate well with almost anything you can think of.

John Feminella
A: 

I can't comment on the web frameworks, but as for data access, LINQ to SQL is super-easy to use, and will allow you to get your DAL setup very quickly. I'm not sure how well it scales, but it allows for really rapid development and more of a code-before-database design methodology.

I've used NHibernate more than LINQ to SQL, and NHibernate is really powerful, but it has a bit of a learning curve.

Andy White
+5  A: 

Try SubSonic as your ORM. It has a lot of features to make any data intensive project easy to manage.

Brownman98
+1  A: 

I totally understand why you want to use NHibernate but please think twice whether you have to. NHibernate is not simple and you will have to maintain multiple things to keep your application running (SQL Server: T-SQL, DAL layer: XML + C#, Presentation layer: C#, JavaScript).

I personally try to limit the number of technologies as much as possible. If I can get without stored procedures then I try eliminate any code in my data layer. You cannot do much in your presentation layer (C# and JavaScript). Therefore I try to see what kind of application I'm building. Are you going to be mainly querying data? If so, then Linq-to-SQL might be the right answer for you. If you need occasionally update some data, then try to take a look at Astoria (ADO.NET Data Services). There was a good article about it in MSDN Magazine recently.

PS: Sometimes I also try PLINQO (requires CodeSmith).

David Pokluda
Agreed on NHibernate not being trivial, but when using NHibernate you *very* seldomly have to use SQL (only for very specific optimization scenarios). DAL: Already done, I usually use Rhino.Commons. Mapping: there's fluent-nhibernate, NHibernate.Mapping.Attributes.
Mauricio Scheffer
+2  A: 

Take a look at the Castle framework.

In a nutshell, it includes:

These frameworks are very modular, they can be used together or independently and any of them can be replaced quite easily (i.e. replacing MonoRail with ASP.NET MVC, ActiveRecord with SubSonic or whatever you need).

I recommend that you grab the latest good build from the build server as the latest official release is somewhat old.

Mauricio Scheffer
A: 

Go with [Subsonic][1], as its a mature platform and why not as feature rich as NHbernate, it does offer new features such as Selects with InnerJoins, Where clauses, Aggregate queries, as well as support for SQL stored procedures should you need SQL to perform operations for you.

Here is an example of a nested query that yields a collection:

ProductCollection products = Select.AllColumnsFrom<Product>()
                .WhereExpression("categoryID").IsEqualTo(5).And("productid").IsGreaterThan(10)
                .OrExpression("categoryID").IsEqualTo(2).And("productID").IsBetweenAnd(2, 5)
                .ExecuteAsCollection<ProductCollection>();
David Robbins
A: 

Mmmmh, If the solution you are looking for leans more to 'configuration' than actual development, you could look at:

Microsoft's Windows SharePoint Services 3.0 (WSS)

Don't laugh ;)

It's a free technology (built using the .Net framework) that allows you to customise/control a 'hive' of sites/sub-sites, their membership and various content management aspects (document libraries etc) out of the box. Many many features such as RSS feeds, galleries, forums can be configured.

It also integrates with Office tools such as MS Word/excel etc (versioning and uploads/downloads).

It is good at collaboration type functions of teams, but could also be used as a CMS system for an internet site if so desired.

For example the authentication model can be custom (your own db) or use AD and can be exposed on the internet.

The sites can be skinned (20 skins out of box) or do your own/download Sharepoint designer skins.

WSS can be further extended using .Net , but you'll need a fair amount of WSS API knowledge if you want to tinker under the hood.

A great little app called SmartPart (http://weblogs.asp.net/jan/archive/2004/06/10/152932.aspx) allows you to integrate your .Net .ascx files directly in a WSS webpart (So you should be able to roll your own custom webparts that integrate into the solution.

Konrad