dicembre 2008 Blog Posts

Muovendo i primi passi con Unity

Unity è il framework di IoC messo a disposizione dal team di Microsoft Pattern&Practices; in linea col pattern, unity permette di disaccopiare l'implementazione dal suo contratto, rimuovendo le dipendenze a compile time e risolvendole dinamicamente a run time. Cominciare ad usarlo non è per nulla complesso. Ci sono riuscito pure io ;) Cosa si può fare per cominciare: possiamo definire quali implementazioni concrete utilizzare in risposta alla richiesta di determinate interfacce di queste implementazioni definire il lifecycle tramite dei tipi particolari Vediamo un esempio di file di configurazione che...

TransactionScope ed Entity Framework

Io non so se sia dovuto a delle incompatibilità note, ma non a me :), se sia un problema della mia configuarazione che non riesco a capire, o qualsiasi altra cosa, ma quando uso il TransactionScope con EntityFramework ottengo sempre una eccezione con questo messaggio. System.Data.EntityException: The underlying provider failed on EnlistTransaction La mia configurazione attuale prevede due Windows Server 2003 sp2 uno con l'Application Server e l'altro col DB Sql Server 2005 entrambi col DTC attivato e con privilegi di accesso alla rete. Non ho approfondito ulteriormente la situazione perchè comunque questa...

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...

Transaction Scope e Connessioni

Transaction Scope gestisce le transazioni facendo un Enlist automatico di ogni connessione aperta all'interno dello Scope, alla transazione esistente, promuovendo quest'ultima a distribuita ogni volta che più di una connessione (anche verso lo stesso DB) viene aperta all'interno dello scope. Se si vuole gestire a mano (o escludere) l'Enlist di una connessione, è possibile specificare all'interno della CennectionString il parametro enlist=false che disabilita l'enlist automatico per la Connessione.   Matteo   Technorati Tag: Transaction Scope,Sql Server

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...