<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Validation Application Block: Revealed!</title><link>http://blogs.msdn.com/tomholl/archive/2006/11/27/validation-application-block-revealed.aspx</link><description>I'm sitting at home, still slowly digesting turkey, watching the snow fall outside the window, and trying to deal with the prospect of the imminent full work week. But while the 4 day weekend has definitely been a welcome break, the next week should actually</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Coming Soon - Validation Application Block</title><link>http://blogs.msdn.com/tomholl/archive/2006/11/27/validation-application-block-revealed.aspx#1161137</link><pubDate>Mon, 27 Nov 2006 23:48:03 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1161137</guid><dc:creator>Guy Burstein's Blog</dc:creator><description>&lt;p&gt;As mentioned before , the Patterns and Practices teams has already started working on Enterprise Library&lt;/p&gt;
</description></item><item><title>re: Validation Application Block: Revealed!</title><link>http://blogs.msdn.com/tomholl/archive/2006/11/27/validation-application-block-revealed.aspx#1161175</link><pubDate>Mon, 27 Nov 2006 23:59:10 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1161175</guid><dc:creator>Luis</dc:creator><description>&lt;p&gt;Tom,&lt;/p&gt;
&lt;p&gt;Can this application block validate the parameters in a method using attributes, for example in a service, without defining a match with a field or a property?&lt;/p&gt;
&lt;p&gt;Thank you.&lt;/p&gt;
</description></item><item><title>re: Validation Application Block: Revealed!</title><link>http://blogs.msdn.com/tomholl/archive/2006/11/27/validation-application-block-revealed.aspx#1161179</link><pubDate>Tue, 28 Nov 2006 00:00:15 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1161179</guid><dc:creator>kris kilton</dc:creator><description>&lt;p&gt;Is this designed to fit in or replace a rules engine?&lt;/p&gt;
</description></item><item><title>re: Validation Application Block: Revealed!</title><link>http://blogs.msdn.com/tomholl/archive/2006/11/27/validation-application-block-revealed.aspx#1161254</link><pubDate>Tue, 28 Nov 2006 00:15:33 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1161254</guid><dc:creator>tomholl</dc:creator><description>&lt;p&gt;Luis - we haven't built anything like this yet, but it could be an interesting scenario for the WCF adapter. Would you be able to provide some more details on the usage scenario for this? If it's too big for a comment, feel free to mail me directly (tom.hollander at microsoft.com).&lt;/p&gt;
&lt;p&gt;Kris - No this isn't designed to be a fully-fledged rules engine. For example, each validator will only return true or false - there's no way for the validation engine to calculate values or choose from alternative branch paths. However it should be easy (and useful) to call the Validation Application Block from within a rules engine such as WF or BizTalk.&lt;/p&gt;
&lt;p&gt;Tom&lt;/p&gt;
</description></item><item><title>re: Validation Application Block: Revealed!</title><link>http://blogs.msdn.com/tomholl/archive/2006/11/27/validation-application-block-revealed.aspx#1161323</link><pubDate>Tue, 28 Nov 2006 00:25:07 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1161323</guid><dc:creator>don mai</dc:creator><description>&lt;p&gt;Can this application block flag SQL/LDAP injection strings?&lt;/p&gt;
</description></item><item><title>Enterprise Library v3 : Validation Application Block</title><link>http://blogs.msdn.com/tomholl/archive/2006/11/27/validation-application-block-revealed.aspx#1161376</link><pubDate>Tue, 28 Nov 2006 00:32:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1161376</guid><dc:creator>CoqBlog</dc:creator><description>&lt;p&gt;Tom Hollander nous pr&amp;#233;sente l'application block de validation qui fera partie de la version 3 de l' EntLib&lt;/p&gt;
</description></item><item><title>re: Validation Application Block: Revealed!</title><link>http://blogs.msdn.com/tomholl/archive/2006/11/27/validation-application-block-revealed.aspx#1161430</link><pubDate>Tue, 28 Nov 2006 00:52:20 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1161430</guid><dc:creator>Marty Bell</dc:creator><description>&lt;p&gt;Are you considering any kind of localisation support in defining validators. &amp;nbsp;This would be useful if the app was culture sensitive then the validators could be swapped on culture also?&lt;/p&gt;
</description></item><item><title>ErrorProvider Failure Strings</title><link>http://blogs.msdn.com/tomholl/archive/2006/11/27/validation-application-block-revealed.aspx#1161449</link><pubDate>Tue, 28 Nov 2006 01:00:36 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1161449</guid><dc:creator>Scott Harwood</dc:creator><description>&lt;p&gt;How about a WinForms adapter including failure strings and making them available to the ErrorProvider when an object is data bound to controls? &amp;nbsp;Perhaps this would clog up what you are trying to accomplish.&lt;/p&gt;
</description></item><item><title>re: Validation Application Block: Revealed!</title><link>http://blogs.msdn.com/tomholl/archive/2006/11/27/validation-application-block-revealed.aspx#1161476</link><pubDate>Tue, 28 Nov 2006 01:13:41 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1161476</guid><dc:creator>Sam Judson</dc:creator><description>&lt;p&gt;This looks really exciting! Just what we need :)&lt;/p&gt;
</description></item><item><title>re: Validation Application Block: Revealed!</title><link>http://blogs.msdn.com/tomholl/archive/2006/11/27/validation-application-block-revealed.aspx#1161498</link><pubDate>Tue, 28 Nov 2006 01:23:27 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1161498</guid><dc:creator>Cool</dc:creator><description>&lt;p&gt;Finally I am going to get it&lt;/p&gt;</description></item><item><title>Enterprise Library Validation Application Block Revealed</title><link>http://blogs.msdn.com/tomholl/archive/2006/11/27/validation-application-block-revealed.aspx#1161552</link><pubDate>Tue, 28 Nov 2006 01:36:03 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1161552</guid><dc:creator>David Hayden - Florida .NET Developer - C# and SQL Server</dc:creator><description /></item><item><title>re: Validation Application Block: Revealed!</title><link>http://blogs.msdn.com/tomholl/archive/2006/11/27/validation-application-block-revealed.aspx#1162123</link><pubDate>Tue, 28 Nov 2006 02:40:32 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1162123</guid><dc:creator>tomholl</dc:creator><description>&lt;p&gt;Don: We haven't planned anything a validator dedicated to script injection, since what constitutes valid or invalid input will be very dependent on the technology and usage scenario. However, we will have a RegEx validator which should should work well for checking script injection, provided you can come up with the appropriate regular expressions.&lt;/p&gt;
&lt;p&gt;Marty: Will the support for multiple rulesets on the same types (eg the ValidCustomer and GoldCustomer example in my post) be enough to support culture-specific validation? If not, what else would you want to see?&lt;/p&gt;
&lt;p&gt;Scott: Yes we are looking at doing something along these lines for both WinForms and ASP.NET.&lt;/p&gt;
</description></item><item><title>Enterprise Library for .NET Framework 3.0 - Validation Application Block</title><link>http://blogs.msdn.com/tomholl/archive/2006/11/27/validation-application-block-revealed.aspx#1162185</link><pubDate>Tue, 28 Nov 2006 02:46:01 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1162185</guid><dc:creator>Gabriel Lozano-Morán - The .NET Aficionado</dc:creator><description>&lt;p&gt;Tom Hollander, a Product Manager working for the Microsoft patterns &amp;amp;amp; practices group, discusses&lt;/p&gt;
</description></item><item><title>re: Validation Application Block: Revealed!</title><link>http://blogs.msdn.com/tomholl/archive/2006/11/27/validation-application-block-revealed.aspx#1162839</link><pubDate>Tue, 28 Nov 2006 03:32:17 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1162839</guid><dc:creator>Marty Bell</dc:creator><description>&lt;p&gt;Possibly, I guess I was thinking that if we swapped the culture from say en-UK to en-IE the validator for Customer Name would be different (to account for the extra characters that could be used). &amp;nbsp;It would be nice to factory these in based on the current culture....&lt;/p&gt;
</description></item><item><title>re: Validation Application Block: Revealed!</title><link>http://blogs.msdn.com/tomholl/archive/2006/11/27/validation-application-block-revealed.aspx#1163565</link><pubDate>Tue, 28 Nov 2006 05:51:05 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1163565</guid><dc:creator>Ronen </dc:creator><description>&lt;p&gt;Tom Hi,&lt;/p&gt;
&lt;p&gt;Can you elaborate on the exception handling for the different validation?&lt;/p&gt;
</description></item><item><title>re: Validation Application Block: Revealed!</title><link>http://blogs.msdn.com/tomholl/archive/2006/11/27/validation-application-block-revealed.aspx#1163869</link><pubDate>Tue, 28 Nov 2006 07:33:07 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1163869</guid><dc:creator>Vikas Goyal</dc:creator><description>&lt;p&gt;Hi when prodcution ready v3 is expected to be out ?&lt;/p&gt;
</description></item><item><title>re: Validation Application Block: Revealed!</title><link>http://blogs.msdn.com/tomholl/archive/2006/11/27/validation-application-block-revealed.aspx#1164136</link><pubDate>Tue, 28 Nov 2006 09:16:04 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1164136</guid><dc:creator>BjornS</dc:creator><description>&lt;p&gt;Hi Tom,&lt;/p&gt;
&lt;p&gt;I've heard that there are plans to include a Visual Studio Plug-In for the EntLib Config. tool. If this is the case, would it be possible to make\add validation rules there like one does it in Workflow Foundation with Policy and Rule Sets?&lt;/p&gt;
</description></item><item><title>re: Validation Application Block: Revealed!</title><link>http://blogs.msdn.com/tomholl/archive/2006/11/27/validation-application-block-revealed.aspx#1164428</link><pubDate>Tue, 28 Nov 2006 10:47:30 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1164428</guid><dc:creator>Kanz</dc:creator><description>&lt;p&gt;How would you recommend using the Valication Application Block (VAB) in an n-tier Web Application? Specifically at the UI layer, the Facade layer, and the Data Access layer.&lt;/p&gt;
</description></item><item><title>Validation Application Block</title><link>http://blogs.msdn.com/tomholl/archive/2006/11/27/validation-application-block-revealed.aspx#1164493</link><pubDate>Tue, 28 Nov 2006 11:16:40 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1164493</guid><dc:creator>El Bruno</dc:creator><description>&lt;p&gt;Buenas, algo nos habia contado Tom Hollander en el TechEd, pero por fin ... tenemos otro un AppBlock&lt;/p&gt;
</description></item><item><title>Validation Application Block</title><link>http://blogs.msdn.com/tomholl/archive/2006/11/27/validation-application-block-revealed.aspx#1164494</link><pubDate>Tue, 28 Nov 2006 11:16:52 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1164494</guid><dc:creator>El Bruno</dc:creator><description>&lt;p&gt;Buenas, algo nos habia contado Tom Hollander en el TechEd, pero por fin ... tenemos otro un AppBlock&lt;/p&gt;
</description></item><item><title>re: Validation Application Block: Revealed!</title><link>http://blogs.msdn.com/tomholl/archive/2006/11/27/validation-application-block-revealed.aspx#1164524</link><pubDate>Tue, 28 Nov 2006 11:31:44 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1164524</guid><dc:creator>Jose</dc:creator><description>&lt;p&gt;There are lot of cases in which you create your business entities based on the database model, it would be great to add an easy way to build and &amp;quot;sync&amp;quot; the basic rules (not null, min and max values, length ...) with the schema of the tables.&lt;/p&gt;
</description></item><item><title>re: Validation Application Block: Revealed!</title><link>http://blogs.msdn.com/tomholl/archive/2006/11/27/validation-application-block-revealed.aspx#1164526</link><pubDate>Tue, 28 Nov 2006 11:32:20 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1164526</guid><dc:creator>Michel Grootjans</dc:creator><description>&lt;p&gt;How will the validations interact with visual validation widgets like the asp.net, winforms and third party validation controls?&lt;/p&gt;
</description></item><item><title>EntLib 3 : Validation Application Block</title><link>http://blogs.msdn.com/tomholl/archive/2006/11/27/validation-application-block-revealed.aspx#1164575</link><pubDate>Tue, 28 Nov 2006 11:44:49 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1164575</guid><dc:creator>Blog-a-Styx</dc:creator><description>&lt;p&gt;Pour ceux qui ont d&amp;#233;j&amp;#224; eu l'occasion de s'int&amp;#233;resser &amp;#224; l'excellent Enterprise Library , ils seront content&lt;/p&gt;
</description></item><item><title>re: Validation Application Block: Revealed!</title><link>http://blogs.msdn.com/tomholl/archive/2006/11/27/validation-application-block-revealed.aspx#1164576</link><pubDate>Tue, 28 Nov 2006 11:45:56 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1164576</guid><dc:creator>odalet</dc:creator><description>&lt;p&gt;Reading this kind of constructs:&lt;/p&gt;
&lt;p&gt;&amp;quot;new AndCompositeValidator&amp;lt;string&amp;gt;(v1, v2)&amp;quot; &lt;/p&gt;
&lt;p&gt;lets me think: &lt;/p&gt;
&lt;p&gt;this sounds a little like functional (or even mock objects syntax), so shouldn't this be &amp;quot;linqable&amp;quot;? &lt;/p&gt;
&lt;p&gt;You could keep C# 3 in mind &amp;nbsp;while building this block, and thus, when it becomes available, one could write some &amp;quot;linq&amp;quot; code of this sort:&lt;/p&gt;
&lt;p&gt;ValidationResults r = Validate myObject &lt;/p&gt;
&lt;p&gt;where v1 and v2 or not v3;&lt;/p&gt;
&lt;p&gt;Feasible? Planned?&lt;/p&gt;
</description></item><item><title>re: Validation Application Block: Revealed!</title><link>http://blogs.msdn.com/tomholl/archive/2006/11/27/validation-application-block-revealed.aspx#1164593</link><pubDate>Tue, 28 Nov 2006 11:49:44 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1164593</guid><dc:creator>Simon</dc:creator><description>&lt;p&gt;Sounds really promising!!&lt;/p&gt;
&lt;p&gt;I also totally agree with Luis - being able to add annotations to cause method parameters to be validated would be great.&lt;/p&gt;
&lt;p&gt;In particular, this would allow us to get rid of code that checks arguments for null etc in the body of the method - although I'm sure much wider uses would become apparent too. Anything that keeps method content to pure business logic or flow is positive in my mind.&lt;/p&gt;
</description></item><item><title>re: Validation Application Block: Revealed!</title><link>http://blogs.msdn.com/tomholl/archive/2006/11/27/validation-application-block-revealed.aspx#1164708</link><pubDate>Tue, 28 Nov 2006 12:39:19 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1164708</guid><dc:creator>Dan Blanchard</dc:creator><description>&lt;p&gt;Although the Validation Application Block's rules are aimed at primitive data types, one frequently encounters validation scenarios involving two or more fields. &amp;nbsp;&lt;/p&gt;
&lt;p&gt;It would be nice if the VAB addressed such cross field validation scenarios. (Which is not to say that what you've described so far isn't welcome:)&lt;/p&gt;
</description></item><item><title>re: Validation Application Block: Revealed!</title><link>http://blogs.msdn.com/tomholl/archive/2006/11/27/validation-application-block-revealed.aspx#1166210</link><pubDate>Tue, 28 Nov 2006 19:30:35 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1166210</guid><dc:creator>Geert Klinckaert</dc:creator><description>&lt;p&gt;1. &amp;quot;in-lining&amp;quot; the validation logic within the classes themselves should definitely be included.&lt;/p&gt;
&lt;p&gt;2. Although not entirely 'Validation' related is to have the Validator provide some additional info like which properties are required.&lt;/p&gt;
&lt;p&gt;I already use this concept in my applications where I am able to do somthing like &amp;nbsp;validator.CalculateUICues().&lt;/p&gt;
&lt;p&gt;This returns a collection indicating which properties are required, readonly, invisible, ...&lt;/p&gt;
&lt;p&gt;'Required'&lt;/p&gt;
&lt;p&gt;|__ 'Name', 'Age', ...&lt;/p&gt;
&lt;p&gt;'ReadOnly'&lt;/p&gt;
&lt;p&gt;|__ 'Title', ...&lt;/p&gt;
&lt;p&gt;'Invisible'&lt;/p&gt;
&lt;p&gt;|__ 'Salary', ...&lt;/p&gt;
&lt;p&gt;This can then be used to have the UI react to this information and it is very usefull in situations where f.i. depending on the user input in for instance a drop-down the requiredness of the properties change or depending on the role of the user some fields become readonly or ...&lt;/p&gt;
</description></item><item><title>re: Validation Application Block: Revealed!</title><link>http://blogs.msdn.com/tomholl/archive/2006/11/27/validation-application-block-revealed.aspx#1166385</link><pubDate>Tue, 28 Nov 2006 20:34:04 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1166385</guid><dc:creator>Thomas Beck</dc:creator><description>&lt;p&gt;Tom – As always, thanks for involving the community on this. It looks like you have a laundry list of ideas to work through already. I’ll go ahead and add my $0.02 to the bottom of your list:&lt;/p&gt;
&lt;p&gt;• I like the attribute-based approach. As someone who is increasingly straddling .NET and Java these days, I would encourage you to look at the usage of annotations in Java5/EJB3 to see how they have addressed similar challenges, including validation.&lt;/p&gt;
&lt;p&gt;• I’m sure that you guys are already going in this direction, but I’d recommend making sure that the collection of ValidationResult objects that you return is bindable. Yeah, this displays a bit of affinity towards UI-oriented interfaces but it saves a lot of headaches in the long run.&lt;/p&gt;
&lt;p&gt;• Speaking from experience, externalization of rules into a cached XML file is something that turns up as a pretty frequent requirement in this area and isn’t too hard to implement. Business users love knowing that they can change these validations at a whim, even if the need crops up relatively infrequently in the real world. &lt;/p&gt;
&lt;p&gt;As a short aside and judging from some of the responses above, it would be really great if the P&amp;amp;P group could offer some guidance on the recommended application of different .NET-based mechanisms to enforce business logic. From attribute-based validations and compiled business logic to the use of products for rule-based decisions or full-out business processes, &amp;nbsp;I think the community would benefit tremendously from some formal guidance in these areas.&lt;/p&gt;
&lt;p&gt;Thomas Beck&lt;/p&gt;
&lt;p&gt;www.beckshome.com&lt;/p&gt;
</description></item><item><title>New and Notable 129 </title><link>http://blogs.msdn.com/tomholl/archive/2006/11/27/validation-application-block-revealed.aspx#1166705</link><pubDate>Tue, 28 Nov 2006 21:34:41 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1166705</guid><dc:creator>Sam Gentile</dc:creator><description>&lt;p&gt;Workflow/BPM/WCF/SOA David Chappell presents arguments both pro and con as to whether Microsoft qualifies&lt;/p&gt;
</description></item><item><title>re: Validation Application Block: Revealed!</title><link>http://blogs.msdn.com/tomholl/archive/2006/11/27/validation-application-block-revealed.aspx#1166728</link><pubDate>Tue, 28 Nov 2006 21:45:41 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1166728</guid><dc:creator>paul de vries</dc:creator><description>&lt;p&gt;Are you also planning class validators attributes? With class validators I mean for example a validator for a customer class, with fields country and postal code, which can validate the combination.&lt;/p&gt;
</description></item><item><title>re: Validation Application Block: Revealed!</title><link>http://blogs.msdn.com/tomholl/archive/2006/11/27/validation-application-block-revealed.aspx#1167279</link><pubDate>Wed, 29 Nov 2006 00:19:48 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1167279</guid><dc:creator>Kevin Idzi</dc:creator><description>&lt;p&gt;This is great to see how the patterns and practices are approaching business rules. &amp;nbsp;We've worked with making something similar at where I work, and tied it to work with Typed Datasets. We made the rulesets a collection of rules which only know the datasource table and the column name (as well any dependent columns). &amp;nbsp;&lt;/p&gt;
&lt;p&gt;Our rules can have group validators which have a series of validation rules for the criteria, and then a series of rules to actually validate against if there if the criteria is true. &lt;/p&gt;
&lt;p&gt;The way we set it up, our ruleset can be saved and cached globally. &amp;nbsp;Then a dataset can attach the ruleset and be validated as a whole (loop each table, grab all of the validation rules from the ruleset which are tied to the table, and execute). &amp;nbsp;&lt;/p&gt;
&lt;p&gt;It ties into our UI because we have a control manager which handles which controls are bound to which datafield in a datatable/dataset. &amp;nbsp;So when a user changes a field, we can query the ruleset for all rules which have a dependency on that column, then grab all of the controls from the controlmanager which have are bound to those fields, and revalidate all of the rules and update all of the visible controls which are affected. &amp;nbsp;This allows us to do real time validation of just what is needed. And then the whole thing can be validated against if needed, but in most cases we only want to validate what is visible on the screen (so the user can actually change it to resolve the problem). &amp;nbsp;&lt;/p&gt;
&lt;p&gt;I'd like to see more of the conditional grouping with the enterprise version, a dynamic error message which can return data from the 'object'/row being validated in addition to a message, a way to get all of the rules associated with just a 'table' or a 'column' - and a way to store the dependencies for the rules. &amp;nbsp;Also making the ruleset cached globally is critical for large applications which do not want the continuous overhead of creating these rulesets each time they are needed. &amp;nbsp;&lt;/p&gt;
&lt;p&gt;The attribute technique is interesting, but I am not sure it fits for typed datasets. The API variant is interesting, but not storing the dependencies for a rule seems to be a mistake as far as tying it into a UI which only knows about the data. &amp;nbsp;The UI needs to be able to query the rules to revalidate for a given field. &amp;nbsp;And keep in mind, some rules might be dependent on multiple fields (and even calculated columns). &amp;nbsp;&lt;/p&gt;
&lt;p&gt;Just some thoughts I wanted to share, this is a good start though.&lt;/p&gt;
</description></item><item><title>re: Validation Application Block: Revealed!</title><link>http://blogs.msdn.com/tomholl/archive/2006/11/27/validation-application-block-revealed.aspx#1167387</link><pubDate>Wed, 29 Nov 2006 00:23:27 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1167387</guid><dc:creator>NoMan</dc:creator><description>&lt;p&gt;So, like, when is the Configuration Tool going to do something useful, like, oh, I don't know, actually saving config info when you hit save? Where is some documentation for troubleshooting this piece of crap?&lt;/p&gt;
</description></item><item><title>re: Validation Application Block: Revealed!</title><link>http://blogs.msdn.com/tomholl/archive/2006/11/27/validation-application-block-revealed.aspx#1168535</link><pubDate>Wed, 29 Nov 2006 04:14:43 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1168535</guid><dc:creator>Eric M</dc:creator><description>&lt;p&gt;Anything that can let us specify validation rules once and then use these rules in both the UI (ASP.NET especially) and in the business objects would be great.&lt;/p&gt;
</description></item><item><title>re: Validation Application Block: Revealed!</title><link>http://blogs.msdn.com/tomholl/archive/2006/11/27/validation-application-block-revealed.aspx#1171460</link><pubDate>Wed, 29 Nov 2006 17:12:22 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1171460</guid><dc:creator>Sam Judson</dc:creator><description>&lt;p&gt;Are what your talking about anything to do with this:&lt;/p&gt;
&lt;p&gt;&lt;a rel="nofollow" target="_new" href="http://www.codeplex.com/ValidationFramework"&gt;http://www.codeplex.com/ValidationFramework&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;ot is that something else? (looks very similar)&lt;/p&gt;
</description></item><item><title>re: Validation Application Block: Revealed!</title><link>http://blogs.msdn.com/tomholl/archive/2006/11/27/validation-application-block-revealed.aspx#1171900</link><pubDate>Wed, 29 Nov 2006 19:01:10 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1171900</guid><dc:creator>Kevin Idzi</dc:creator><description>&lt;p&gt;Sam - &lt;/p&gt;
&lt;p&gt;That is an interesting site, thanks for the link. &amp;nbsp;I like the way it generates the asp.net client side validators as needed, that's very clever. What I'm talking about is something we wrote internal, so it is not public. &lt;/p&gt;
&lt;p&gt;Having validations declaratively on the business object just seems a bit too strict for me. &amp;nbsp;I like someone's post above about having the rules serialized to XML, that is something we have the option to do as well (or a database). It also allows you to have many more business rules because they can be cached, and the burden of the creation isn't added for every instantiation of your object. But you need to disassiciate the rule from the target to do so. &amp;nbsp;You need to do a 'lazy' bind, or have the ability to do so since some may well prefer a static binding for simpler applications. &amp;nbsp;&lt;/p&gt;
&lt;p&gt;And I am not a personal fan of the IErrorProvider for these sorts of things, since there are multiple rules firing for a given data column, there might be multiple errors set at any one time, and changing one field might trigger others. &amp;nbsp;The code in the ValidationFramework is way too tedious for setting those rules. &amp;nbsp;I'd prefer an object where the ruleset is defined, and then let the ruleset manager know how to get the dependencies and keep track of the bindings for each rule and provide lookup services, and then have a control manager to handle the binding using a rule monitor to watch for changes and update the controls accordingly. &amp;nbsp;It might seem to add some extra layers, but the flexibility is amazing - and this would work just fine for backend validation with just the ruleset by itself (and the business object of course). &amp;nbsp;&lt;/p&gt;
</description></item><item><title>re: Validation Application Block: Revealed!</title><link>http://blogs.msdn.com/tomholl/archive/2006/11/27/validation-application-block-revealed.aspx#1173584</link><pubDate>Wed, 29 Nov 2006 23:25:50 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1173584</guid><dc:creator>Ryan B</dc:creator><description>&lt;p&gt;Looks interesting. My two cents would be that I would think about separating the definition of the rules from the actual validation of the rules. It appears that the validators are actually both. &lt;/p&gt;
&lt;p&gt;The reason I say this is that I think it is going to be difficult to create validators that work in different layers of an application (UI,Domain,etc). While it might be possible for some applications, I think it would definitely be fragile.&lt;/p&gt;
&lt;p&gt;Instead why not have different types of Rule specifications that are simply data objects and store information about a rule, but do not actually evaluate the rule. You could provide &amp;nbsp;a library of validators that use these rule specifications to do validation. If the provided validator does not work for a particular situation (works for domain validation, but not UI validation) than a developer could create a new validator to work in that case. The key is that the Rule Specification does not change only the validator does.&lt;/p&gt;
&lt;p&gt;We are using this technique currently in our application and it works very well. &amp;nbsp; &lt;/p&gt;
</description></item><item><title>Validation Application Block</title><link>http://blogs.msdn.com/tomholl/archive/2006/11/27/validation-application-block-revealed.aspx#1173623</link><pubDate>Wed, 29 Nov 2006 23:52:25 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1173623</guid><dc:creator>My thoughts exactly...</dc:creator><description>&lt;p&gt;Enterprise Library his going to be extended with a Validation Application Block&lt;/p&gt;
</description></item><item><title>Validation Application Block - schon geh&amp;ouml;rt?</title><link>http://blogs.msdn.com/tomholl/archive/2006/11/27/validation-application-block-revealed.aspx#1176801</link><pubDate>Thu, 30 Nov 2006 12:03:47 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1176801</guid><dc:creator>MSDN Austria</dc:creator><description>&lt;p&gt;Die ersten Details zum neuen Validation Application Block wurden k&amp;#252;rzlich auf Tom Hollander's Weblog&lt;/p&gt;
</description></item><item><title>re: Validation Application Block: Revealed!</title><link>http://blogs.msdn.com/tomholl/archive/2006/11/27/validation-application-block-revealed.aspx#1179039</link><pubDate>Thu, 30 Nov 2006 21:17:02 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1179039</guid><dc:creator>Kevin I</dc:creator><description>&lt;p&gt;There is some work that might need to be rethought a bit as far as ASP.net client side goes, but currently we're using the ruleset generically in the backend and in the UI. &amp;nbsp;All the validation does is check values in a datarow. And since we standardized on datasets, that makes it easier. &amp;nbsp;For domain, that is passed into the ruleset (if needed) and rules are dynamically created based on the domain values (CvvLength, etc). Those rulesets are created once, cached, and the datasets are used during the validation process. &amp;nbsp;&lt;/p&gt;
&lt;p&gt;We have discussed after getting the intial version of these out having these 'rulesets' be something that can load from a database, but that doesn't always work very well. &amp;nbsp;&lt;/p&gt;
&lt;p&gt;For example, if you have a payment type domain that has different credit card types and information on each (cvvlength, pinlength, etc), making a 'static' rule definition would not work. Instead, the rule definition needs to be made with this lookup data available to loop through the domain objects and create the rules accordingly (in a general fashion for all payments -- I'm not talking VISA do this, AMEX do that, the domain should contain the needed information for if a pin is required, or the regex for the creditcard string, etc). &amp;nbsp;&lt;/p&gt;
&lt;p&gt;We do have a library of validators, that is how it is designed currently. We have a base object the rules need, other things can be added as needed. &lt;/p&gt;
&lt;p&gt;Due to the way the rules are created, they are self-aware so that our ruleset knows all of the fields dependent on the rules within the set. &amp;nbsp;This is used by our UI Rule monitor which when a field changes, the rules are retrieved to then get the controls and display the messaging. &amp;nbsp;The backend just tells the ruleset to validate the dataset :) &amp;nbsp; So I don't think it's quite as fragile as you think. &amp;nbsp;&lt;/p&gt;
&lt;p&gt;For our asp.net integration, we would generate the client side information needed when the page is loaded, since we would know all of the rules needed for the given screen (due to the self-aware nature of the rules). &amp;nbsp;I wouldn't want a rule which can dump out ASP.Net sitting in the backend, I'd rather that all be in the frontend. Keeps it more separated and decoupled.&lt;/p&gt;
</description></item><item><title>re: Validation Application Block: Revealed!</title><link>http://blogs.msdn.com/tomholl/archive/2006/11/27/validation-application-block-revealed.aspx#1179322</link><pubDate>Thu, 30 Nov 2006 23:14:35 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1179322</guid><dc:creator>tomholl</dc:creator><description>&lt;p&gt;Thanks for all of the feedback, everyone! I'll try to get some time to respond to some of individual questions later. For now, I'd like to drill into the excellent suggestion for using the block to validate parameters. We were imagining this would let you decorate method parameters as follows:&lt;/p&gt;
&lt;p&gt;public void DoStuff(&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp;[NotNullValidator]string x,&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp;[NumericRangeValidator(10,20) int y)&lt;/p&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;...}&lt;/p&gt;
&lt;p&gt;If we had a generic interception mechanism, it would be very cool to have the validation enforced automatically. But in the absence of such a beast, we would need to provide an API that walked the stack to find the parameters, extract the attributes and then perform the validation. The reflection APIs let you query the parameter's attributes, but not the parameter's runtime values, so unfortunately it would be necessary to pass the parameter values to the validation call from code - the API would use a parameter array and assume the parameters are passed in the same order as in the method signature.&lt;/p&gt;
&lt;p&gt;We were thinking of two methods: one which validated the parameters and throws an exception if anything is invalid, and another which just returns the ValidationResults, eg:&lt;/p&gt;
&lt;p&gt;Validation.CheckParameters(x, y);&lt;/p&gt;
&lt;p&gt;ValidationResults results = Validation.ValidateParameters(x, y);&lt;/p&gt;
&lt;p&gt;What do you think of this idea? Any suggestions to improve it?&lt;/p&gt;
&lt;p&gt;Tom&lt;/p&gt;
</description></item><item><title>re: Validation Application Block: Revealed!</title><link>http://blogs.msdn.com/tomholl/archive/2006/11/27/validation-application-block-revealed.aspx#1181111</link><pubDate>Fri, 01 Dec 2006 07:09:29 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1181111</guid><dc:creator>SimonC</dc:creator><description>&lt;p&gt;Tom&lt;/p&gt;
&lt;p&gt;A question about validating parameters. I dont see how your method signature would work. Below is the closest I could come up with. Note the two options, one with black magic and one without.&lt;/p&gt;
&lt;p&gt; public class ParamValidationAttrbute : Attribute&lt;/p&gt;
&lt;p&gt; &amp;nbsp;{&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp;public void Validate(object parameterValue)&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp;{&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;//Call some validation based on Attribute&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;//Possible throw an ArgumentException&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;Debug.WriteLine(parameterValue);&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp;}&lt;/p&gt;
&lt;p&gt; &amp;nbsp;}&lt;/p&gt;
&lt;p&gt; &amp;nbsp;public class MyClass&lt;/p&gt;
&lt;p&gt; &amp;nbsp;{&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp;public void Method([ParamValidationAttrbute] string hello)&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp;{&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;ParameterValidator.Validate&amp;lt;MyClass&amp;gt;(&amp;quot;Method&amp;quot;, hello);&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp;}&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp;public void Method2([ParamValidationAttrbute] string hello)&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp;{&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;ParameterValidator.Validate(hello);&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp;}&lt;/p&gt;
&lt;p&gt; &amp;nbsp;}&lt;/p&gt;
&lt;p&gt; &amp;nbsp;public static class ParameterValidator&lt;/p&gt;
&lt;p&gt; &amp;nbsp;{&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp;public static void Validate(params object[] parameters)&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp;{&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;StackFrame fr = new StackFrame(1, true);&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;MethodBase method = fr.GetMethod();&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;ValidateMethodInfo((MethodInfo)method, parameters);&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp;}&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp;public static void Validate&amp;lt;T&amp;gt;(string method, params object[] parameters)&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp;{&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;MethodInfo methodInfo = typeof (T).GetMethod(method);&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;ValidateMethodInfo(methodInfo, parameters);&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp;}&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp;private static void ValidateMethodInfo(MethodInfo methodInfo, params object[] parameters)&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp;{&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;ParameterInfo[] parameterInfos = methodInfo.GetParameters();&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;foreach (ParameterInfo parameterInfo in parameterInfos)&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;object paramValue = parameters[parameterInfo.Position];&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;object[] attributes = parameterInfo.GetCustomAttributes(typeof(ParamValidationAttrbute), true);&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;foreach (ParamValidationAttrbute attrbute in attributes)&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;attrbute.Validate(paramValue);&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp;}&lt;/p&gt;
&lt;p&gt; &amp;nbsp;}&lt;/p&gt;
</description></item><item><title>re: Validation Application Block: Revealed!</title><link>http://blogs.msdn.com/tomholl/archive/2006/11/27/validation-application-block-revealed.aspx#1196182</link><pubDate>Sun, 03 Dec 2006 03:10:25 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1196182</guid><dc:creator>tomholl</dc:creator><description>&lt;p&gt;Thanks for the code sample SimonC! This looks pretty close to what I was imagining. The only real difference I can see is in the return values/exceptions from the validation methods. Which part of my API sample were you having trouble with?&lt;/p&gt;
&lt;p&gt;Tom&lt;/p&gt;
</description></item><item><title>re: Validation Application Block: Revealed!</title><link>http://blogs.msdn.com/tomholl/archive/2006/11/27/validation-application-block-revealed.aspx#1196616</link><pubDate>Sun, 03 Dec 2006 04:41:14 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1196616</guid><dc:creator>SimonC</dc:creator><description>&lt;p&gt;The code I was trying to work out was&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp;Validation.CheckParameters(x, y);&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp;ValidationResults results=Validation.ValidateParameters(x, y);&lt;/p&gt;
&lt;p&gt;I could not work out how you were going to extract the method info (and hence the validation attributes) without either passing through the type (i used a &amp;nbsp;generic to do this) and the method name or take the performance hit of walking the stack.&lt;/p&gt;
&lt;p&gt;I was actually hoping there was something I had missed as I would prefer not to force the consumer to pass through the method.&lt;/p&gt;
</description></item><item><title>re: Validation Application Block: Revealed!</title><link>http://blogs.msdn.com/tomholl/archive/2006/11/27/validation-application-block-revealed.aspx#1196654</link><pubDate>Sun, 03 Dec 2006 04:53:23 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1196654</guid><dc:creator>tomholl</dc:creator><description>&lt;p&gt;SimonC - not that I know of. I was assuming a stack walk like in your &amp;quot;black magic&amp;quot; example. Obviously there will be performance implications to this approach; we would need to do some testing to determine how significant this is.&lt;/p&gt;
</description></item><item><title>re: Validation Application Block: Revealed!</title><link>http://blogs.msdn.com/tomholl/archive/2006/11/27/validation-application-block-revealed.aspx#1202546</link><pubDate>Mon, 04 Dec 2006 07:08:46 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1202546</guid><dc:creator>Mr. Underhill</dc:creator><description>&lt;p&gt;Please consider the integration with the UI of this validations. &amp;nbsp;Think about this, once a rule is broken in a given object, you want to let the user know about it, PLEASE PLEASE do not keep the validation block only at the class level, it will be really beneficial to prescribe the integration to the UI.&lt;/p&gt;
</description></item><item><title>re: Validation Application Block: Revealed!</title><link>http://blogs.msdn.com/tomholl/archive/2006/11/27/validation-application-block-revealed.aspx#1212508</link><pubDate>Tue, 05 Dec 2006 21:19:38 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1212508</guid><dc:creator>thardy</dc:creator><description>&lt;p&gt;As to integration with UI, I see two components being necessary:&lt;/p&gt;
&lt;p&gt;1. The user needs to be notified of the results - This is simply accomplished by having a common mechanism to allow your layers to place messages somewhere that they will be displayed to the user. &amp;nbsp;This is easily handled in your own application framework and probably is well beyond the responsibility of this validation framework. &amp;nbsp;Just do something like Ruby's &amp;quot;Flash&amp;quot; mechanism. &amp;nbsp;Whatever framework you are using should allow this functionality to begin with.&lt;/p&gt;
&lt;p&gt;2. The declarative validation attributes should/could cause client-side validation to occur - This is the kicker. &amp;nbsp;You should be able to declare all validation requirements in one place, then have them executed both client-side and in the business methods (not code-behind). &amp;nbsp;That way any APIs you write against your business methods will include the validation. &amp;nbsp;&lt;/p&gt;
&lt;p&gt;The main requirement I see for the second is a mapping between controls and either entity properties or method parameters. &amp;nbsp;The mapping between entity properties and controls should be straightforward - something like the following:&lt;/p&gt;
&lt;p&gt;validation.AddValidation(“txtFirstName”, “FirstName”);&lt;/p&gt;
&lt;p&gt;formPerson.DataBound += delegate(object s,&lt;/p&gt;
&lt;p&gt;EventArgs args)&lt;/p&gt;
&lt;p&gt;{ validation.GenerateValidators(formPerson, &lt;/p&gt;
&lt;p&gt;formPerson.DataItem); };&lt;/p&gt;
&lt;p&gt;(A code snippet straight from an article by Steve Michelotti for Visual Studio Magazine - &lt;a rel="nofollow" target="_new" href="https://www.ftponline.com/vsm/2006_06/magazine/features/smichelotti/"&gt;https://www.ftponline.com/vsm/2006_06/magazine/features/smichelotti/&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;It would be great if the framework could refactor some of that out of site and automatically wire up the validator generation, but I don't see the above being very problematic. &amp;nbsp;&lt;/p&gt;
&lt;p&gt;The real difficulty comes in mapping business method parameters to UI elements. &amp;nbsp;For starters, I get a dirty feeling exposing business method details in my pages. &amp;nbsp;We use a MVC2/MVP framework and controllers handle all the logic to call the business methods. &amp;nbsp;Perhaps we could do that mapping in our controllers and I'd feel better about it. &amp;nbsp;&lt;/p&gt;
&lt;p&gt;But even if I could get past that, we'd still need a mechanism to do it. &amp;nbsp;We'd need to map the class, method, and parameter to a UI element. &amp;nbsp;Perhaps the concept of a ParmObject would fill the gap. &amp;nbsp;Have our framework create a simple ParmObject for every method signature, and make these readily available to all layers that might use them. &amp;nbsp;Something like the following might result...&lt;/p&gt;
&lt;p&gt;Validation.MapValidator(&amp;quot;txtFirstName&amp;quot;, ParmObjects.MyClass.MyMethod.FirstName);&lt;/p&gt;
&lt;p&gt;Any thoughts?&lt;/p&gt;
</description></item><item><title>re: Validation Application Block: Revealed!</title><link>http://blogs.msdn.com/tomholl/archive/2006/11/27/validation-application-block-revealed.aspx#1214231</link><pubDate>Wed, 06 Dec 2006 00:48:26 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1214231</guid><dc:creator>thardy</dc:creator><description>&lt;p&gt;I just realized that perhaps some of the comments on UI integration were referring to the actual message being displayed for a failed validation, not the mechanism to display the message. &amp;nbsp;I totally agree that the message to display for failure (or a resource key that will get the message) should be available for declaration within the validation attributes themselves.&lt;/p&gt;
&lt;p&gt;[RequiredValidator(&amp;quot;SuperValue is required.&amp;quot;)]&lt;/p&gt;
&lt;p&gt;or&lt;/p&gt;
&lt;p&gt;[RequiredValidator(ResourceKeys.SuperValueReq)]&lt;/p&gt;
&lt;p&gt;That's definitely a must-have, especially for properties/parameters with multiple validators attached to them.&lt;/p&gt;
</description></item><item><title>re: Validation Application Block: Revealed!</title><link>http://blogs.msdn.com/tomholl/archive/2006/11/27/validation-application-block-revealed.aspx#1214832</link><pubDate>Wed, 06 Dec 2006 01:50:13 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1214832</guid><dc:creator>SimonC</dc:creator><description>&lt;p&gt;Tom &lt;/p&gt;
&lt;p&gt;re performance of validating attributes, below seems to be the most efficient. Not the friendliest API but it avoids the use of the stack. Perhaps provide both the stackframe and getcurrentmethod options with some lengthy doco on the performance. Better performance can also be achieved through a static cache of parameterinfos&lt;/p&gt;
&lt;p&gt; public static class ParameterValidator&lt;/p&gt;
&lt;p&gt; &amp;nbsp;{&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp;public static void Validate(MethodBase methodBase, params object[] parameters)&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp;{&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;ParameterInfo[] parameterInfos = methodBase.GetParameters();&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;ParamValidationAttrbute[] attributes;&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;foreach (ParameterInfo parameterInfo in parameterInfos)&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;attributes =&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(ParamValidationAttrbute[]) parameterInfo.GetCustomAttributes(typeof (ParamValidationAttrbute), true);&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;foreach (ParamValidationAttrbute attrbute in attributes)&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;object paramValue = parameters[0];&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;attrbute.Validate(paramValue);&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp;}&lt;/p&gt;
&lt;p&gt; &amp;nbsp;}&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp;public void Method([ParamValidationAttrbute] string hello)&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp;{&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;ParameterValidator.Validate(MethodBase.GetCurrentMethod(), hello);&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp;}&lt;/p&gt;
</description></item><item><title>re: Validation Application Block: Revealed!</title><link>http://blogs.msdn.com/tomholl/archive/2006/11/27/validation-application-block-revealed.aspx#1224444</link><pubDate>Wed, 06 Dec 2006 19:40:33 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1224444</guid><dc:creator>Nathan Prather</dc:creator><description>&lt;p&gt;As a web developer, I would prefer an AJAX implementation.&lt;/p&gt;
&lt;p&gt;Much cleaner. &amp;nbsp;So I vote for AJAX!&lt;/p&gt;
&lt;p&gt;Thanks!&lt;/p&gt;
&lt;p&gt;Nathan&lt;/p&gt;
</description></item><item><title>re: Validation Application Block: Revealed!</title><link>http://blogs.msdn.com/tomholl/archive/2006/11/27/validation-application-block-revealed.aspx#1246262</link><pubDate>Sat, 09 Dec 2006 18:54:48 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1246262</guid><dc:creator>Omari</dc:creator><description>&lt;p&gt;You should think about future and C# 3.0&lt;/p&gt;
</description></item><item><title>Compare with CSLA</title><link>http://blogs.msdn.com/tomholl/archive/2006/11/27/validation-application-block-revealed.aspx#1268010</link><pubDate>Tue, 12 Dec 2006 21:57:29 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1268010</guid><dc:creator>Todd C. Gleason</dc:creator><description>&lt;p&gt;This is very interesting. &amp;nbsp;For comparison I'd like to make sure you've seen how &amp;lt;a href=&amp;quot;&lt;a rel="nofollow" target="_new" href="http://www.lhotka.net/Article.aspx?id=12983bcf-4599-4a11-917c-72f3d473883e&amp;quot;&amp;gt;CSLA"&gt;http://www.lhotka.net/Article.aspx?id=12983bcf-4599-4a11-917c-72f3d473883e&amp;quot;&amp;gt;CSLA&lt;/a&gt; handles rules using its RulesManager&amp;lt;/a&amp;gt;. &amp;nbsp;Your approach so far seems to lack the concept of a rules manager to &amp;quot;catch&amp;quot; all the results. &amp;nbsp;The advantage of the rules manager is that it makes it easy to collect broken rules, and display them in another tier, or log them all. &amp;nbsp;Without it, rules are disconnected from the rest of the application.&lt;/p&gt;
&lt;p&gt;For those who talked about other rules engines like BizTalk and WF (Workflow Foundation), the CSLA author has &amp;lt;a href=&amp;quot;&lt;a rel="nofollow" target="_new" href="http://www.lhotka.net/Article.aspx?id=245d288e-ed3c-481a-9148-b88883d735e4&amp;quot;&amp;gt;this&amp;lt;/a&amp;gt;"&gt;http://www.lhotka.net/Article.aspx?id=245d288e-ed3c-481a-9148-b88883d735e4&amp;quot;&amp;gt;this&amp;lt;/a&amp;gt;&lt;/a&gt; to say about the topic. &amp;nbsp;I can definitely see what he's talking about, and that something like the Validation Application Block looks more straightforward to integrate than something like Workflow Foundation. &amp;nbsp;I'd be interested to hear confirmation from the authors of the Validation Application Block as to whether you agree about the applicability of different types of &amp;quot;rules engines&amp;quot;--it sounds as though you agree that there is a &amp;quot;right tool for the job&amp;quot; and that no one engine is appropriate for everything (even if you could stretch yourself and model validation as a Workflow Activity, why would you want to?).&lt;/p&gt;
&lt;p&gt;As an aside, when &amp;lt;a href=&amp;quot;&lt;a rel="nofollow" target="_new" href="http://www.ideablade.com/&amp;quot;&amp;gt;IdeaBlade&amp;lt;/a&amp;gt;"&gt;http://www.ideablade.com/&amp;quot;&amp;gt;IdeaBlade&amp;lt;/a&amp;gt;&lt;/a&gt; created the FunHouse project as a test application for their DevForce project, the validation they implemented was using a modified version of CSLA's rules. &amp;nbsp;It would be interesting to see a similar framework, only taken to the next level (as the use of attributes and XML serialization of rules can provide).&lt;/p&gt;
</description></item><item><title>Enterprise Library Validation Application Block Revealed</title><link>http://blogs.msdn.com/tomholl/archive/2006/11/27/validation-application-block-revealed.aspx#1285654</link><pubDate>Thu, 14 Dec 2006 18:14:30 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1285654</guid><dc:creator>David Hayden - Florida .NET Developer - C# and SQL Server</dc:creator><description /></item><item><title>Validation Application Block</title><link>http://blogs.msdn.com/tomholl/archive/2006/11/27/validation-application-block-revealed.aspx#1322972</link><pubDate>Tue, 19 Dec 2006 08:39:19 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1322972</guid><dc:creator>Tatis</dc:creator><description>&lt;p&gt;El equipo de P&amp;amp;amp;P ya se encuentra trabajando en la siguiente versi&amp;amp;oacute;n de los Application Blocks&lt;/p&gt;
</description></item><item><title>Enterprise Library v3中的新成员：Validation Application Block</title><link>http://blogs.msdn.com/tomholl/archive/2006/11/27/validation-application-block-revealed.aspx#1351169</link><pubDate>Sat, 23 Dec 2006 10:26:36 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1351169</guid><dc:creator>TerryLee</dc:creator><description>&lt;p&gt;Tom Hollander在他的Blog中介绍了作为下一代企业库（开发代号Enterprise Library v3）中的新成员Validation Application Block，Tom Hollander在这里提供了一些实现验证的想法，对于Enterprise Library比较关注的朋友可以一睹为快！&lt;/p&gt;
</description></item><item><title>Enterprise Library 3.0 Dec CTP on Code Plex !</title><link>http://blogs.msdn.com/tomholl/archive/2006/11/27/validation-application-block-revealed.aspx#1351299</link><pubDate>Sat, 23 Dec 2006 12:16:04 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1351299</guid><dc:creator>Ohad's WebLog</dc:creator><description>&lt;p&gt;Enterprise Library 3.0 Dev CTP is available on Code Plex since yesterday :-) This CTP Highlights are&lt;/p&gt;
</description></item><item><title>Enterprise Library 3.0 Dec CTP on Code Plex !</title><link>http://blogs.msdn.com/tomholl/archive/2006/11/27/validation-application-block-revealed.aspx#1351300</link><pubDate>Sat, 23 Dec 2006 12:16:08 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1351300</guid><dc:creator>Ohad's Weblog</dc:creator><description>&lt;p&gt;Enterprise Library 3.0 Dev CTP is available on Code Plex since yesterday :-) This CTP Highlights are&lt;/p&gt;
</description></item><item><title>EntLib 3.0 CTP Validation block</title><link>http://blogs.msdn.com/tomholl/archive/2006/11/27/validation-application-block-revealed.aspx#1352401</link><pubDate>Sat, 23 Dec 2006 21:02:17 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1352401</guid><dc:creator>Rene Schrieken</dc:creator><description>&lt;p&gt;The first CTP release of the Enterprise Library, which is available for download from CodePlex , contains&lt;/p&gt;
</description></item><item><title>Totally Hacked</title><link>http://blogs.msdn.com/tomholl/archive/2006/11/27/validation-application-block-revealed.aspx#1354021</link><pubDate>Sun, 24 Dec 2006 01:16:39 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1354021</guid><dc:creator>alik levin's</dc:creator><description>&lt;p&gt;It all happens with input that us not properly validated from: &lt;a rel="nofollow" target="_new" href="http://msdn.microsoft.com/library/en-us/dnnetsec/html/THCMCh04.asp?frame=true#c04618429_006"&gt;http://msdn.microsoft.com/library/en-us/dnnetsec/html/THCMCh04.asp?frame=true#c04618429_006&lt;/a&gt;&lt;/p&gt;
</description></item><item><title>re: Validation Application Block: Revealed!</title><link>http://blogs.msdn.com/tomholl/archive/2006/11/27/validation-application-block-revealed.aspx#1365408</link><pubDate>Tue, 26 Dec 2006 19:34:26 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1365408</guid><dc:creator>Kevin I</dc:creator><description>&lt;p&gt;The CLSA project makes a good attempt at business rules, but they are tied a bit too tightly with the business objects. The business rules are more useful when used in a context, not all or nothing. &amp;nbsp;And tying each object to a bunch of function pointers makes it a bit too tight, and creates extra weight when the rules either aren't needed/used - as well as having them externally loaded. &amp;nbsp;There are some rules in which it is possible to share between a front/end and backend system (if no database interactivity is needed), and a good framework would be able to leverage both cases - as well as provide information on the actual error and provide at least a mechanism for the UI to be able to query out which fields are in error, and validate only the rules associated with a given field (under a given context). &lt;/p&gt;
</description></item><item><title>Une CTP d'Enterprise Library version 3.0 est disponible sur CodePlex</title><link>http://blogs.msdn.com/tomholl/archive/2006/11/27/validation-application-block-revealed.aspx#1376199</link><pubDate>Fri, 29 Dec 2006 00:01:55 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1376199</guid><dc:creator>« Je connais mes limites. C'est pourquoi je vais au-delà. »</dc:creator><description>&lt;p&gt;Apr&amp;#232;s une interruption momentan&amp;#233;e de ma participation &amp;#224; la bloggosph&amp;#232;re, je profite d’une accalmie passag&amp;#232;re&lt;/p&gt;
</description></item><item><title>Validation Application Block and ASP.NET</title><link>http://blogs.msdn.com/tomholl/archive/2006/11/27/validation-application-block-revealed.aspx#1381664</link><pubDate>Sat, 30 Dec 2006 02:53:46 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1381664</guid><dc:creator>Christoph De Baene</dc:creator><description>&lt;p&gt;I created a sample on my blog (&lt;a rel="nofollow" target="_new" href="http://www.delarou.net"&gt;http://www.delarou.net&lt;/a&gt;), how you can extend the BoundField of ASP.NET for validation through the VAB.&lt;/p&gt;
&lt;p&gt;Tom, &lt;/p&gt;
&lt;p&gt;Is it something similar that you will provide through the VAB? Or can you give an idea how it would look like?&lt;/p&gt;
&lt;p&gt;How can I map, for example a RegexValidator to a RegularExpressionValidator, given that the 'pattern' property is private? Or will that be changed in the future?&lt;/p&gt;
&lt;p&gt;thx&lt;/p&gt;
</description></item><item><title>re: Validation Application Block: Revealed!</title><link>http://blogs.msdn.com/tomholl/archive/2006/11/27/validation-application-block-revealed.aspx#1394592</link><pubDate>Mon, 01 Jan 2007 23:38:43 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1394592</guid><dc:creator>manuelra</dc:creator><description>&lt;p&gt;Some thoughts...&lt;/p&gt;
&lt;p&gt;1. Multi Layer Architecture ==&amp;gt; Replicating Rules&lt;/p&gt;
&lt;p&gt;As per Michael Howard, data should be validated at chokepoints, not everywhere&lt;/p&gt;
&lt;p&gt;&amp;quot;all validations have a point in the design where the data is believed to be well-formed and safe because it has been checked. Once the data is inside that trusted boundary, there should be no reason to check it again for validity [...] you should employ multiple layers of defense in case a layer is compromised (Writing Secure Code, 2nd Ed, p345)&lt;/p&gt;
&lt;p&gt;Thus Multi layer architecture ==&amp;gt; multiple points of validation ==&amp;gt; It SHOULD be straightforward to replicate these rules across layers&lt;/p&gt;
&lt;p&gt;And Multi Layer architecture does not ==&amp;gt; validations everywhere ==&amp;gt; Bindable (not intrinsic) rules&lt;/p&gt;
&lt;p&gt;(As far as I remember from Secrets &amp;amp; Lies) As per Bruce SChneider, security validation algorithms should preferably be public (e.g., security by obscurity is non desirable), and thus subject to wide scrutinity thus validation algorithms MAY be visible&lt;/p&gt;
&lt;p&gt;Possibly each layer will have its own technology nuances. A validation framework should preferably take into account how to replicate rules on the diverse technologies typically used (e.g., javascript, .NET Code, SQL CONSTRAINTS).&lt;/p&gt;
&lt;p&gt;2. Localization ==&amp;gt; (or not?) Propagating contexts &amp;amp; errors across layers&lt;/p&gt;
&lt;p&gt;Q: On a multi layer localizable architecture, Where do you localize error messages?&lt;/p&gt;
&lt;p&gt;A1: on the UI layer&lt;/p&gt;
&lt;p&gt;A2: on the layer that detects the error&lt;/p&gt;
&lt;p&gt;A3: either&lt;/p&gt;
&lt;p&gt;A1 ==&amp;gt; &lt;/p&gt;
&lt;p&gt;- The UI layer has to know all possible error messages&lt;/p&gt;
&lt;p&gt;- All information needed to build the error message should be propagated upwards on its native form (values, ranges, etc)&lt;/p&gt;
&lt;p&gt;A2 ==&amp;gt; &lt;/p&gt;
&lt;p&gt;- Localization context (language + regional settings) should be propagated downwards to enable proper construction of error messages&lt;/p&gt;
&lt;p&gt;- field / property / attribute names within error messages should be mapped at layer boundaries (e.g., MaxAge --&amp;gt; Maximum Age) OR &lt;/p&gt;
&lt;p&gt; &amp;nbsp;error messages should include placeholders for those names OR&lt;/p&gt;
&lt;p&gt; &amp;nbsp;field / property / attribute names are the same on all layers&lt;/p&gt;
&lt;p&gt;A3 = A1 + A2&lt;/p&gt;
&lt;p&gt; &amp;nbsp;Notes:&lt;/p&gt;
&lt;p&gt; &amp;nbsp;* Wouldn't it be neat to have a WS-RegionalSettings standard that specified header formats for defining desirable error message languages? (if there is one I would like to know)&lt;/p&gt;
&lt;p&gt;3. What error information to replicate&lt;/p&gt;
&lt;p&gt;- fields failing validation&lt;/p&gt;
&lt;p&gt;- values&lt;/p&gt;
&lt;p&gt;- valid domains: should these replicate? sometimes not (e.g., checkdigits), sometimes yes (e.g. min age)&lt;/p&gt;
&lt;p&gt;- &amp;quot;base language&amp;quot; error messages?&lt;/p&gt;
&lt;p&gt;4. Back to bindable rules&lt;/p&gt;
&lt;p&gt;If bindable is desirable, then dynamic binding is heaven :-) ==&amp;gt; management &amp;amp; configuration and MAY imply caching, repository strategies, etc&lt;/p&gt;
&lt;p&gt;5. Form Factor&lt;/p&gt;
&lt;p&gt;Although I don't know the language, this concept (on its non bindable form) soulds similar to the preconditions that I believe are available on Eifel. IMHO the parameter attribute based form factor does not provide a significant advantage over standard language constructs within the methods (unless we come up with some for to publish that information through some WS-Policy like mechanism ;-)&lt;/p&gt;
&lt;p&gt;As for the object properties the attribute version may compromise the bindable approach. &lt;/p&gt;
</description></item><item><title>Validators supplied in the VAB</title><link>http://blogs.msdn.com/tomholl/archive/2006/11/27/validation-application-block-revealed.aspx#1440313</link><pubDate>Wed, 10 Jan 2007 00:04:16 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1440313</guid><dc:creator>Tom Hollander's blog</dc:creator><description>&lt;p&gt;We're making great progress with the Validation Application Block in Enterprise Library 3.0, and one&lt;/p&gt;
</description></item><item><title>Enterprise library Januari CTP</title><link>http://blogs.msdn.com/tomholl/archive/2006/11/27/validation-application-block-revealed.aspx#1602775</link><pubDate>Mon, 05 Feb 2007 12:08:21 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1602775</guid><dc:creator>Blog - Ordina Development Centre Microsoft</dc:creator><description /></item><item><title>Validation Application Block y ASP.NET</title><link>http://blogs.msdn.com/tomholl/archive/2006/11/27/validation-application-block-revealed.aspx#1848682</link><pubDate>Sat, 10 Mar 2007 03:44:49 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1848682</guid><dc:creator>Tatis</dc:creator><description>&lt;p&gt;Una de las cosas que m&amp;amp;aacute;s me ha gustado del nuevo Validation Application Block es la integraci&amp;amp;oacute;n&lt;/p&gt;
</description></item><item><title>Considering a View's Get/Set Roles with MVP</title><link>http://blogs.msdn.com/tomholl/archive/2006/11/27/validation-application-block-revealed.aspx#1914093</link><pubDate>Mon, 19 Mar 2007 21:26:32 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1914093</guid><dc:creator>Billy McCafferty</dc:creator><description>&lt;p&gt;There are many ways to implement Model-View-Presenter; Supervising Controller and Passive View are just&lt;/p&gt;
</description></item><item><title>Just Released! Enterprise Library 3.0 - April 2007</title><link>http://blogs.msdn.com/tomholl/archive/2006/11/27/validation-application-block-revealed.aspx#2035571</link><pubDate>Fri, 06 Apr 2007 01:14:18 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:2035571</guid><dc:creator>Tom Hollander's blog</dc:creator><description>&lt;p&gt;Yes, it's finally here. The patterns &amp;amp;amp; practices team is pleased to announce the official release&lt;/p&gt;
</description></item><item><title>Enterprise Library 3.0 – April 2007 发布</title><link>http://blogs.msdn.com/tomholl/archive/2006/11/27/validation-application-block-revealed.aspx#2036220</link><pubDate>Fri, 06 Apr 2007 03:15:16 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:2036220</guid><dc:creator>neuhawk</dc:creator><description>&lt;p&gt;Enterprise Library 3.0 – April 2007 发布&lt;/p&gt;
</description></item><item><title>Enterprise Library 3.0 Released</title><link>http://blogs.msdn.com/tomholl/archive/2006/11/27/validation-application-block-revealed.aspx#2036397</link><pubDate>Fri, 06 Apr 2007 03:42:47 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:2036397</guid><dc:creator>Bashmohandes</dc:creator><description>&lt;p&gt;Enterprise Library 3.0 Released&lt;/p&gt;
</description></item><item><title>Just Released! Enterprise Library 3.0 - April 2007</title><link>http://blogs.msdn.com/tomholl/archive/2006/11/27/validation-application-block-revealed.aspx#2037937</link><pubDate>Fri, 06 Apr 2007 09:14:53 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:2037937</guid><dc:creator>Guy Burstein's Blog</dc:creator><description>&lt;p&gt;The patterns &amp;amp;amp; practices team has announced the official release of Enterprise Library 3.0 - April&lt;/p&gt;
</description></item><item><title>Enterprise Library 3.0 Released</title><link>http://blogs.msdn.com/tomholl/archive/2006/11/27/validation-application-block-revealed.aspx#2041237</link><pubDate>Fri, 06 Apr 2007 21:12:10 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:2041237</guid><dc:creator>Loser-X</dc:creator><description>&lt;p&gt;Most excellent. I have looked at Enterprise Library in the past, but never quite found a suitable project&lt;/p&gt;
</description></item><item><title>Enterprise Library 3.0 April 2007</title><link>http://blogs.msdn.com/tomholl/archive/2006/11/27/validation-application-block-revealed.aspx#2041877</link><pubDate>Fri, 06 Apr 2007 23:30:37 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:2041877</guid><dc:creator>Clic Compulsivo</dc:creator><description>&lt;p&gt;Overview The patterns &amp;amp;amp; practices Enterprise Library is a library of application blocks designed&lt;/p&gt;
</description></item><item><title>Enterprise Library 3.0 - Abril 2007 Liberado !!!</title><link>http://blogs.msdn.com/tomholl/archive/2006/11/27/validation-application-block-revealed.aspx#2054118</link><pubDate>Sun, 08 Apr 2007 19:47:41 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:2054118</guid><dc:creator>Tecnocrata Blog</dc:creator><description>&lt;p&gt;Despues de mucho esperaracion oficial del Enterprise Library 3.0 - April 2007 para.NET Framework 2.0 / 3.0. Punntos sobresalientes Si estuvieron tan atentos como yo los CTPs no habra muchas sorpres ...&lt;/p&gt;
</description></item><item><title>Enterprise Library 3.0 is Here!</title><link>http://blogs.msdn.com/tomholl/archive/2006/11/27/validation-application-block-revealed.aspx#2060670</link><pubDate>Mon, 09 Apr 2007 16:03:53 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:2060670</guid><dc:creator>JrzyShr Dev Guy</dc:creator><description>&lt;p&gt;EntLib 3.0 just dropped . Go get the bits here . For more details, see Tom Hollander's most excellent&lt;/p&gt;
</description></item><item><title>Enterprise Library 3.0 Released</title><link>http://blogs.msdn.com/tomholl/archive/2006/11/27/validation-application-block-revealed.aspx#2249888</link><pubDate>Mon, 23 Apr 2007 23:34:48 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:2249888</guid><dc:creator>Erics Blog</dc:creator><description>&lt;p&gt;While I was gone (three weeks in the US on vacation) pattern and practices have released Enterprise Library&lt;/p&gt;
</description></item><item><title>Skryté poklady v Enterpise Library 3.0</title><link>http://blogs.msdn.com/tomholl/archive/2006/11/27/validation-application-block-revealed.aspx#2748682</link><pubDate>Sun, 20 May 2007 13:16:10 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:2748682</guid><dc:creator>BonzBlog Michaela Juřka</dc:creator><description>&lt;p&gt;Když byla před měs&amp;#237;cem zveřejněna Enterprise Library 3.0, stěž&amp;#237; jsem tomu věnoval pozornost. Hmmm, co&lt;/p&gt;
</description></item><item><title>וואלידציה &amp; Validation</title><link>http://blogs.msdn.com/tomholl/archive/2006/11/27/validation-application-block-revealed.aspx#3765994</link><pubDate>Sun, 08 Jul 2007 21:45:07 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:3765994</guid><dc:creator>Ohad Aston - ASP.NET Blog</dc:creator><description>&lt;p&gt;האם לא מצאתם את עצמיכם אי פעם יושבים המון זמן על פקדי וואלידציה שונים ומשונים לכמה טפסים מסכנים (ולעתים&lt;/p&gt;
</description></item><item><title>New and Notable 129 </title><link>http://blogs.msdn.com/tomholl/archive/2006/11/27/validation-application-block-revealed.aspx#6739962</link><pubDate>Wed, 12 Dec 2007 02:46:02 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:6739962</guid><dc:creator>Sam Gentile</dc:creator><description>&lt;p&gt;Workflow/BPM/WCF/SOA David Chappell presents arguments both pro and con as to whether Microsoft qualifies&lt;/p&gt;
</description></item><item><title>וואלידציה &amp; Validation</title><link>http://blogs.msdn.com/tomholl/archive/2006/11/27/validation-application-block-revealed.aspx#8977324</link><pubDate>Mon, 06 Oct 2008 01:00:48 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8977324</guid><dc:creator>Ohad Aston - ASP.NET Blog</dc:creator><description>&lt;p&gt;האם לא מצאתם את עצמיכם אי פעם יושבים המון זמן על פקדי וואלידציה שונים ומשונים לכמה טפסים מסכנים (ולעתים&lt;/p&gt;
</description></item></channel></rss>