2016-04-06 14 views
0

Derzeit verwende ich WCF für mein Projekt, um das Netzwerk zu erstellen. Ich würde jedoch gerne zu einer Netzwerkbibliothek wechseln, zum Beispiel Lidgren Network.Von WCF zu Netzwerkbibliothek wechseln

Da es WCF ist, verwendet es Schnittstellen, kann senden & empfangen Daten mit einer Methode, und Lidgren Network ist ein bisschen auf niedriger Ebene, die Sie brauchen, um Ihre Pakete zu erstellen und zu senden, was kein Problem ist.

Das Problem ist, dass ich keine Ideen habe, wie ich mit nur einer Methode senden und empfangen kann, wie mit WCF.

Lassen Sie uns sagen, dass ich einige Client-Code mit WCF bekam:

void SomeCode() 
{ 
    var status = wcfChannel.CheckUserId(id); 
    if (status) 
    { 
     // true 
     // do something 
    } 
    else 
    { 
     // false 
     // do something 
    } 
} 

Und mit Lidgren Netzwerk wäre:

void SomeCode() 
{ 
    var packet = new packet(...); 
    packet.Write(id); 
    var status = send2Server(packet); 
    if (status) 
    { 
     // true 
     // do something 
    } 
    else 
    { 
     // false 
     // do something 
    } 
} 

So, das 'send2Server' irgendwie umgesetzt werden sollten. Da es nur Pakete (?) In einer Schleife empfangen kann, habe ich keine Ideen. Nun, eins - ich kann einige Variablen in SomeCodes Klasse haben, und Client-Netzwerk-Empfangsschleife für Paketempfang würde diese Variablen in SomeCodes Klasse ändern. Außerdem müssten Sie etwas Verzögerung hinzufügen und diese Variablen weiter verwenden. Aber es sollte einen besseren Weg geben, dies zu implementieren.

+0

Die bessere Weg ist in der Regel SOAP (WCF), REST (Web API/'HttpClient') oder ein anderes Protokoll und zugehörige Bibliotheken. Warum möchten Sie WCF vermeiden? – Mitch

+0

Nun, hauptsächlich, weil WCF nicht mit Mono funktioniert. – slicy

+0

Das meiste von WCF wird in Mono unterstützt, siehe http://www.mono-project.com/docs/web/wcf/ – Mitch

Antwort

0

Okay, ich habe gerade bemerkt, dass Lidgren Netzwerk-Sync unterstützt:

// create, write data to packet and send it 
var packet = new packet(...); 
packet.Write(id); 
server.send2Server(packet); 

// this will block until a message arrives 
server.MessageReceivedEvent.WaitOne(); 

// msg is now received 
var msg = server.ReadMessage(); 
// process received packet below