WCF

WCF, Proxy ed errore 407

Ho installato una serie di servizi in un ambiente di test, all'interno di una LAN che fa uso di un proxy per l'accesso ad internet. Dopo aver configurato il tutto, ho eseguito il client per verificare che l'applicazione funzionasse correttamente; il risultato è stato questo: "The remote server returned an unexpected response: (407) Proxy Authentication Required ( The ISA Server requires authorization to fulfill the request. Access to the Web Proxy service is denied.  )." Un po' stranito da questo errore, visto che consideravo che le chiamate ad indirizzi locali bypassassero (oddio che termine)...

WCF ed Eccezioni

I servizi esposti con WCF (come i Web Service in genere) non usano le eccezioni standard, ma devono usare dei messaggi particolare per notificare gli errori. Per rendere il sistema di notifica degli errori assimilabile alla gestione delle eccezioni standard il namespace System.ServiceModel mette a disposizione una eccezione, FaultException, che rappresenta un messagio fault di SOAP. FaultException mette a disposizione una serie di proprietà che permettono già di specificare una serire di informazioni relativi all'eccezione sollevata, come il FaultCode e la FaultReason. Nel caso si volesse scambiare una serie di informazioni aggiuntive, specifiche della nostra applicazione, ci viene...

WCF e scambio di dati: Entity vs DTO in salsa Entity Framework

Quando si progetta una applicazione basata su un Domain Model (nel mio caso un Entity Data Model di EF) il cui service layer dovrà essere esposto con servizi WCF ci si scontra con un dubbio: serializzo le Entity o mi creo dei DTO per spostare i dati da un layer (e spesso anche tier) all'altro? Questo dubbio ha una risposta scontata, che molti architetti ti darebbero senza chiedere nemmeno delucidazioni sul tipo di progetto: DTO forever. Ebbene anch'io sono arrivato a questa conclusione e ci sono voluto arrivare per gradi. Si perchè, da buon testardo che sono, ho voluto...

Metodi asincroni senza risposta in WCF

Un semplicissimo tip per WCF. Se si vuole definire un metodo su un servizio WCF che non ritorni un messaggio di risposta e sia quindi asincrono è sufficiente indicare il parametro IsOneWay=true all'interno dell'attributo OperationContract come nell'esempio: [ServiceContract] public interface IService { [OperationContract(IsOneWay=true)] void WakeUp(string userName); }   Matteo   Technorati Tag: WCF,Metodi Asincroni,OperationContractAttribute

WCF e DataContract: errore durante la serializzazione

Ho da poco eseguito un profondo refactoring su un mio progetto cambiando i DataContract scambiati dai miei servizi. Alcuni metodi di un mio servizio hanno cominciato ad avere un comportamento un po' bizzarro dopo questo cambiamento: in pratica, all'invocazione del metodo, veniva sollevata una eccezione con questo messaggio: An error occurred while receiving the HTTP response to 'http://.../Service'. This could be due to the service endpoint binding not using the HTTP protocol. This could also be due to an HTTP request context being aborted by the server (possibly due to the service shutting down). See server...

Deploy di servizi WCF su IIS

Da molte parti per il Web si legge che il deploy di servizi WCF su IIS si riduce ad un copia incolla di alcuni file, più un paio di modifiche banali da apportare al file di configurazione. Per la mia diretta esperienza posso confermare solo in parte: solo in parte perchè un prerequisito forte è che l'ambiente di deploy sia già perfettamente configurato. Cercherò quindi di spiegare passo a passo tutto ciò che ho dovuto fare partendo "dal pulito" per pubblicare i servizi WCF su un Windows Server 2003 (IIS 6), in modo di avere una procedura da seguire...

WCF e DataContract condivisi

Una brevissima introduzione: i contratti di servizi WCF scambiano dati col client tramite classi serializzabili. Gli argomenti e i valori di ritorno dei metodi dei servizi potranno quindi essere dei Value Type oppure delle classi decorate, per esempio, con gli attributi DataContract (classi) e DataMember (proprietà dei DataContract). Supponiamo di aver definito una base di servizi contenente due servizi che usano come DataContract alcune classi definite in un altro assembly che potrebbero essere le Entity di EF piuttosto che dei DTO creati ad hoc. Se aggiungiamo una Service Reference alla nostra applicazione, noteremo che all'interno del codice...

WCF e Overload dei metodi

Per chi come me è abituato a lavorare col pradigma OOP ed approccia per la prima volta ad una architettura a servizi, nel definire i suoi contratti, se ne avrà necessità, creerà vari Overload dei suoi metodi. Ebbene quando proverà ad esporre il suo servizio con WCF, si ritroverà un errore dovuto al fatto che l'Overload dei metodi non è supportato; questo perchè nel creare il file WSDL per la descrizione del servizio, gli OperationContract vengono identificati col loro nome, impedendo di fatto di avere due operation con lo stesso nome. WCF mette comunque a disposizione un meccanismo per...