2009-03-26 3 views
6

이제 .NET Framework (.asmx 파일, WCF 제외)를 사용하여 WebServices를 둘러 보았습니다. 어떤 종류의 비즈니스 오류가 메서드 호출에서 발생했음을 사용자에게 알리는 것이 가장 좋은 방법인지 궁금합니다.웹 서비스에서의 오류 처리 모범 사례

내 작은 테스트 케이스 : 난 중앙 서버에 등록해야 프로브를 측정 한

. 각 프로브에는 다른 물리적 주소가 있어야합니다. 등록하려면, 그들은 (웹 서비스를 통해)를 호출해야합니다

[WebMethod] 
public void RegisterReadingStation(out Guid sessionId, Int64 physicalAddress) 

은 이제 서명이 돌에 설정되어 있지 않습니다 - 사실, 그게 내가 알아 내기 위해 노력하고있어입니다. :) 이미 찍은 실제 주소를 사용하여 자체 등록을 시도하는 중일 때 어떻게 든 프로브에 경고해야합니다.

  • 이 정보를 포함 SOAPException이 던져 :

    내가 볼때

    , 나는 몇 가지 가능성을 얻었다. 그러나 string :: 메시지는 프로그래밍 방식으로 검사하는 것이 쉽지 않습니다.
  • return 매개 변수 (또는 더 단순한 열거 형)로 일종의 value-class를 사용하십시오. 이 작업을 수행하면 서버/클라이언트의 클래스를 수동으로 serialize/deserialize해야한다고 생각합니다.

이것에 대한 의견이 있으십니까?

답변

1

나는 공통된 컨센서스가 사용자 정의 리턴 코드 (정수)를 사용한다고 생각한다. 서비스가 가능한 리턴 코드가 무엇인지 문서화하는 한 이것이 가능해야합니다.

+0

Eek, C 일로 돌아 가기. 이 접근법의 문제점은 매우 유연하지 않다는 것입니다. stacktrace 또는 메시지 또는 사용자 정의 오류 메시지를 추가 할 수 없습니다.이 쉽게 및 다중 호환 방법을 밖으로 될 볼 수 있습니다. – cwap

+0

나는 단순함의 측면에서 오류가있는 웹 서비스에 대한 감사를 느낀다. –

+0

이것이 최고 투표 결과가 아니지만이를 받아 들일 것입니다. 나는 "웹 ​​서비스가 사용하기 쉽도록해야한다"는 것을 좋아한다. 그래서 지금은 악이 붙어있다. :) – cwap

5

int 오류 코드와 문자열 errormessage를 포함하는 각 WebMethod에서 ResultSet이라는 작은 클래스를 반환합니다.

오류/성공 여부 및 문제가 발생할 경우 세부 정보를 쉽게 확인할 수 있습니다.

WebMethod에서 데이터를 반환해야하는 경우 데이터를 포함하도록 특정 ResultSet을 제공하기 위해 ResultSet에서 상속받습니다.

+0

그래, 그게 내가 향하고 있었어 :) – cwap

+0

하지만 잘 될 때 웹 서비스 함수는 employeeData 같은 객체를 반환해야 할 때 무엇을해야하고 오류가있을 때 오류 메시지를 반환해야합니다. 둘을 반환하는 방법 다른 시나리오에서 같은 기능의 다른 객체? –

+0

내가 한 것은 ResultSet에서 상속 한 EmployeeDataResultSet이라는 새로운 클래스를 만드는 것입니다. 그런 다음 EmployeeData 클래스 인 EmployeeDataResultSet에 Property를 추가했습니다. Bascially, Employee 데이터를 ResultSet에 캡슐화한다. – Moose