2

緊急チケットを提供する科学者 (医療) のさまざまなグループがあるとします。共通プール (グループ) に緊急チケットが届いた場合、いつでも 1 人の科学者だけがチケットを受け取ることができますが、他の科学者には、この特定の人がチケットを処理していることを自動的に通知することができます。

注 : 1 人の担当者が、締め切りが異なる複数のチケットに取り組むことができます。

チケットが複雑すぎて解決できない場合は、チケットを受け取った人が同じグループまたは別のグループの他の人に渡すことができます。そのような場合、そのような引き渡しの理由は、他の人に直ちに伝播されるべきです。

極端に必要な場合は、単一チケットのタスクを分解してグループ間で分散できます。タスクが分割され、単一のチケットのグループ間で共有されている場合、チケットを共有している担当者は、新しいチケットを取得したり、他の既存のチケットで作業したりすることはできません (そうすることで、彼は共有に取り組んでいることが通知されます)チケット)。


私の質問は次のとおり
です。Observer パターンはサービスに通知するための最良の選択ですか、それともスムーズに処理するために他の設計パターンを使用できますか (自由にデッドロックします)。

4

2 に答える 2

3

必要なのはキューです。

実装方法に応じて、使用できます

  • System.Collections.Generic.Queue、単一スレッドのエンキューまたはデキューに役立ちます。同時アクセス用のロックで保護することもできます。
  • VS10 の同時キュー、複数のスレッドの書き込みと取得用
  • MSMQ のキューイング機能。分散設計を使用する場合に特に便利
  • SQL Server データベース、これも分散設計を使用する場合に興味深い

通知には、はい、pub/sub メカニズムが必要です。繰り返しますが、そこにはオプションがあります。

于 2009-08-20T19:19:34.007 に答える
2

Messaging / Queueing がぴったりだと思います

于 2009-08-20T19:10:41.420 に答える