2

WCF Image Upload Serviceを同期ではなく非同期にする方法を教えてください。私のSaveImage関数は、非同期の JavaScript 呼び出しから直接呼び出されます。

コントラクト (IImageWCFService.cs):

[ServiceContract(Namespace = "MyServices.org")]
public interface IImageWCFService
{
    [OperationContract(AsyncPattern = true)]    
    [WebInvoke(Method = "POST", ResponseFormat=WebMessageFormat.Json, UriTemplate="SaveImage")]
    void SaveImage(Stream stream);
} 

サービス (ImageWCFService.svc.cs) :

 public void SaveImage(Stream stream)
 {
     // long running task up manipulating the image
     // some lines of code contains image upload to Amazon S3 functions
 }

これは一方向の呼び出しである必要があるため、void を返します。ユーザーは関数から結果を取得したり、関数が成功したかどうかを取得したりする必要はありません。

現在、この WCF サービスが実行されると、メイン スレッドが消費されます。非同期で実行したい。推奨される方法は次を使用することです。

[OperationContract(AsyncPattern = true)] 

またはWCF のタスクベースの非同期パターン。

私は多くの記事を読みましたが、関数に実装する方法がまだ非常に混乱しています。イメージ アップロード機能の実装を示すコード例が必要です。

注:この質問のさまざまな非同期実装の違いに関する良い情報源- これを実装する最良の方法は、 WCF のタスクベースの非同期パターンを使用することです。

繰り返しますが、呼び出しは JavaScript から直接行われますが、必要に応じてサーバー側で WCF サービスを呼び出す保存サーバーの Web サービス (asmx) を作成しても問題ありませんが、すべてについて混乱しています。これ。

ありがとう。

4

0 に答える 0