我困惑我是如何应退回错误的客户使用的肥皂。

我有一个wcf服务,但是我不知道是什么技术的客户使用,所以我想坚持到肥皂的规范。

我已经阅读、错误的消息似乎是最好的方式来处理这个问题。

我可以看到我的服务具有许多不同的可能的缺点:

  • 空\预期的数据错误。
  • 数据的格式错误的(即:db只允许3chars)
  • 数据范围的错误"客户已经存在","无法处理您的请求"的种类型的错误

这是否适当,以创建一个新的对象的每一个这些故障,并投掷作为这样的:

FaultException<NullFault>(nf);  
FaultException<InvalidDataFault>(idf);  
FaultException<ArguementFault>(af);  
FaultException<RangeFault>(rf);  

客户是通过在大对象的许多属性,几乎每一个方法 (即:客户、秩序、等等)。

这将是适当的方式处理错误和送回来的客户?

它看起来的地方需要添加的每一个故障的属性上的方法。

即:

[OperationContract]  
[FaultContract(typeof(NullFault))]  
[FaultContract(typeof(InvalidDataFault))]  
[FaultContract(typeof(ArguementFault))]  
[FaultContract(typeof(RangeFault))]  
void CreateCustomer(Customer customer);  

此外,关于什么的一个GenericFault?你会如何处理业务规则的错误?即:客户已经存在的,太多的行项目,不要船到该区域,支付方法不被接受,等等?

请让我知道,如果这种方法是适当的,或者如果还有另外一个接受的解决方案和你会如何处理该业务的规则'的情况。

有帮助吗?

解决方案

返回故障是正确的方式做到这一点在一般性的,但是你也应该问问你自己什么的客户程序要做的信息返回故障。如果客户只需要知道那个故障然后发生了所有你需要的是一个单一故障。那个故障可能包括信息的文本的客户可能显示对其用户。

如果客户需要采取不同的行动基于它是否是一个NullFault或RangeFault,那么这就是当你需要单独的故障。但是,如果没有区别之间一种和另一种,然后拯救自己和自己的客户程序的一些时间和精力,只界定一个单一故障。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top