2016-04-06 70 views
0

現在、WCFを使用してプロジェクトをネットワーク化しています。しかし、私はいくつかのネットワークライブラリLidgren Networkに切り替えたいと思っています。WCFからネットワークライブラリへの切り替え

WCFなので、インターフェイスを使用して、&のデータを1つの方法で送信できます.Lidgren Networkは、パケットをビルドして送信する必要がありますが、問題はありません。

問題は、私にはWCFのように1つの方法で送受信できる方法がないことです。

はのは、私はWCFといくつかのクライアントコードを得たとしましょう:

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

そしてlidgrenネットワークとは、次のようになります。

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

、 'send2Serverは' 何とか実施されるべきであるということ。それはループでパケットのみ(?)を受け取ることができるので、私は考えがありません。 まあ、私はSomeCodeのクラスでいくつかの変数を持つことができ、パケット受信時のクライアントネットワーク受信ループはSomeCodeのクラスでこれらの変数を変更します。また、遅延を追加し、これらの変数を使用してさらに使用する必要があります。 しかし、これを実装するより良い方法があるはずです。

+0

より良い方法は、通常、SOAP(WCF)、REST(ウェブAPI/'HttpClient')またはいくつかの他のプロトコルとライブラリを伴うされていること。なぜあなたはWCFを避けたいのですか? – Mitch

+0

主にWCFがMonoで動作しないためです。 – slicy

+0

ほとんどのWCFはMonoでサポートされています。http://www.mono-project.com/docs/web/wcf/ – Mitch

答えて

0

さて、私はちょうどLidgrenネットワークの同期をサポートしていることに気づい:

// 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 
関連する問題