私の最初の質問は長かったので、これを別の質問として頼んでいます。これは、俳優ベースのアプリケーションのアーキテクチャに関する別のものです。Scalaの俳優を使ったアプリケーションの実践II
アプリケーションを介してメッセージのパスを追跡する
のは、Javaコードの一部を見てみましょう:このコードで
public void deleteTrades(User user, Date date) {
PermissionSet ps = permissionService.findPermissions(user)
if (ps.hasPermission("delete")) {
Set<Trade> ts = peristence.findTrades(date);
reportService.sendCancelReports(ts);
positionService.updateWithDeletedTrades(ts);
}
}
私は4つの別々のコンポーネントや手順に必要なそれらの間の相互作用を持っていますdeleteTrades
は明確に定義されています。メソッドdeleteTrades
に完全に含まれています。
これをモデル化してActor
を使用し、4つのコンポーネントを4つの別個のアクタに置き換えると、プロシージャの内容をどのように追跡できますか?私は!?
演算子を使用して回避していた場合に特に、それは私がその後、などなどのコードをさらにメッセージを送るであろう私のPersistenceActor
にメッセージGetTradesAndDelete
を送信される、私のPermissionActor
にメッセージConditionalDelete
を送信するだろうと考えられます削除を処理するには、私のアプリケーションに散らばります。
これは、すべてのアクタが(メッセージを転送するために)他のすべてのアクタにハンドルを必要とすることも意味します。
私の前の質問と同様に、人々はこれをどのように処理しますか?あなたはこれをすべて追跡できる良いモデリングツールはありますか?人々は使用しますか!?
あまりに多くの成分をActor
に変換していますか?
Daniel - 「DeleteTradesPermissions」のクラス定義を教えてもらえますか?それはケースクラスですか(私はあなたがそれらをカレーすることができるか分からなかった)?あなた自身のエクストラクタを定義しましたか? –
さて、このコードは実際には機能しません。それは例です。私は部分的な適用を強制するために欠けている "_"があることを知っています - 私はそれがカリングで必要ではないと思っていました。しかし、私はそれが少し仕事で済むことをかなり確信しています。ここで、私は何かをした、私はそれを投稿します。 –