非同期コントローラーと非同期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コントローラーですか?
ありがとう!