Automatizzare il deploy di un'applicazione basata su BizTalk

Chi lavora con BizTalk sa bene quanto può essere lungo e complicato portare sui server di produzione un'applicazione anche solo mediamente complessa.

Scott Colestook ha pubblicato un tools (Deployment Framework for BizTalk) basato su Nant che automatizza questo processo.

All'inizio non è stato semplicissimo capire i meccanismi di personalizzazione, ma una volta che ho preso confidenza con il tool, sono stato in grado di generare dei pacchetti autoinstallanti veramente potenti.

Provare per credere :-D

http://www.traceofthought.net/

 

Technorati Tags:

Serializzazione e Deserializzazione

Lavorando ad un progetto che utilizza BizTalk mi sono trovato spesso a lavorare con messaggi XML ed ho avuto quindi la necessità di effettuare serializzazione e deserializzazione dei messaggi direttamente in memoria senza passare per file XML.

Per quanto riguarda la deserializzazione è abbastanza semplice visto che mi arriva il messaggio già all'interno di un XmlDocument è sufficiente utilizzare il metodo Deserialize della classe XmlSerializer:


private MyClass MyClassDeserialize(XmlDocument xmlMyClass)
{
        XmlSerializer serialize = new XmlSerializer(typeof(MyClass));
        XmlNodeReader nr = new XmlNodeReader(xmlMyClass);
        return (MyClass)serialize.Deserialize(nr);
}

Per la serializzazione il discorso è invece un po' più complesso in quanto la serializzazione deve avvenire in memoria così come la creazione dell'XmlDocument.
Ho pensato di effettuare la serializzazione della classe all'interno di un MemoryStream, copiare il contenuto del MemoryStream in un array di byte e trasformare questo array di byte in un Xml tramite il metodo GetString della classe ASCIIEncoding.
Sembra un po' macchinoso ma funziona correttamente e mantiene delle performance discrete.


private XmlDocument MyClassSerialize(MyClass myC)
{
        // istanzia il serializzatore
        XmlSerializer serialize = new XmlSerializer(typeof(MyClass));
        // istanzia l'xmldocument che verrà restituito
        XmlDocument xmlMyClass = new XmlDocument();
        // istanzia il memory-stream in cui deserializzare l'xml
        using( MemoryStream ms = new MemoryStream() )
       {
               // deserializza la classe all'interno del memory stream
               serialize.Serialize(ms, myC);
               ms.Position = 0;
               // instanzia un array di byte per copiare il contenuto del memorystream
               byte[] b = new byte[ms.Length];
               ms.Read(b, 0, (int)ms.Length);
        }
        // carica nel xmldocument il contenuto dell'array di byte
        xmlMyClass.LoadXml(Encoding.ASCII.GetString(b));

        return xmlMyClass;
}

Technorati Tags: ,

Primo Post

Questo primo post vuole essere un saluto a tutta la comunità, vi seguo da diverso tempo ma solo ora mi sono deciso ad unirmi a voi in modo attivo.

Non sono ancora sicuro degli argomenti che tratterò, ma visto che in questo periodo sto finendo la preparazione per la certificazione MCAD, magari cercherò di condividere esperienze come già fatto da altri blogger.

«agosto»
domlunmarmergiovensab
31123456
78910111213
14151617181920
21222324252627
28293031123
45678910