wcfクライアントに呼び出し結果を提供する際のより良いアプローチは何でしょうか。オブジェクトのカスタム例外を投げるWCF呼び出し結果
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に結果をラッピング
1:今すぐ
[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プロセス(サーバ側することができ)、または同じサービスをJavaスクリプトから呼び出すことができます。したがって、これらのどれか(または何か良いことがあるかもしれません)という質問は、呼び出しに何が起こったかをクライアントに知らせるためのより良いアプローチですか?
投げる場合は、通常の.NET例外だけでなく** FaultException **(または** FaultException **)を投げるようにしてください。これらは**相互運用性がありません! –