tags:

views:

121

answers:

4

OK, I was just gathering some experience from Gurus in this post. I am still a student and an Intermediate as well.

Now the question is, what ORM and Business Objects framework should I choose from off-the-shelf products available today(like LINQ, Entity Framework, CSLA.net, Spring.net, NHibernate, Enterprise Lib) and why?

Should I go for Open-Source or Proprietary?

Note : I am trying to learn one/more ORM and Business Objects Framework(s) for my future career.

+6  A: 

If you are still a beginner and learning .net then I suggest you do everything yourself until you've mastered the basics. Later on learn about the different frameworks, test them in a couple of projects so you can get find out the good and the bad things about each of them.

ZippyV
+1; learn the BCL's and build up--nothing worse than a green developer who doesn't know how to swing a hammer, except for the green developer who thinks a jack-hammer is the better tool for driving nails.
STW
+2  A: 

I guess it depends to a large extent what the purpose of using these technologies and frameworks would be.

I've seen LINQ and NHibernate work really nicely together, with NHibernate providing the abstraction from the database, and LINQ being used to represent the business/query logic.

And spring.net is useful if you need to do dependancy injection.

If you're just starting out with .Net though, I'd suggest getting to grips with it's basic libraries first, and understanding how you can interact with a database or datastore without additional external frameworks.

Stark
+2  A: 

just pick one and focus on it...

For a career, the framework doesn't matter as much as the ability to pick up the fundamentals. It seems you may be getting a little ahead of yourself. First you need to learn the basics that pretty much every OO language uses. Things like encapsulation, recursion, etc. There are some language specific implementations of the basics so just pick one, learn the fundamentals and then expand.

Badfish
+2  A: 

JMSA,

As already specified within the answeres you've received, different frameworks address different reality solutions.

Thus, I understand your curiosity. As said by Johnny D., Linq isn't a Framework, but a .net subset technology. You may work with it even though you're not using any of the other frameworks you mentionned.

OpenSource or Proprietary? As far as I'm concerned, I prefer OpenSource. There are so many people who contributes to these projects worldwide, that you may have the support required by whoever else uses the same OpenSource product as you do. Proprietary products cost! In anyway, the best way to go is to understand how a framework works so that you may use it at its fullest. Depending on your employer, some prefer OpenSource and others prefer proprietary.

What framework to choose? That is a good question for the skill you say you are.

In my humble point of view, I really like Microsoft Enterprise Library which is an OpenSource framework for whatever the project you're working on. For example, most of the programs you'll write will require a Database connection or so. Enterprise Library, through its DAAB (Data Access Application Block) provides a set of tools out of the box which will allow you to build multi-database systems without to change or recompile your code, but simply by configuration. Enterprise Library has been asked to Microsoft to maintain by such companies as IBM, HP and some other big companies that we might even ignore the existence. So, when it comes to connect to a database, I am using Enterrise Library. I even built my own Framework based on it to even ease the process of connecting to a database without having to worry about the syntax.

As for NHibernate, as you mentionned it, this is an integration framework to help you map your logical objects to your relational data tables within your database. Such frameworks as Entity Framework does the same. Except that Entity Framework, as far as I know, stands ONLY for SQL Server. If you're developping a system for an Oracle database, Entity Framework will not provide you the tools you need, unless I ignore a further support for a larger range of database engines. The advantage of NHibernate is that this is compatible with near any database engines in the world. I even know that NHibernate allows to write your code solely in object-oriented programming, and when it's time to persist your objects, NHibernate may create itself the database schema for your proper database engine without having to write a DSL (Data Structure Language) statement!

I talk for myself when I say I prefer using NHibernate along with Enterprise Library, both OpenSource products.

Hope this helps and light you up a little. But first, master the basics of Object-Oriented Programming, otherwise you'll have a hard-time trying to learn to use these tools.

Take care! :-)

Will Marcouiller