0

DB(SQL Server)からのさまざまなタイプの注文を表示するさまざまなセクションを持つビューがあります。ここで、Android アプリケーションから新しい注文が送信されるたびに、更新された情報でビューを更新する必要があります。以下にコード スニペットを示します。

ビューモデル:

public class KitchenViewModel
{
    public List<Orders> DisplayOrders { get; set; }
    public List<Orders> PreparedOrders { get; set; }
    public List<OrderItem> ProgressItems { get; set; }
    public List<OrderItem> QueuedItems { get; set; }
    public int DisplayOrdCount { get; set; }
    public int PreparedOrdCount { get; set; }
    public int QueuedOrdCount { get; set; }
}

コントローラ:

public ActionResult KitchenOrder()
{
    KitchenModel kitchenInstance = new KitchenModel();

    List<Orders> orders = kitchenInstance.GetProgOrdersList();
    List<OrderItem> progressItems = kitchenInstance.GetItemProgress();
    List<OrderItem> queuedItems = kitchenInstance.GetItemQueued(); 
    List<Orders> prepOrders = kitchenInstance.GetPrepOrdersList();
    List<Orders> queuedOrders = kitchenInstance.GetQueuedOrdersList();
    KitchenViewModel viewModel = new KitchenViewModel();
    viewModel.PreparedOrders = prepOrders;
    viewModel.ProgressItems = progressItems;
    viewModel.DisplayOrders = orders;
    viewModel.QueuedItems = queuedItems;
    viewModel.DisplayOrdCount = orders.Count;
    viewModel.PreparedOrdCount = prepOrders.Count;
    viewModel.QueuedOrdCount = queuedOrders.Count;
    return View(viewModel);
}

今のところ、15秒ごとにビューを自動更新していますが、これは完全に機能しています。ただし、新しい注文が Android アプリケーションから送信され、注文が DB に挿入された場合にのみ、ビューを更新する必要があります。新しい注文が送信されると、PreparedOrders、Progressitems、DisplayOrders の値が変更されるため、再度取得する必要があります。オブザーバー パターンとパブリッシャー/サブスクライバー メソッドに関連する多くの投稿/チュートリアルを読みましたが、最適な明確なソリューションを取得できませんでした。誰かが役立つ可能性のあるシナリオで使用するための関連するポインター/チュートリアルを提供してください。これは私の最初のプロジェクトであり、まったくの初心者であるため、どのように進めればよいか非常に混乱しています。

4

1 に答える 1

2

したがって、他のクライアントが変更したため、ベースで何かが変更されたときに発生するイベントでサイトを更新する必要がある場合は、PUSH ベースのアーキテクチャが必要であり、現在のように PULL ベースではありません (タイマー経過時のリクエスト)。

この目的のために、さまざまな最新の通信メカニズムを実装するSignalRを使用できます。基本的な考え方は、クライアントがサイトにアクセスすると、そのブラウザを指す永続的な接続が作成され、通知の瞬間に、利用可能なすべてのクライアントをロールオーバーして通知することです。クライアント側では、当然のことながら、イベントは で処理されますjavascript

このテクノロジにはブラウザーのバージョン管理全体に制限があることに注意してください。ドキュメントを参照して、サポートされているブラウザーのバージョン セットが要件を満たしているかどうかを確認してください。

SignalR2 のサポートされているプラ​​ットフォーム リストへのリンクは次のとおりです。サポートされているプラ​​ットフォーム

于 2013-11-05T13:51:55.413 に答える