C# 跨WCF共享静态类

C# 跨WCF共享静态类,c#,wcf,C#,Wcf,可能重复: 因此,我对使用WCF相当陌生,我遇到了以下问题。我有一个类,如果不使用WCF,我会把它设计成一个静态类,但我不确定如何在WCF中共享一个静态类。现在,我正在创建一个名为“IMyClass”的接口,该接口具有ServiceContract属性,这就是我在WCF中共享内容的方式。很明显,静态类不能实现接口,所以我被一个非静态类困住了吗?您仍然可以拥有一个静态类,其中包含您的服务实现调用的静态方法 然而,如果您希望服务本身是一个单例服务,那么您所谈论的是单例服务。这可确保所有传入呼叫仅使

可能重复:


因此,我对使用WCF相当陌生,我遇到了以下问题。我有一个类,如果不使用WCF,我会把它设计成一个静态类,但我不确定如何在WCF中共享一个静态类。现在,我正在创建一个名为“IMyClass”的接口,该接口具有ServiceContract属性,这就是我在WCF中共享内容的方式。很明显,静态类不能实现接口,所以我被一个非静态类困住了吗?

您仍然可以拥有一个静态类,其中包含您的服务实现调用的静态方法

然而,如果您希望服务本身是一个单例服务,那么您所谈论的是单例服务。这可确保所有传入呼叫仅使用一个InstanceContext对象,并且不会在呼叫后循环使用。如果服务对象不存在,则创建一个服务对象

您可以通过如下方式装饰服务实现来配置:

[ServiceBehavior(InstanceContextMode=InstanceContextMode.Single)]

你想让这个类从服务器传递到客户端吗?我们已经在我所说的类的非静态版本上有了这个属性。我猜实际的问题是“如何在WCF中公开静态方法?”这本质上就是您当时所做的。single的InstanceContextMode意味着该服务将只有一个实例。为什么需要singleton服务?它真的会阻碍您的可伸缩性…这个属性是否也会阻止库中的其他类创建我的类的单独实例?如果我理解正确的话,当然不会。但您永远不会希望另一个类直接实例化该服务,而是希望通过其WCF端点与该服务通信。其他类应该只知道契约,而不知道实现,否则您可能不使用WCF。