1

カスタムのメッセージ指向プロトコルを Scala で実装する必要があるとします。クライアント/サーバー コードも実装する必要があります。

プロトコル メッセージの「ケース クラス」を次のように定義します。

特性メッセージ
case class Request1(...) extends Message
case class Response1(...) extends Message
ケースクラス Request2(...) extends Message
case class Response2(...) extends Message
... // その他のリクエスト/レスポンス

ここで、入力/出力ストリームとの間でメッセージを読み書きし、メッセージを処理する関数が必要です。

def read(in: InputStream): メッセージ = {...}

def write(msg: メッセージ、out: 出力ストリーム) {...}

def handle(msg:Message): メッセージ = msg マッチ {
  case req: Request1 = ... // Request1 を処理する
  case resp: Response1 = ... // Response1 を処理します
  ... // 他のすべてのメッセージ タイプのケース
}

うまくいくと思いますが、ソリューションを改善できるかどうか疑問に思います。どのように修正または改善しますか?

4

1 に答える 1

2

Akkaを見たことがありますか?

Akk を使用すると、分散アプリケーションの開発がはるかに簡単になり、入力ストリームと出力ストリームを手動で定義する必要がなくなりますホームページの「リモーティング」の例をご覧ください。

このアプローチの利点は、プロトコル自体に集中できることです。つまり、クライアント側の 1 つ (または複数) のアクターとサーバー側の 1 つ (または複数) のアクターの開発に集中できます。

Akka は、必要なすべての「低レベル」機能を提供し、メッセージの実際の送信と受信、マルチスレッドなどを処理する必要があります。車輪を再発明する必要はありません。Akka はよく知られているツールキットであるため、これにより、将来、他のユーザーがコードを簡単に保守できるようになります。

アクターがどのように機能するかの基本的な考え方を理解するには、この本の章を参照してください。ただし、Scala アクターについて説明していることに注意してください。Scala アクターは、その間に Akka アクターに置き換えられました。より深く掘り下げたい場合は、より最新のAkka Concurrencyをお勧めします。

于 2013-10-26T15:24:30.253 に答える