我刚刚进入MEF,我遇到了一个我无法解决的问题.我有一个Windows服务正在读取我的DLL(通过MEF),每个DLL是一个WCF服务主机.当我运行我的Windows服务并读入DLL时,一切运行正常,除了每当一个WCF DLL获得任何"活动",然后他们重新实例化然后处理进来的数据.我需要它们在开始时实例化一次.这可能吗?
WCF 服务默认为按调用实例模式。这意味着将为每个传入方法调用实例化 WCF 服务的新实例。听起来您想要的是单例实例模式,但如果可扩展性是一个问题,您确实希望避免这种情况。
我解决这个问题的方法是使用每次调用实例模式,但在幕后有一个静态数据存储来同步访问。这至少允许客户端进行连接,即使在建立连接后客户端在使用数据存储时必须暂时阻塞。
有关更多详细信息,请参阅有关System.ServiceModel.InstanceContextMode的 MSDN 帮助。