1

非同期コントローラーと非同期wcfサービスをいつ使用するかを誰かが説明できますか?スレッドの使用法などのように?私の非同期コントローラーは次のようになります

 public class EventController : AsyncController
{
    [HttpPost]
    public void RecordAsync(EventData eventData)
    {
        AsyncManager.OutstandingOperations.Increment();
        Debug.WriteLine(string.Empty);
        Debug.WriteLine("****** Writing to database -- n:{0} l:{1} ******", eventData.Name, eventData.Location);
        new Thread(() =>
        {
            AsyncManager.Parameters["eventData"] = eventData;
            AsyncManager.OutstandingOperations.Decrement();
        }).Start();
    }

    public ActionResult RecordCompleted(EventData eventData)
    {
        Debug.WriteLine("****** Complete -- n:{0} l:{1} ******", eventData.Name, eventData.Location);
        Debug.WriteLine(string.Empty);
        return new EmptyResult();
    }
}

vs私のWCFサービス

[ServiceBehavior(Namespace = ServiceConstants.Namespace)]
public class EventCaptureService: IEventCaptureService
{
    public EventCaptureInfo EventCaptureInfo { get; set; }

    public IAsyncResult BeginAddEventInfo(EventCaptureInfo eventInfo, AsyncCallback wcfCallback, object asyncState)
    {
        this.EventCaptureInfo = eventInfo;
        var task = Task.Factory.StartNew(this.PersistEventInfo, asyncState);
        return task.ContinueWith(res => wcfCallback(task));
    }

    public void EndAddEventInfo(IAsyncResult result)
    {
        Debug.WriteLine("Task Completed");
    }

    private void PersistEventInfo(object state)
    {
        Debug.WriteLine("Foo:{0}", new object[]{ EventCaptureInfo.Foo});
    }

}

WCFサービスはタスクを使用しますが、コントローラーはスレッドを使用することに注意してください。私はスレッドとその仕組みについてほとんど知りません。私は、これらのうちどれがより効率的で、私のサーバーを爆撃しないのだろうかと思っていました。全体的な目標は、Webアプリでいくつかのアクティビティをキャプチャし、コントローラーまたはサービス(どちらも別のドメインにあります)を呼び出すことです。どちらがより良いアプローチであるかが優れています。本当に非同期なのはどれですか?それらは同じスレッドを使用していますか?ヘルプ、ヒント、トリック、リンクなどは常にありがたいです。私の基本的な質問は、非同期WCFサービスまたは非同期MVCコントローラーですか?

ありがとう!

4

0 に答える 0