gpt4 book ai didi

c# - WCF - 在多个契约(Contract)共享通用方法时寻找最佳实践

转载 作者:太空狗 更新时间:2023-10-29 23:18:20 28 4
gpt4 key购买 nike

我打算让一个核心模块公开接口(interface),以便其他大模块(不同的客户端)可以与之通信。例如,如果有一组方法:

void Method_A();
void Method_B();
void Method_X1();

暴露给一种类型的客户端(模块“X1”)和:

void Method_A();
void Method_B();
void Method_X2();

暴露给其他类型的客户端(模块“X2”)并且知道 Method_AMethod_B 应该有确切的实现......那么我怎样才能最好地设计服务架构(在服务和契约(Contract)方面)?

是否有机会只实现 Method_A 和 Method_B 一次(在不同的合约实现中不是 2 次)?

在使用 WCF 时,我应如何从接口(interface)继承中获益?

提前谢谢大家,如果我需要说得更清楚,请告诉我!

@marc_s...我非常感谢您的观点...

最佳答案

类可以继承满足接口(interface)的方法,所以你可以有一个IServiceBase接口(interface)和ServiceBase刚刚实现 Method_A 的类和 Method_B , 然后将独特的方法挑出到单独的接口(interface)中,最后将它们组合在继承 ServiceBase 的类中并实现 Interface1 或 Interface2。例如:

[ServiceContract]
public interface IServiceBase
{
[OperationContract]
void Method_A();

[OperationContract]
void Method_B();
}

[ServiceContract]
public interface IService1 : IServiceBase
{
[OperationContract]
void Method_X1();
}

[ServiceContract]
public interface IService2 : IServiceBase
{
[OperationContract]
void Method_X2();
}

public abstract class ServiceBase : IServiceBase
{
void Method_A()
{
... implementation here ...
}

void Method_B()
{
... implementation here ...
}
}

public class Service1 : ServiceBase, IService1
{
void Method_X1()
{
... implementation here ...
}
}

public class Service2 : ServiceBase, IService2
{
void Method_X2()
{
... implementation here ...
}
}

关于c# - WCF - 在多个契约(Contract)共享通用方法时寻找最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5583388/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com