Я разместил вопрос об использовании сообщений и исключений сбоев для обмена бизнес-правилами между службами.
У меня создалось впечатление, что перебрасывать это исключение по сети - это накладные расходы, но, учитывая, что это всего лишь сериализованное и десериализованное сообщение, на самом деле они были одним и тем же.
Но это заставило меня задуматься о генерации исключений в целом или, более конкретно, о создании исключений FaultExceptions.
Теперь в моих услугах, если я использую
throw new FaultException
сообщить простое бизнес-правило, такое как «Ваша учетная запись не активирована», Какие накладные расходы теперь возникают? Это те же накладные расходы, что и создание обычных исключений в .NET? или служба WCF обрабатывает их более эффективно с помощью контрактов на сбой.
Итак, в моем примере с пользователем, это оптимальный / предпочтительный способ написать мой метод обслуживания
вариант а
public void AuthenticateUser()
{
throw new FaultException("Your account has not been activated");
}
вариант б
public AutheticateDto AutheticateUser()
{
return new AutheticateDto() {
Success = false,
Message = "Your account has not been activated"};
}