Good day.
I am currently designin the architecture for a new, rather large application. I am making it N-Layered with late-binding approach for plugins, dependency injection for data layer and so on.
The architecture could be summarized in DataBase -> DataLayer(s) -> Business Layer -> Application Layer(s) ------ All using a Common layer containing POCO classes, Facade interfaces and so on.
For business entity validation (POCO objects) I am using Microsoft Application Blocks.
A co-worker pointed out that the windows forms controls he will be using for the user interface have "validation" properties integrated, like a regular expression, etc.
I told him that we can't use those properties, as the whole validation must be set in the Business Layer and consumed from the application layer. Defining the validation rules in the application layer is not only a design error, but it can lead to poor mantenaibility of the application (duplicate rules, sync problems, etc).
He then asked why third-party companies make components like those if we cannot use the integrated validation properties. I guessed that those controls aren't made for N-Layered architectures, but more likely for small apps and RAD.
I wanted to ask what you guys think about it. Am I right, or I am missing something important?
Thanks.