株式会社Diarkis

トップ > 技術ブログ > DiarkisでサーバーレスRPCを実装する

DiarkisでサーバーレスRPCを実装する

DiarkisのC#クライアントは、RPCクラスを提供しており、これを用いることでサーバ側のロジックを書かずに、クライアント間のRPCを実装することができます。

RPCとは?

RPC(Remote Procedure Call)とは、遠隔地にあるコンピュータが、あたかも通常の手続きのように計算処理を呼び出して実行することができる技術のこと。一般的には、クライアントからサーバーへのアプリケーションに用いられます。

サーバーレスなRPCが求められる理由

サーバー機能に使えるリソースが限られていたり、サーバーサイドエンジニアがいない場合、クライアント側のみで機能を開発する必要があるわけですが、DiarkisのRPCクラスを使用することで、サーバー側のロジックを一切書くことなく、RPCを必要とする機能を実装できます。

実装例

DiarkisのRPCクラスは、Room モジュールをRPCの通信ブローカーとして使用します。

RPCクラスのセットアップ

Diarkis.Modules.RPC rpc = new Diarkis.Modules.RPC(room);

RCP クラスは Room クラスのインスタンスを引数として代入して使います。

Room クラスについてはこちらをご参照ください。

RPCメソッドの登録

特定のRPCロジックを実行するためには、RPCロジックを実装するメソッドを登録する必要があります。

// rpcID is used to call the associated method HelloWorld
int rpcID = 1;
bool registered = rpc.Register(rpcID, HelloWorld);

private void HelloWorld(byte[] msg)
{
    // Do something amazing here
}

RPCの呼び出し方

以下の例では、すべてのクライアントに対してRPCを呼び出します。

// For UDP client, reliable true means RUDP transmission
bool reliable = true;
bool called = rpc.RPCAll(rpcID, Encoding.UTF8.GetBytes("Hello World"), reliable);

以下の例では、選択したクライアントに対してRPCを呼び出します。

List<string> clientIDs = new List<string>();
clientIDs.Add(clientOneID);
// For UDP client, reliable true means RUDP transmission
bool reliable = true;
bool called = rpc.RPCMany(rpcID, clientIDs, Encoding.UTF8.GetBytes("Hello World"), reliable);

注: ブール値 called はRPCが呼び出されたことを示すものですが、これはリモートクライアントで実行されたことを意味するものではありません。

大規模マルチユーザー間通信をDiarkisが実現します

お問い合わせ
このエントリーをはてなブックマークに追加

この記事もおすすめ

Diarkisをもっと知りたい、採用を検討したい場合は以下よりお問い合わせください

お問い合わせ 資料請求
PAGE TOP