Wcf 是否为响应上下文提供服务

Wcf 是否为响应上下文提供服务,wcf,soa,Wcf,Soa,调用状态更改服务时,例如 void SaveCustomer(Customer customer) 可能会发生以下情况 参数无效 出现异常 授权不成功 违反了业务规则 一切都好 对于条件1-3,我认为服务应该返回一个适当的异常 对于#4,我还认为服务应该返回一个异常,但有些人认为它应该返回一个反映调用成功与否的对象(响应对象) 在我们的案例中,违反业务规则是最终用户选择替代操作的机会。我认为列出错误代码的自定义异常可以由客户端解析并本地化。响应对象也可以这样做,但使用的是更强类型的方式 对于响

调用状态更改服务时,例如

void SaveCustomer(Customer customer)
可能会发生以下情况

  • 参数无效
  • 出现异常
  • 授权不成功
  • 违反了业务规则
  • 一切都好
  • 对于条件1-3,我认为服务应该返回一个适当的异常 对于#4,我还认为服务应该返回一个异常,但有些人认为它应该返回一个反映调用成功与否的对象(响应对象)

    在我们的案例中,违反业务规则是最终用户选择替代操作的机会。我认为列出错误代码的自定义异常可以由客户端解析并本地化。响应对象也可以这样做,但使用的是更强类型的方式

    对于响应对象,我们需要提供一个备份堆栈到服务的路径(if(ok)等),并且我们不能依赖异常解除事务


    这两个选项中有一个是反模式的吗?

    还有第三种方法没有在您的列表中提到。这种方法称为预期异常。web服务中的请求-响应操作提供了三种消息类型的定义:

    • 输入=请求。只能为每个操作定义一次
    • 输出=成功响应。只能为每个操作定义一次
    • 故障=预期的不成功响应。您可以为每个操作定义零个或多个故障
    使用故障时,您会告诉客户机,由于某些明确定义的原因,操作可能会失败。例如,不完整的客户定义和客户机可以用与常见的意外SOAP错误不同的方式处理此错误

    在WCF中,预期故障通过
    FaultContract
    和generic
    FaultException
    处理。检查及其子章节,了解故障处理的介绍

    错误处理的实现主要取决于您。在操作只能部分成功的复杂场景中,返回自定义对象尤其有用,您必须报告成功和失败的部分