0

サーバーとクライアントがあります。
クライアントはサーバー上でメソッドを呼び出し、それに応じてサーバーはディクショナリを準備してクライアントに送り返す必要があります。
この操作には時間がかかる場合があります。
非同期にする必要があります。手順と例を読みました。
ほとんどの場合、BeginXXX と EndXXX IAsyncResult です。しかし、サーバーがオブジェクトの辞書を返す必要がある場合。これを実装するにはどうすればよいですか?

コールバック デリゲートを送信するときに、クライアントの関数の 1 つの署名をデリゲートとして送信でき、サーバーが終了すると、適切な辞書データでデリゲートを呼び出すと考えました。

4

2 に答える 2

1

1) VS (またはSLSvcUtil ) にサービス参照を追加すると、Silverlight プロジェクトのイベントを含む便利なプロキシ コードが生成されます。必要に応じて、「サービス/サーバー エージェント」のコールバックのパターンを実装するために使用できます。このコードは、通常の .net アプリだけでなく、いくつかの変更を加えて使用できます。

2) VS for .Net プロジェクトは、非同期メソッドでプロキシを生成できます。SvcUtil -

3)実際に長時間実行される操作の場合、コールバック(+ いくつかのバインディング制限)で WCF サービスを使用できます。

于 2013-03-04T19:31:13.000 に答える
0

私があなたを正しい方法で理解しているなら、あなたはこれについて尋ねています(eLibraryプロジェクトに基づく): WCFサーバー側:

 EBooksLibraryEntities ebe = new EBooksLibraryEntities();    
 public List<Book> tabBooks()
    {
        return ebe.Books.ToList();
    }

クライアント側:

 ServiceReference1.Service1Client sr = new ServiceReference1.Service1Client();
    List<ServiceReference1.Book> llb = new List<ServiceReference1.Book>();
    private void GetBooksByAuthor()
    {
        sr.tabBooksByAuthorCompleted += new EventHandler<ServiceReference1.tabBooksByAuthorCompletedEventArgs>(sr_tabBooksByAuthorCompleted);
        sr.tabBooksByAuthorAsync();
    }
    void sr_tabBooksByAuthorCompleted(object sender, ServiceReference1.tabBooksByAuthorCompletedEventArgs e)
    {
        foreach (var item in e.Result)
        {
            yourList.Add(item);
        }
    }
于 2013-03-27T12:09:36.323 に答える