1

F# で非同期 http ハンドラーをコーディングするときに使用する適切なパターンを誰か教えてもらえますか?

実装IHttpAsyncHandlerする必要があり、そのインターフェイスにはBeginProcessRequestandが必要EndProcessRequestです。

戻りAsync.StartTaskますか?とをどのように処理state:objAsyncCallbackますか?

4

2 に答える 2

3

頭のてっぺんから:非同期ワークフローを使用してハンドラーを実装し、それを Async.AsBeginEnd で公開します

open System
open System.Web

type HttpAsyncHandler() = 

    let processRequestAsync (context : HttpContext) = async {
        // TODO: implement
        return()
        }

    let beginAction, endAction, _ = Async.AsBeginEnd(processRequestAsync)

    interface IHttpAsyncHandler with
        member this.BeginProcessRequest(context, callback, extraData) = beginAction(context, callback, extraData)
        member this.EndProcessRequest(iar) = endAction (iar)
        // other members omitted
于 2012-04-04T18:02:13.053 に答える
1

正確に何をしようとしているのですか?HttpMessageHandler可能であれば、からのとその同類を検討することをお勧めしますSystem.Net.Http。オーバーライドする必要があるのは

protected abstract Task<HttpResponseMessage> SendAsync(
    HttpRequestMessage request,
    CancellationToken cancellationToken);

メソッド、これは。で簡単async { ... } |> Async.StartAsTaskです。また、静的型付けにより、HTTPのさまざまな属性にアクセスしやすくなります。さまざまなサブクラスを使用すると、ASP.NET、WCF(セルフホスト)、またはOWINなどのサードパーティプラットフォームを介して実行できます。

于 2012-04-05T04:22:10.150 に答える