Я работаю над веб-сайтом, связанным с путешествиями, и вот моя высокоуровневая архитектура:
ASP.NET MVC 2 (Presentation Layer)
Services Layer
Repository Layer communicating with external J2EE Services
В настоящее время все мои слои поддерживают ТОЛЬКО синхронную связь, например:
//Pricing Controller...
public ActionResult GetRates()
{
//Contruct Pricing Request
//PricingRequest request = Contruct Pricing Request...;
PricingResponse response = _pricingService.GetComponentPricing(request);
//....
//...
return View(response);
}
//Pricing Service...
public PricingResponse GetComponentPricing(PricingRequest pricingRequest)
{
//Do Something...
PricingResponseDomainObject responseDomainObject = _pricingRepository.GetComponentPricing(pricingRequest.ConvertToPricingRequestDomainObject());
//Apply Business Rules and perform some action on response
//Convert DomainObjectResponse into ServiceObjectResponse...
return response(PricingResponse);
}
//Pricing Repository...
public PricingResponseDomainObject GetComponentPricing(PricingRequestDomainObject pricingRequest)
{
//Do Something...
//Call J2EE Service and Get Response
//Return Response
return response(PricingResponseDomainObject);
}
СейчасМне нужно изменить контроллер цен на AsyncController и преобразовать public ActionResult GetRates()
в асинхронное действие.
Какие изменения мне нужно внести в уровни Service & Repository для поддержки асинхронных операций?Нужно ли мне переписывать их полностью?
Редактировать: необходимо изменить контроллер на асинхронный
Для определенного сценария поиска мне нужно вызвать службу J2EE 1до 5 раз (независимые операции), объедините все ответы в один ответ и передайте его контроллеру, чтобы иметь возможность представить его пользователю.