This months Dr Dobbs has an article written by Bill Lewis (Insidious Tight Coupling) where he explains the good programming practice of interface programming. This should not be news to any developer with more than 6 months experience – or even graduated with a CS degree. What I am hear to preach is there should be a further abstraction when dealing with cooperative components the user interacts with. This abstraction I am referring to is the same one developed for Portal 5+, Lotus Expeditor 6.1 and the up and coming Lotus Notes 8. The concept is simple, make your GUI components act like a well defined interface using WSDL. This means if another component – or code for that matter – wants to interact with your component they only know about the interfaces exposed in the WSDL.
Why does this matter?
It matters because now we have given non-programmers a way to declaratively connect these components. They can use a wiring tool – like the one in Portal or the up and coming Composite Application Editor – to create these applications and get these components talking to each other. So we have not only implemented a good overall discipline but are giving that discipline to administrators and end users.
Take this basic scenario:
We have a date picker control that we know published a Date object when a day is selected. We can then wire that component to any other component that receives a Date object – like a weather report portlet, or a blog site. This now allows a normal person – not a God like developer – to take these components and create new contexts (applications). Think of this as a way for someone to create an interactive Portal where the components can drive each other for specific results.