Risipa de key_press | Programare

Programare .Net | Tehnici de programare | Tutoriale | Lectii si exemple

Risipa de key_press | Programare - Programare .Net | Tehnici de programare | Tutoriale | Lectii si exemple

WCF – prima parte

     Comunicarea cu resursele serverului este un aspect foarte important pentru o aplicatie a unui dispozitiv mobil care este inclus intr-o arhitectura distribuita. Exista mai multe optiuni disponibile dezvoltatorului care doreste o comunicare eficienta intre server si dispozitiv:

Web Services mesaje SOAP transmise prin HTTP

Sockets – protocol particular TCP/IP,

Direct Database Access – conexiune “live” la SQL Server prin TCP/IP sau HTTP care foloseste ADO.NET pentru schimbul de date

Syncronization – sincronizarea intre SQL Server si clientul SQL Server CE prin RDA, Merge Replication sau ADO.Net Sync Services

Message Queuing – schimb asincron de mesaje de date cu MSMQ (Message Queuing Services) prin TCP/IP

Email/SMS

HTTP

WCF – platforma Microsoft pentru construirea aplicatiilor distribuite service-oriented.

     WCF inlocuieste tehnologii ca .NET Remoting, Enterprise Services si ASP.NET Web Services (ASMX). WCF ofera un model pentru construirea aplicatiilor care suporta aceleasi scenarii in cadrul sistemelor distribuite. De exemplu, in cadrul programarii web, avem scenarii care implica WCF pentru JSON (Javascript Object Notation) sau REST (Representatioal State Transfer).

     Windows Communication Foundation in .Net Framework apare in versiunea 3.0, odata cu lansarea Windows Vista (2007). Alaturi de WCF, sunt introduse si Windows Workflow Foundation (WF) si Windows Presentation Foundation (WPF).

     WCF a fost proiectat pentru interoperabilitatea cu alte tehnologii. Un client WCF se poate conecta prin proceduri remote la COM (Component Object Model), la aplicatii distribuite construite pe .Net Remoting sau cu servicii ASP.NET ,  REST.

     Pentru a putea folosi WCF, mai intai trebuie sa intelegem notiunile pe care acesta le foloseste.

ENDPOINT

     Un endpoint reprezinta o destinatie pentru mesaj. Facand analogie, acesta este similar unui receptor in cazul unei comunicatii telefonice. Cand un client comunica cu un serviciu, ambii au un endpoint.

WCFSchema

Pentru a crea un endpoint, avem nevoie de ABC (Adress, Binding, Contract).

A – ADRESS

     Address este definit printr-un URI. Exista mai multe tipuri de URI (HTTP, HTTPS – suportate in Compact Framework, TCP, Named Pipes, MSMQ). Fiecare este specific protocolului de transport compatibil WCF.  De la URI, clientul poate localiza serverul in retea si apoi serviciul din cadrul serverului.

B – BINDING

     Binding va stabili modul in care clientul va comunica cu serverul. Binding va descrie tot ce va contine mesajul transmis intre client si server. Binding-ul contine mai multe elemente, unele pentru securiate, codarea mesajului, transport, tranzactii. Unele sunt optionale, insa cele pentru codarea mesajului si transport sunt obligatorii.

     Desi exista 13 binding-uri predefinite in Compact Framework este suportat doar unul: basicHttpBinding. Acesta va permite servicii de Web si transport.

C – CONTRACT

     Contractul va furniza detaliile modului in care clientul va interactiona cu serviciul specific. Prin contract intelegem apelurile metodelor disponibile (service contracts), layout-ul structurilor de date (data contracts) si modul in care exceptiile sunt tratate (fault contracts – nu sunt suportate de Compact Framework).

wCFSchemaABC

     In cod, contractele sunt definite prin folosirea atributelor. Metodele sunt definite cu ajutorul unor atribute, ServiceContract si OperationContract.

    [ServiceContract]
    public interface IHello
    {
        [OperationContract]
        string SayHello(string name);

        [OperationContract]
        CompositeType GetDataUsingDataContract(CompositeType composite);
    }

     Atributul aplicat interfetei, ServiceContract, permite metodelor marcate cu OperationContract sa fie disponibile clientilor.

     Layoutul structurilor de date transmise este definit prin aplicarea altor atribute, DataContract si DataMember.

    [DataContract]
    public class CompositeType
    {
        bool boolValue = true;
        string stringValue = "Hello ";

        [DataMember]
        public bool BoolValue
        {
            get { return boolValue; }
            set { boolValue = value; }
        }

        [DataMember]
        public string StringValue
        {
            get { return stringValue; }
            set { stringValue = value; }
        }
    }

     Atributul DataContract identifica o clasa/structura care contine elemente de date. La fel ca in cazul “service contracts”, in “data contracts” folosim atributul DataMember pentru ca membri sa poate fi folositi.

     Pe scurt, cand ne referim la endpoint-ul unui WCF, avem:

Address (unde?), Binding (cum?), Contract (ce?).

     WCF este o buna alegerea in crearea de servicii care necesita o interoperabilitate mare.

     WCF ofera suport si pentru tehnologii mai vechi, de exemplu, Win32NamedPipes.

     In .Net Compact Framework, se pot crea doar clientii WCF si nu servicii WCF. Serviciile WCF trebuie gazduite pe sistemul desktop sau pe un server si pot fi apelate din dispozitivul Windows Mobile.

     De regula, pasii pentru construirea unui serviciu WCF incep de la proiectarea lui (definirea si implementare service contract), implemetare (endpoint, configurare binding, configurare comportament runtime), gazduire (initializare ServiceHost).

     In urmatorul articol, vom construi un serviciu Windows Communication Foundation (WCF) care va avea un client Windows Mobile.

Category: Uncategorized

Your email address will not be published. Required fields are marked *

*