In our product, some clients require customizations that may even regard  
validation. For instance a client wants to validate name and productcode  
for a product, another wants just the name. To be able to do this kind of  
customizations, we use the Windsor Ioc container and our business services  
are injected with the custom validators:

public class ProductBusinessService
{
        public ProductBusinessService(ProductValidationService validator)
       {
                this.validator= validator;
       }

        ...

       public void Save(Product p)
       {
        validator.Validate(p);
       p.Save();
        }
}

Our validation service, is a rewrite of  
ActiveRecordValidationBase.CollectValidators, that does collect the  
validators from the persistent class, but can also have others added to it:

public Product:ActiveRecordBase
{
[Property,ValidateNotEmpty]
public string Name
{
  get...
  set...
}
[Property]
public string ProductCode
{
  get...
  set...
}
}


and for the two clients:

Client1:

public class ProductValidationService:BaseValidationService
{
    public ProductValidationService()
    {
    }
}

Client 2:

public class ProductValidationService:BaseValidationService
{
    public ProductValidationService()
    {
        this.AddValidator(new NotEmpty("ProductCode"));
    }
}

That is what we did faced with the problem presented above, where the  
validators in the model weren't enough.

Thanks,
Dan Bunea
http://danbunea.blogspot.com




On Thu, 15 Jun 2006 15:40:20 +0400, Craig Neuwirt <[EMAIL PROTECTED]>  
wrote:

> I know AR promotes validation within the model.  If you don't use AR, do  
> you
> usually still put validation in your models or directly in the Business
> services or create a separate validation service.  Just curous
>
>
> On 6/12/06, hammett <[EMAIL PROTECTED]> wrote:
>>
>> Clarifying:
>>
>> - with or without AR I create a DA layer.
>> - I usually work with models. If I'm using AR then AR entities are my
>> models. I just don't like invoking FindAll, or Create on the
>> presentation layer, instead I use a service layer that is aware of
>> business rules and its implications, so if later I have to add some
>> logic say, everytime a Customer is created, I just need to change one
>> place
>> - The only time I've used a dataset was to process some reports, where
>> the columns and aggregated columns were somewhat dinamically, and
>> more, the report was generated by a windows service to be viewed
>> later. For that situation only, DS was perfect. :-)
>>
>> On 6/12/06, Craig Neuwirt <[EMAIL PROTECTED]> wrote:
>> >
>> > One last ? on this thread.  If you know you are not going to use AR,
>> would
>> > you still create your Domain Model as AR Entities, or just pass POCO  
>> (or
>> a
>> > DataSet) to your DA Layer.
>> >
>> > thanks for your feedback
>> >
>> >
>> > On 6/12/06, hammett <[EMAIL PROTECTED]> wrote:
>> > >
>> > Yep.
>> >
>> > On 6/12/06, Craig Neuwirt <[EMAIL PROTECTED]> wrote:
>> > > Gotcha!,  but you do pass the AR objects to your DA layer interface.
>> >
>> > --
>> > Cheers,
>> > hammett
>> > http://hammett.castleproject.org/
>> >
>> >
>> > _______________________________________________
>> >
>> > CastleProject-users mailing list
>> > [email protected]
>> > https://lists.sourceforge.net/lists/listinfo/castleproject-users
>> >
>> >
>> >
>> >
>> > _______________________________________________
>> > CastleProject-users mailing list
>> > [email protected]
>> > https://lists.sourceforge.net/lists/listinfo/castleproject-users
>> >
>> >
>> >
>>
>>
>> --
>> Cheers,
>> hammett
>> http://hammett.castleproject.org/
>>
>>
>> _______________________________________________
>> CastleProject-users mailing list
>> [email protected]
>> https://lists.sourceforge.net/lists/listinfo/castleproject-users
>>



-- 

Dan Bunea
http://danbunea.blogspot.com


_______________________________________________
CastleProject-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/castleproject-users

Reply via email to