Tuesday, March 1, 2011

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

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.

From stackoverflow
  • For me Subsonic is the best BLL.

    Alex Yakunin : 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?
    pho3nix : Subsonic have all components you call BLL.
    Alex Yakunin : Which ones, precisely? Any links?
  • bltoolkit

    Alex Yakunin : Thanks - there are really few nice features. I briefly looked it up - it definitely deserves a closer look.
  • 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.

    Alex Yakunin : 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 & Roles); moreover, there are some security rules, which can be specific to application.
    John Saunders : @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.
    Alex Yakunin : 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.
  • 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.

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

  • 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!

  • Is there any class generator for bltoolkit?

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

0 comments:

Post a Comment