tags:

views:

837

answers:

7

What is your favorite Business Logic Layer (BLL) development toolkit? Are there any at all?

BLL toolkit is a set of classes (controls, VS.NET add-ins) handling typical business logic scenarios. E.g. implementing access control, providing validation and so on. Of course, IMHO.

A: 

For me Subsonic is the best BLL.

pho3nix
I've just looked up their API reference at subsonichelp.com, and found nothing related to BLL. It seems this is purely ORM. Are there any BLL helpers?
Alex Yakunin
Subsonic have all components you call BLL.
pho3nix
Which ones, precisely? Any links?
Alex Yakunin
+7  A: 

bltoolkit

Adinochestva
Thanks - there are really few nice features. I briefly looked it up - it definitely deserves a closer look.
Alex Yakunin
+3  A: 

I'm curious about what you consider a BLL. Both the examples you've given, Access Control and Validation, are things I've typically seen implemented elsewhere.

I've seen these implemented either in the presentation layer or in a service layer common to, say, web services and web ui. I can see a BLL using an access control subsystem, but not that access control is part of a BLL. Do you have any examples of that?

Same with validation, depending on what you mean by "validation". Do you mean, "this business object passes all business that it's meant to pass, given its current state?" Or were you referring to UI-style validation, making sure alphabetic characters are not input into a numeric field?

You also mention controls, which are usually thought of as UI artifacts. Could you please give more detail about what you consider a BLL to be? I'd also appreciate any links to examples of what you consider to be a BLL.


Based on your clarifications, I'd point you to the Enterprise Library from Microsoft's patterns and practices group. Some of its components are:

  • Caching
  • Cryptography
  • Data Access
  • Exception Handling
  • Logging
  • Policy Injection
  • Security
  • Unity - Dependency Injection
  • Validation

It's all available on CodePlex in both source and binary formats. The source code comes complete with thorough unit tests.

John Saunders
Concerning validation: I mean validation framework that can be used to simplify implementation of validation in BLL. Ideally, I'd prefer to define most of validation rules declaratively, e.g. using attributes.
Alex Yakunin
Concerning access control: well, it's just an example of typical task. I consider it's a part of BLL, since logic there usually utilizes Domain Model objects (e.g. Users moreover, there are some security rules, which can be specific to application.
Alex Yakunin
@Alex: both of these cases are cross-application concerns. They may _use_ the BLL, but they are not in it. For instance, declarative validation may very well be done with rules that reference business layer objects; but the rules engine is not part of the BLL.
John Saunders
John, on contrary, they're used by BLL. They are invoked by it, interact with it and so on. Thanks for the update - EL is really a good example. I'll be waiting for others ;)
Alex Yakunin
Concerning "not a part of BLL" - well, I suspect it will be quite difficult to judge about this. Obviously, lots of BLL aspects (I admit, almost any) can be abstracted, implemented externally and injected to "true BLL". But does this imply all these components aren't "a part of BLL"? I don't think so.
Alex Yakunin
Anyway, now it's much more clear what I'm looking for ;) - thanks for helping with clarifying this.
Alex Yakunin
+5  A: 

I personally prefer to have BLL integrated with ORM, because I don't see any reason have them separated. Classical example with unit-testing is not solid argument, since I'd like to test my business logic with queries (as for me they are essential part of business logic). On other hand I am not sure which features business logic toolkit must include, may be I miss something.

p.s. I use DataObjects.Net as ORM and obviously as BLL development toolkit.

Alex Kofman
+1  A: 

Take a look at CSLA! It helps you to bring structure into your bo-hierarchy.

+1  A: 

I point you to ECO. It is mature and have reached version 5. It is also free for unlimited use up to 12 classes in the model. Recommended!

Roland Bengtsson
A: 

Is there any class generator for bltoolkit?

Sami Beyoglu
I think it's better to ask this as a separate question.
Alex Yakunin