我有一个
WPF客户端,可以调用2个WCF服务.
一个服务仅用于查询,一个服务用于命令(CQS pattern).
我该如何调用命令服务?
我在某处读到命令服务中的所有操作都必须是’One-Way’,
因为他们不应该返回任何值.如果出现问题 – 操作应该向客户端抛出’FaultException’.
但如果命令都是单向的 – 我在客户端做什么?
假设我在WPF客户端中有一个“AddProduct”窗口,我输入信息并按“保存”.
我现在在服务中调用’AddProduct(Product)’,但是:
>它应关闭窗户吗?
>它应该等待10秒钟,看看是否有任何FaultException?
>操作不应该是“单向”吗?如果是这样 – 命令服务中的所有操作是否应该返回某些类型的通用’Result’对象,其中’succeeded’或’failed’?
>如果第3部分为“是” – 我是否应该在一个单独的线程中调用该服务并“禁用”窗口上的所有控件,直到我从服务中获得响应?
谢谢.
最佳答案 我想说选项3是要走的路,但是你可能不需要通用的Result对象来向客户端传达错误.您可能知道,SOAP消息中没有序列化异常,因此您不会在客户端获得任何常见的.NET异常.另一方面,您仍然可以通过在客户端上捕获FaultException来利用SOAP Faults.因此,如果没有在客户端上发现异常,那么一切都进展顺利.
有关故障异常以及如何将它们用于您的利益的更多信息,请查看: