Teraz bawię się przy użyciu WebServices, korzystając ze środowiska .NET (pliki .asmx, nie WCF). Zastanawiam się, jaka jest najlepsza praktyka, aby poinformować użytkownika, że w wywołaniu metody wystąpił błąd biznesowy.Najlepsze praktyki dotyczące obsługi błędów w serwisie WWW
Mój mały test-case:
mam sondy, które muszą zarejestrować się w centralnym serwerze pomiaru. Każda sonda powinna mieć inny adres fizyczny. Aby się zarejestrować, należy nazywają (poprzez serwis WWW):
[WebMethod]
public void RegisterReadingStation(out Guid sessionId, Int64 physicalAddress)
Teraz podpis nie jest ustawione w kamieniu - faktycznie, to co staram się wymyślić. :) Muszę jakoś zaalarmować sondę, jeśli próbuje się zarejestrować przy użyciu fizycznego adresu, który już jest zajęty.
Tak jak ja to widzę, mam kilka możliwości:
- rzucać SoapException zawierającą informacje. Jednak wiadomość typu string :: message nie jest tak łatwa do automatyzacji.
- Użyj pewnego rodzaju klasy wartości jako parametru powrotu (lub jeszcze prostszego, wyliczenia). Jeśli to zrobię, wydaje mi się, że musiałem ręcznie serializować/deserializować klasę na serwerze/kliencie?
Jakieś przemyślenia na ten temat?
Eek, powrót do C-dni. Problem z tym podejściem polega na tym, że nie jest zbyt elastyczny. Nie można dodawać niestandardowych komunikatów o błędach, takich jak komunikat stacktrace lub wiadomość, lub ... Widzę, że byłby to łatwy i kompatybilny sposób. – cwap
Mam nabyte uznanie dla usług internetowych, które zbłądzą w stronę prostoty. –
Chociaż nie jest to najwyższa głosowana odpowiedź, zaakceptuję ją. Podoba mi się aspekt "Webservices powinien być prosty w użyciu", więc to na co ja się teraz bierzę :) – cwap