我有一个WCF服务引用WSDL文件,用于处理信用卡的Web服务(Cybersource)。我想以某种方式扩展生成的服务引用客户端以实现IEnlistmentNotification以支持事务处理。
我熟悉IEnlistmentNotification接口的实现,但我无法找到一个好的扩展点来随时调用服务方法,以便我可以维护事务登记的状态。
例如,Cybersource的WSDL就在这里:
https://ics2wstest.ic3.com/commerce/1.x/transactionProcessor/CyberSourceTransaction_1.48.wsdl
它只有一个方法“runTransaction”。理想情况下,我会拦截对此方法的调用,查看有效负载内容,确定登记操作,让呼叫继续,然后检查结果以记录我需要回滚事务的信息。我可能会在返回结果中捕获“交易参考编号”。然后在回滚时做取消/信用/等。通过使其作为IEnlistmentNotification接口的一部分,我可以非常简单地让其他人将此类用作事务的一部分。
我知道我可以为班级写一个包装器或工厂,这就是我现在要做的。但是,我希望WCF有一个扩展点,我可以使用它来拦截方法调用 - 我可以直接在生成的客户端类的部分版本上执行。
我期望生成的部分类具有部分方法调用以进行攻击或事件,但它没有任何类型(除非我遗漏了某些内容......)。
答案 0 :(得分:1)
WCF确实有一个扩展点,允许你挂钩到客户端来检查出来的数据,它是IParameterInspector,我刚才写了here。不确定这是否是你需要的,但可能有用。