2017-11-23 15 views
0

私はSignalRでASP .NET MVCを使用しているライブ通知システムで作業しています。ASP .NET MVCとSignalRプッシュ通知クリーンアーキテクチャー

私のアプリは、このような三層ました:

enter image description here

すべての私のアプリの方法が既に構築されており、仕事と私は現在、SignalRを使用して通知システムを追加しているされています。

私が直面している問題は、通知するユーザーの配列、空の可能性のある配列(その操作で通知がオフになる可能性があるため)を返すための通知送信を暗示する可能性のあるすべてのメソッドを変更する必要があることです)。

SignalRハブはMVCレイヤーにインストールされているため、ビジネスロジックレイヤー(BAL)から呼び出すことはできません。私はSQL Dependenciesを使ってそれをきれいに解決できることを知っていますが、それは選択肢ではありません。

の例では、(擬似コード)のようになります。

AddComent(Comment){ 
NotificationHub notifHub; 
int error = BALComments.AddComment(Comment,UserArray); 
notifHub.notify(UserArray); 
return View(); 
} 

の質問はどのように変更することです

Controler.cs(通知なし)

AddComent(Comment){ 
int error = BALComments.AddComment(Comment); 
return View(); 
} 

Controler.cs(notificacions付)明示的にオプションのユーザー配列リストを返すように明示的に変更することなく、ビジネスロジックレイヤー内のすべての「顕著な」メソッド。

答えて

0

BALとMVCの間で何らかの種類の通信が必要です(おそらくオブザーバーパターン)。何かを検出できるBALのどのクラスが変更されても、イベントを観察しているものに「変更」する必要があります。基本的には、BALでイベントとデリゲートを作成し、MVCレイヤでイベント/フレーズに渡します。