In Focus

Validation Application Block (Enterprise Library 5.0)

Validation is a process which ensures the sanity of data entered, received or processed by a software module, class or class members.

What is Validation

Validation is a process that ensures the sanity of data entered, received or processed by a software module, class or class members.

Some examples of validation are length check, range check, Null check, date range, specific character and so on.

Consider you have a class with some properties or methods in it that requires a validation for data handled by these methods or properties. For example, in the code shown below assume that you need to validate that the Name property has a name value with a 2 - 5 characters in length and an Age property value must be in the range of 1 - 100.

Validation-Application-Block-1.jpg
In order to validate these two properties we must write validation code in the class itself so before it sets the data for the object, the data is validated as per business rules.

To make the developer community more productive and simply de-couple the validation functionality from the business logic or application code, a Validation Application block can be used.

In order to use a Validation Application block, you must have Enterprise Library 5.0 installed, that can be freely downloaded from the Codeplex site.
 
Why we need to Validate

Correctness

  1. Ensure the system doesn't process invalid data
  2. Enforce business rules
  3. Ensure user input is compatible with internal structures, data schemas and external systems

Responsiveness

  1. Flag invalid data before performing expensive processing tasks

Security

  1. Protect against script injection and other attacks

Procedure for using a Validation Application Block

  1. Create your business objects
  2. Decorate them with validation rules
  3. Validate your data where required
  4. Process or display validation results

Configuring Validation Application Block

  1. Open your Visual Studio project; if an app.config file is not already available, then add it
  2. Open Microsoft Enterprise Library console.
  3. In the Blocks menu, choose the "Add Validation Settings" option and your screen will appear, as shown in the image below:

    Validation-Application-Block-2.jpg

  4. From the loaded screen, click on the "+" button, to add a type we want to validate, this will allow you to add a type, either from the GAC or from a file. We will use a file for our demo purposes here.
  5. Once a type is selected, it will load the DLL and show you the class inside it, navigate through and pick the class that you want to validate. The screen will appear as shown in the image below.

    Validation-Application-Block-3.jpg

  6. Click the "OK" button, and you must observe that the screen will appear as shown in the image below.

    Validation-Application-Block-4.jpg

  7. Now we have the type loaded that we want to validate and now it's time to add the Rules we wish to apply.
  8. As shown in the image above, click on the small icon and click on the "Add Validation Ruleset".

    Validation-Application-Block-5.jpg

  9. The screen will now appear as shown in the image below.

    Validation-Application-Block-6.jpg

  10. Click on the area shown in the image above, that will open the popup, and from there we will choose "Add Property to Validate" as shown in the image below.

    Validation-Application-Block-7.jpg

  11. In the opened window, add the name of the property you wish to validate, as shown in the image below.

    Validation-Application-Block-8.jpg

  12. Now look for the same icon on the top-right corner and it will prompt you for further actions to pick type validation etc. as shown in the image below.

    Validation-Application-Block-9.jpg

  13. Now, click on "Add String Length Validator" and enter the basic required setting for the Validation rule, as shown in the image below.

    Validation-Application-Block-10.jpg

  14. Similarly add validation details for the Age property we have in the class code, and it must appear as:

    Validation-Application-Block-11.jpg

  15. Save this from "File" -> "Save" menu to a .configfile. If you already have one config file in your application then browse to that location when saving, otherwise you can create a new one and add that to your project.  After properly performing Steps 1 through 15 that are quite intuitive, you will have a config file as shown below.

    Validation-Application-Block-12.jpg

Consuming Validation Application Block with Client Application

After adding the .config into the client application, you only need to write some code to tie the validation logic in the .config with the calls happening via the object to the class properties.

Validation-Application-Block-13.jpg
This code will ensure that Name is at-least 2-5 characters long and Age is between 1 and 100.

Test run the application and enter data as I have shown in the image below, that will Pass the validation.

Validation-Application-Block-14.jpg

But if you try entering data that doesn't pass through the validation then the error message will be displayed that we configured in the config file.

Validation-Application-Block-15.jpg

Conclusion

Validation is a mandate for all kinds of applications, and a Validation Application Block is one of the finest ways of implementing it without much coding efforts required in the business class.