Я близок к концу нового приложения ASP.NET MVC, которое я разрабатывал, и я понял, что я не на 100% уверен в том, что должно происходить в моих методах контроллера.
Лучше ли для метода действия определить, какие службы / методы вызываются и в каком порядке, например:
AccountService _accountService;
BillingService _billingService;
InvoiceService _invoiceService;
...
public ActionResult UpgradeAccountPackage(PackageType packageType, int accountId)
{
_accountService.UpgradeAccountPackage(packageType, accountId);
_billingService.BillForAccountUpgrade(packageType, accountId);
_invoiceService.CreateAccountUpgradeInvoice(packageType, accountId);
}
Или лучше придерживаться одного вызова метода для одной службы и позволить этому методу вызывать другие службы / метод поддержки, который ему нужен?
public ActionResult UpgradeAccountPackage(PackageType packageType, int accountId)
{
// account service upgrades account then calls the BillingService and InvoicService
// methods called above within this method
_accountService.UpgradeAccountPackage(packageType, accountId);
}
Я склонялся к тому, чтобы перейти ко второму примеру, так как первоначально казалось, что первый метод каким-то образом представляет собой логику, и это означает, что метод acion должен был по сути знать, как работает процесс обновления учетной записи в моем приложении, что кажется плохой вещью.
Однако, теперь мое приложение почти завершено, оно имеет большой уровень обслуживания, и этот подход привел к тому, что почти все службы сильно зависят от множества других служб, и нет централизованного места, которое решает поток бизнес-транзакций, таких как упомянутый выше, вам нужно немного покопаться в методах обслуживания, чтобы обнаружить процессы.
Я рассматриваю рефакторинг для более близкого сходства со вторым способом, описанным выше, или введение нового уровня между контроллером и уровнем обслуживания, который контролирует поток процессов.
Люди склонны использовать первый или второй метод? Каковы мнения людей?