Discutendo di contratti, WSDL e Indigo
In questo weekend lungo (a Brescia il 15/02 è la festa del patrono, quindi abbiamo fatto il ponte) ho discusso via email con Marco a proposito di uno dei temi caldi del periodo: i contratti dei servizi SOA.
Ci sono diverse posizioni in campo:
queste sono solo alcune delle più autorevoli. Stimolato da Marco ad esprimere il mio parere, lo riassumo qui di seguito.
Secondo me il contratto non può essere formalizzato in un linguaggio legato ad una particolare piattaforma. WSDL è super partes mentre IDL, C#, Java Beans, ecc. non lo sono. Quindi per me i contratti non vanno scritti in C# o in Java o altro, ma in WSDL o in quello che seguirà a WSDL, ma pur sempre indipendente dalla piattaforma!
Quindi tutti devono conoscere e scrivere XML, XSD, SOAP, WSDL, ecc.? Perchè mai?! Forse tutti i programmatori conoscono i livelli ISO/OSI, IP, UDP e TCP? :-) Però quelli che conoscono tutti i livelli ISO/OSI o quelli che conoscono WSDL e XML e li sanno scrivere (ma soprattutto leggere) .... in media scrivono codice migliore di quelli che ignorano il funzionamento interno di ciò che usano, anche se non è una regola assoluta, ovviamente.
L’uomo quando si ammala si cura da solo o va da un dottore? Quando gli si guasta l’autovettura se la ripara da solo o la porta dal meccanico?
Il programmatore implementerà il proprio codice non curandosi dei dettagli (XML, TCP, Transazioni, XSD, SOA, ecc.) ma usufruendo solo di attributi o altro di simile che verrà inventato. Ed è giusto che sia così, la tecnologia deve semplificare il lavoro all'uomo e non complicarglielo!
Poi nei casi in cui si voglia avere il massimo (non parlo solo di prestazioni) dalla piattaforma ci vorrà pur sempre qualcuno che quei “dettagli” li conosce e sa dove mettere le mani per farli funzionare o farli migliorare, esattamente come il dottore cura il paziente e il meccanico ripara l'autovettura.