【发布时间】:2009-10-12 20:27:47
【问题描述】:
我有一个 WCF 服务引用,它指向信用卡处理 Web 服务 (Cybersource) 的 WSDL 文件。我想以某种方式扩展生成的服务引用客户端以实现 IEnlistmentNotification 以支持事务处理。
我熟悉实现 IEnlistmentNotification 接口,但我找不到一个好的扩展点来捕获任何时候调用服务方法以便我可以维护事务登记的状态。
例如,Cybersource 的 WSDL 在这里:
https://ics2wstest.ic3.com/commerce/1.x/transactionProcessor/CyberSourceTransaction_1.48.wsdl
它只有一种方法“runTransaction”。理想情况下,我会拦截对此方法的调用,查看有效负载内容,确定登记操作,让调用继续,然后检查结果以记录回滚事务所需的信息。我可能会在返回结果中捕获“交易参考号”。然后在回滚时执行取消/信用/等。通过将其作为 IEnlistmentNotification 接口的一部分,我可以让其他人非常简单地将此类用作事务的一部分。
我知道我可以为这个类编写一个包装器或工厂,这就是我现在要继续的方式。但是,我希望 WCF 有一个扩展点,我可以使用它来拦截方法调用 - 我可以直接在生成的客户端类的部分版本上执行。
我希望生成的部分类具有用于点击或事件的部分方法调用,但它没有任何类型(除非我遗漏了一些东西......)。
【问题讨论】:
标签: c# .net wcf transactions