Contract-First or Code-First Design - Part 5
This is the fifth and final of a multi-part series on Web services, in which our hero Ted asserts: “You cannot try to force XML into a “type system” through XSD!” The dynamic duo discusses C++ and its adaptation to Contract-First methods. Ted ends with a paean to messaging.
http://tssblog.techtarget.com/index.php/contract-first-or-code-first-design-part-5/
April 23rd, 2007 at 1:38 am
Many of these issues that you raise are equally valid for ORM systems. The standard development approach we have used on project was to create the database DDL from Java Class files using the ORM (Hibernate) toolkit. The problem is that the database tables are effectively another interface to both reports (which run off straight SQL) and data migration (which populates the underlying tables directly). Using the standard tools Hbm2DDL produces terrible database structures which are poorly performant. Abstracting the developer from the database - and shoehorning Java class hierarchies into relational structures does not work on its own - and it is difficult to clean up the database structure as you cannot change the database structures directly only through class and mapping changes. And don’t even get me started on handling database upgrades. In the end - there is no substitute to having an experienced data modeller producing a database designed for performance and ease of use.
April 24th, 2007 at 2:04 am
In distributed systems the issue is worse than for ORM, though, because one seldom control all the other end-points. And even in the case where one does, it can still remain too onerous to upgrade production systems.
April 24th, 2007 at 10:47 am
Ted’s last comment is very insightful :
“and go back to the world’s original loosely-coupled technology, that of message-passing. I have always avoided the WDSL contract issues and just passed messages( usually in XML that represents an expression of some aspect of business information that needs to be shared ) Let the consumming applications worry about extracting the information that they need.