wcf 클라이언트에게 호출 결과를 제공 할 때 더 나은 접근 방법은 무엇입니까?WCF 호출 결과
1. 정의 예외 투사 대상
public enum DefinedResult : short {
Success = 0,
TimeOut = 1,
ServerFailure = 2,
UserNotFount = 3,
Uknown = 4,
//etc.
}
[DataContract]
public class ServiceResult {
readonly DefinedResults dResult;
public ServiceResult(DefinedResult result) {
this.dResult = result;
}
[DataMember]
public bool IsSuccess
{
get {return this.dResult == DefinedResult.Success;}
}
}
//Client:
WcfClient client = new WcfClient();
ServiceResult result = client.DoWork();
2에 결과를 포장 :
[Serializable]
public UserNotFoundException: Exception {
public UserNotFoundException(string message): base(message) {}
}
//client:
WcfClient client = new WcfClient();
try {
result = client.DoWork();
}
catch(FaultException<ExceptionDetail> ex) {
switch(ex.Detail.Type)
{
case "MyCompany.Framework.Exceptions.UserNotFound":
//handle
break;
case "MyCompany.Framework.Exceptions.ServerError":
//handle
break;
}
}
이제, 클라이언트는 다른 .NET 처리 될 수 (서버 측) 또는 동일한 서비스가 자바 스크립트에 의해 호출 될 수 있으므로 질문 중 하나 (또는 더 나은 것이있을 수 있음)는 클라이언트에게 호출이 발생했는지 여부를 알리는 더 나은 방법일까요?
던진 경우 - 일반 .NET 예외뿐만 아니라 ** FaultException ** (또는 ** FaultException **)을 throw해야합니다. ** ** ** 상호 운용이 불가능합니다! –