First of all, we need to remember that a good architecture
will keep as much functionality in the business objects as possible. In order
to implement the interfaces that you need for data binding, you will have to
put certain functionality in the business objects, such as validation, error
messages, dirty state, and undoing edits to the object.
Even if you are not using data binding, it is generally good
practice to design your object this way anyways. This way, if you decide later
on to rip off your WinForms UI and replace it with a web front end, the
transition should (hopefully) be seamless.
Now, let us take a look at some of the important interfaces
that you will want to implement when using data binding.