Recall that when a root transactional object returns from a method in SetComplete state, it is telling the context wrapper to attempt to commit the transaction prior to returning control to the caller. Unfortunately, there is no way for the context wrapper to communicate the outcome of the transaction through this method call. Design with distribution in mind. Objects should not have their own user interface. Beware the COM singleton.
Interfaces are syntax and loose semantics.
Both are immutable. Prefer typed data to opaque data. Avoid connection points. Don't provide more than one implementation of the same interface on a single object. Dual interfaces are a hack.