![]() |
1
4
我不知道如何让多个WCF代理从公共基类继承。您可以手动编辑添加服务引用时生成的代码,但这不利于维护性。 但是,如果在客户机和服务器之间共享契约程序集,则可以让多个代理使用相同的基本接口。然后,您可以编写一个客户端助手类(可能使用扩展方法)来在基本接口上执行公共操作。您也可以将助手类放在共享程序集中,并从多个客户端重用它。 不过,我还没有使用双面装订,所以我不确定这是否会带来并发症。 例如,假设您有两个服务计算器和echo,并且每个都需要实现一个keepalive方法。您可以定义三个服务契约接口:
您可以将服务契约接口放在客户机和服务器共享的公共类库中。 在服务器上,您将拥有ServiceBase类,它将实现IStatefulService并包含Keepalive处理代码。您将拥有一个从ServiceBase派生并实现iCalculator的具体CalculatorService;以及一个从ServiceBase派生并实现iecho的具体EchoService。 在客户机上,您需要两个代理,每个服务一个。理论上,您可以使用“添加服务引用”生成代理,使用“从引用的程序集重用类型”复选框-但我遇到了这个问题。相反,您可以直接使用ChannelFactory,如下所示:
(在生产代码中,您希望重用通道工厂,而不是像这样即时创建它们。您将处理这些代理,并且会有错误处理…) 您还需要在客户机配置文件中设置端点。 一旦两个代理共享一个基本接口,就可以编写一个实用程序类来帮助您使用该接口。 |
![]() |
Fernando Chu · 一个变量有多个可能的类?[关闭] 7 月前 |
![]() |
Amaterastis · 基类接受子类和内部子类的模板参数 8 月前 |
![]() |
Rishab Negi · 这个关键字在抽象类中是如何工作的 9 月前 |
![]() |
dEmigOd · 类层次结构中的运算符重载解析 9 月前 |
![]() |
TableTopRug · 如何从Kotlin中的密封类继承? 9 月前 |
![]() |
hasdrubal · 抽象基类函数指针python 1 年前 |
|
Josh · 通过反思访问孩子的财产 1 年前 |