Login

Italian English French German Spanish

Scambio dati tra sistemi, ci aiuta MessagePack

Quando la nostra applicazione deve dialogare all'interno di un ecosistema software, sorge il problema di come interfacciarsi con le altre applicazioni e come scambiare dati con esse. Una delle soluzioni può essere l'utilizzo del web service restful implementabile in tutti i maggiori linguaggi di programmazione e MessagePack (o MsgPack) come oggetto per la serializzazione. 

L'utilizzo di MsgPack è utile soprattutto quando dobbiamo scambiare file (es: immagini, pdf, archivi compressi, etc.), si occupa anche della compressione/decompressione dei dati lasciando a noi solo il compito di gestire ad alto livello i dati da scambiare.

Di seguito un esempio di utilizzo di MsgPack in un sistema dove un'applicazione Mono/.Net fornisce dati ad un'applicazione Php:

classe c# che rappresenta il tipo di dato da serializzare

public class ResponseData
{
    public long P01_Id { get; set; }
    public string P02_Title { get; set; }
    public byte[] P03_Image { get; set; }
}

 

classe c# addetta alla serializzazione

public partial class Default : System.Web.UI.Page
{

    protected void Page_Load(object sender, EventArgs e)
    {
        // init response content type (binary data)
        Response.ClearContent();
        Response.ContentType = "application/octet-stream";
        Response.BufferOutput = true;
        Response.AddHeader("Content-Type", "application/octet-stream");

        // Get Stream for response
        Stream out_stream = Response.OutputStream;

        // Create new instance of ResponseData
        var response_data = new ResponseData();

        // Here code for business logic .....
        response_data.P01_Id = ...
        response_data.P02_Title = ...
        response_data.P03_Image = ...

        // prepare serialization
        var serializer = MessagePackSerializer.Get<ResponseData>();

        // send pack to client
        serializer.Pack(out_stream, response_data);
        Response.End();
        return;
    }

}

 

classe php addetta alla deserializzazione

<?php

/**
 * Response data management
 */
class ResponseData
{
    public $Id = null;
    public $Title = null;
    public $Image = null;

    
    /**
     * Deserialization
     */
    function Parse($in_data)
    {
        $resp_data = msgpack_unpack($in_data);
        
        $this->Id = $resp_data[0];
        $this->Title = $resp_data[1];
        $this->Image = $resp_data[2];
    }
}

 

 

 

 

 

Aggiungi commento


Codice di sicurezza
Aggiorna

LegetøjBabytilbehørLegetøj og Børnetøj