向呼叫結果提供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處理(服務器側)或者相同的服務可以被java腳本調用,因此這個問題 - 哪一個(或者可能有更好的方法)是讓客戶知道該調用發生了什麼的更好方法?
如果拋出 - 確保拋出一個** FaultException **(或** FaultException **) - 不只是一個常規的.NET異常 - 這些都是**不可**互操作! –
2011-01-19 20:48:48