WCF и обработка ошибок, лучшие практики - PullRequest
2 голосов
/ 13 декабря 2011

У меня есть теоретический вопрос.У меня есть веб-сервис WCF, который должен общаться с клиентами .NET и приложением iPhone.

В сервисе у меня есть много методов, таких как:

User Login(string email,string password); etc..

В случае успеха мне нужен сервисвернуть мне пользователя.В противном случае я хочу, чтобы служба выдавала мне пользовательское исключение, например EmailNotFoundException или PasswordNotCorrectException.

. Мне сказали, что это не лучший способ сделать это, особенно потому, что клиенты iPhone будут использовать эту службу.

Должен ли я изменить все мои методы, чтобы они возвращали WrapperEntity, который будет содержать Object и строку ошибки / объект исключения?

Это важно для меня, потому что иногда мне нужно знать, почемуоперация не удалась.Если Login вернет ноль, я буду знать, что операция не удалась, но я не буду знать почему.

Ответы [ 2 ]

6 голосов
/ 13 декабря 2011

Вы не должны использовать исключения в службе WCF для регулярного общения с потребителем вашей услуги.Вместо этого посмотрите на создание объекта ответа, который содержит все, что вам нужно знать об операции.

Что-то вроде:

public class LoginResponse
{
    public User User { get; set; }
    public string Message { get; set; }
    public bool IsSuccessful
    {
        get { return User != null; }
    }
}

, и тогда ваша операция входа будет выглядеть примерно так:

LoginResponse Login(string email, string password)
{ ... }

Таким образом, в случае сбоя операции вы можете поместить в ответ сообщение, объясняющее причину.

0 голосов
/ 13 декабря 2011

http://msdn.microsoft.com/en-us/library/ms752208.aspx - это «истинный» способ обработки ошибок WCF, но, вероятно, не подходит в вашем случае.Вы можете использовать коды ошибок или какой-то экземпляр класса Error в качестве поля ответа, которое в случае успеха равно нулю ...

...