在F#中編寫異步http處理程序時,有人能告訴我一個很好的模式嗎?在F#中實現異步http處理程序的模式?
我必須實施IHttpAsyncHandler
,該接口需要BeginProcessRequest
和EndProcessRequest
。
我會返回Async.StartTask
?我如何處理state:obj
和AsyncCallback
?
在F#中編寫異步http處理程序時,有人能告訴我一個很好的模式嗎?在F#中實現異步http處理程序的模式?
我必須實施IHttpAsyncHandler
,該接口需要BeginProcessRequest
和EndProcessRequest
。
我會返回Async.StartTask
?我如何處理state:obj
和AsyncCallback
?
關閉我的頭頂:使用異步工作流執行處理,然後用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
將其暴露你到底做的,到底是什麼?如果你有能力,你可能需要考慮HttpMessageHandler
及其同類System.Net.Http
。你只需要覆蓋
protected abstract Task<HttpResponseMessage> SendAsync(
HttpRequestMessage request,
CancellationToken cancellationToken);
方法,這是很容易與async { ... } |> Async.StartAsTask
。通過靜態類型,您還可以更好地訪問HTTP的各種屬性。各種子類允許您通過ASP.NET,WCF(自主),甚至第三方平臺(如OWIN)運行。
我正在嘗試使用包含大量統計信息的JSON請求,解析它並將其附加到Azure中的blob。 – Henrik 2012-04-05 07:20:07
基本上我現在知道的唯一方法是在Azure中創建一個新的空的ASP.Net網站 - 否則我可以使用一個工作者角色?但是我怎麼用HttpMessageHandler來設置呢? – Henrik 2012-04-05 09:15:44
您應該可以在此處找到更多信息:http://blogs.msdn.com/b/uscloud/archive/2012/03/22/windows-azure-for-the-asp-net-developer-series.aspx 。 'HttpMessageHandler'只是最核心的成員,但你可以使用其他選項。 – 2012-04-10 03:08:23