Quello che segue è l'esempio di codice proposto da David Chappell nella presentazione delle caratteristiche di Indigo durante la giornata di ieri all'Architect Day 2005.
using System.ServiceModel;
[ServiceContract]
class Calculator
{
[OperationContract]
private int Add(int a, int b)
{
return a + b;
}
[OperationContract]
public int Subtract(int a, int b)
{
return a - b;
}
public int Multiply(int a, int b)
{
return a * b;
}
}
Di fatto quello che si nota nel codice proposto è l'associazione dell'attributo OperationContract ad un metodo privato della classe che funge da servizio. Questa cosa testimonia il disaccoppiamento tra ServiceContract e interfaccia di classe, che riprende la necessità di diversificare il concetto di servizio da quello di oggetto.
In altre parole una classe che funge da servizio viene marcata con l'attributo ServiceContract ed i metodi esposti dal servizio vengono marcati con l'attributo ContractOperation indipendentemente che siano private o public. Questo perchè il comportamento del servizio non deve essere necessariamente uguale a quello dell'oggetto. Servizio e oggetto sono due astrazioni diverse e vanno trattate come tali, ovvero ognuna è caratterizzata da un contratto indipendente dall'altro. Proprio per questo motivo David parlava addirittura del fatto che probabilmente tutti i metodi esposti da un servizio dovrebbero essere private!!!
Un oggetto infatti espone un contratto che descrive il suo comportamento nell'ambito del contesto applicativo in cui l'oggetto stesso è attivo, ovvero i metodi che possono essere chiamati nell'ambito dell'applicazione da altri oggetti. In questo caso si definisce come public ciò che può essere richiamato e come private ciò che deve essere mascherato.
Parallelamente un servizio espone a sua volta un contratto descritto nel WSDL che è rappresentato dall'insieme dei metodi accessibili. Questo contratto non necessariamente deve essere coincidente con il contratto relativo all'oggetto. Ecco allora che si usano gli attributi per dire quali metodi devono essere esposti dal servizio.
Se sulle prime sono rimasto un attimo disorientato, una volta capiti i concetti e le differenze tra i due ambiti e le due astrazioni, ho colto l'importanza di questa cosa.
A questo punto direi che è cosa buona e giusta! :)
nostromo wrote:
quasi tutte belle
quasi tutte?
cosa non ti piace?
non mi piace il fatto che già dormo poco per conoscere al meglio .net 1.1 per il 2.0 dovro rinunciare pure a giocare mannaccia :) per stare al passo con avalon indigo,
bhe mi rimane solo una cosa a cui rinunciare...esclundendo il piacere della tavola :)....meglio soprassedere :)
ciao marco
Modificato da nostromo il 23 marzo 2005 14.02 -
Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.




Stampa
Download 
10annidi.ASPItalia.com: iscriviti alla competizione e vinci fantastici premi ogni mese!

veramente ineteressante, mentre leggevo non capivo, poi ho acchiappato il concetto e devo dire che mi piace, le novità in arrivo sono molte, e quasi tutte belle
ciao marco
Continua »»» | Rispondi »»»