C# 在其他服务方法中调用服务方法可以吗?(WCF)

C# 在其他服务方法中调用服务方法可以吗?(WCF),c#,.net,wcf,application-design,C#,.net,Wcf,Application Design,示例代码: public class Service1 { public int Service1() { .... } } public class Service2 { public int Service2() { ... var service1 = new Service1(); var count = service1.Service1(); ... }

示例代码:

public class Service1
{
    public int Service1()
    {
        ....
    }
}

public class Service2
{
    public int Service2()
    {
        ...
        var service1 = new Service1();
        var count = service1.Service1();
        ...
    }
}

类和方法都通过WCF公开。

可以吗?是的,会有用的。通常,我宁愿实例化对象并调用服务背后的方法。但这完全取决于环境的设置方式。如果有其他调用服务句柄的步骤,如记录请求等,并且您希望跟踪这些步骤,那么请务必调用该服务

可以吗?是的,会有用的。通常,我宁愿实例化对象并调用服务背后的方法。但这完全取决于环境的设置方式。如果有其他调用服务句柄的步骤,如记录请求等,并且您希望跟踪这些步骤,那么请务必调用该服务

这应该可以很好地工作,因为在Service2内部,您在进程中调用Service1,而不是通过WCF进行调用(即使您在Service2内部使用WCF,它也应该可以工作)


但就设计而言,这不是很好。应通过服务调用服务操作(例如,通过HTTP或TCP)。如果Service1和Service2都需要访问公共功能,那么解决方案是将公共代码重构为共享类或其他内容,而不仅仅是将其包含在Service1中。

这应该可以正常工作,因为在Service2中,您正在调用Service1进程内而不是通过WCF进行调用(即使您在Service2内部使用WCF,它也应该可以工作)

但就设计而言,这不是很好。服务操作应该通过服务(例如通过HTTP或TCP)调用。如果Service1和Service2都需要访问公共功能,解决方案是将公共代码重构为共享类或其他内容,而不仅仅是将其包含在Service1中