NEO Strength and Weakness. A Year After.

1.5 years ago I’ve posted about NEO. NEO is .NET based O/R Mapping Framework. It is interesting what was changed in NEO since 2005. In general, not so much. Almost all old problems are there and very few (but handy) improvements have been introduced.

Weakness

  • Not so great performance for complex domain models. Maybe it is a common problem for all O/R mappers, but I think NEO lacks some features that help to speed up things, like aggregates, paging and cache.
  • No way to create things like paging with one query. In fact NEO forces you to write most logic in the domain model, which may be good for one, but not good for another. With NEO you have no choice.
  • Intrusive ObjectContext spreads through all application layers, so migration to other persistence mechanism is hard. I think this problem may be resolved, but I don’t know how at the moment.
  • Still no inheritance… That hurts.
  • annoying problem with TEXT field for SQL Server (does not work out of the box, can be fixed in NEO code though)
  • Slow development. NEO progress is quite slow, I understand that it is an open source, but NHibernate is incomparable with NEO.

Strength (new during last 1.5 years)

  • ‘Spans’ feature helps hit database less often (very useful!). It allows select related entities in a single query. For example, you have a list of projects and each project has several releases. With spans you may retrieve all projects with releases in a single query with sub-select.
  • MySQL support

As you see, with years NEO becomes better, but very slowly and can’t compete with major frameworks like NHibernate.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s