3

I'm working with a multitier SOA based enterprise application with every complex business logics. Many business validations require large amount of support data from database, which slow down the performance. The number of concurrent users are about 1000. The client is multitier with WinForms on top.

We are considering almost all the enterprise library blocks.

  • Caching Application Block
  • Data Access Application Block
  • Exception Handling Application Block
  • Logging Application Block
  • Policy Injection Application Block
  • Security Application Block
  • Unity Application Block
  • Validation Application Block

    1. Is enterprise library right way to go?
    2. Please suggest libraries/frameworks that are better in your opinion, but consider telling way they are better.
    3. Would it be bad practice to mix enterprise library with other libraries? For example we consider using log4net for logging.
Amir Rezaei
  • 4,948
  • 6
  • 33
  • 49
  • See http://stackoverflow.com/questions/53065/enterprise-library-application-blocks-or-home-grown-framework, http://stackoverflow.com/questions/118047/log4net-vs-enterprise-library-which-is-better-faster, and, in general, http://stackoverflow.com/questions/tagged/enterprise-library?page=10&sort=newest&pagesize=50 – John Saunders Nov 22 '10 at 23:55
  • possible duplicate of [Advantages and disadvantages of using Enterprise Library](http://stackoverflow.com/questions/241054/advantages-and-disadvantages-of-using-enterprise-library) – John Saunders Nov 22 '10 at 23:55

2 Answers2

5

In my opinion, there are better tools for most everything the Enterprise Library does.

  • Data Access Block

    I'll admit it has been a couple years since I worked with EntLib on a project, but as I recall the Data block was very limited in what it offered. Full featured ORM's like NHibernate or Entity Framework, or even query tools like SubSonic offer far more. Every project I work on that doesn't use NHibernate, I end up implementing features that I would get "free in the box" with NHib.

  • Caching Application Block

    Using an ORM with caching would cover most everything the caching block does.

  • Exception Handling Block

    There's some good ideas starting here, but the concept can be greatly improved upon. Rinat Abdullin has some good starting info on leveraging action policies for exception handling.

  • Logging Application Block

    Use NLog or log4net. Period. If you need a facade, use Simple Logging Facade or Common.Logging. Logging is a very limited a well defined component. The frameworks are nearly identical and stable. No need overcomplicating this.

  • Policy Injection & Unity Blocks

    Research DI/IoC and pick one. Can't hardly go wrong. Here's a good list of one's to consider.

  • Security & Validation Blocks

    At this point, we've found better options for so much of the EntLib, that bringing it in as a dependency to support Security or Validation feels to heavy. Again, there's plenty of other tools to assist with Security (Rhino Security) and Validation (xVal, Lokad)

Community
  • 1
  • 1
quentin-starin
  • 26,121
  • 7
  • 68
  • 86
  • I agree that the Valiation Application Block (VAB) is very 'heavy' as you call it. In basis it is not that hard to grasp, but when you want to do a little more, it gets complicated soon. VAB however, enables many scenario's that simply aren't possible with other validation frameworks (such as configuration based validation, differentiating between errors and warnings by using rulesets, etc). It is the most flexible and extendable validation framework I know. This flexibility comes at the price of complexity. It completely depends on your requirements whether VAB fits your project. – Steven Nov 06 '10 at 09:28
3

I've used (an older version of) the Enterprise Libraries for a while and had no problems.

I think there's definitely an advantage using a cohesive set of libraries rather than piecing together a patch-work of libraries (if you were going to be using a lot).

I've found the logging block to be really good - it's highly configurable, and if you use it well you'll be able to log comprehensively and with great flexibility.

Adrian K
  • 9,880
  • 3
  • 33
  • 59