如何将WcfServiceLibrary与主应用程序分开设计
本文关键字:应用程序 WcfServiceLibrary | 更新日期: 2023-09-27 18:06:44
我对WCF有点陌生,我遇到了一个非常简单的设计问题,我认为这个问题已经有了很好的答案。我创建了一个(单实例)主应用程序,它完成了所有的"业务逻辑":连接到数据库和第三方API,执行管理用户命令等。这个应用程序将在服务器机器上运行,我的下一步是在上面创建一个WcfServiceLibrary
,以便最终用户可以使用Wcf客户端远程执行命令。
逻辑上,WcfServiceLibrary
引用主应用程序程序集。你可以说我天真,但我认为这将允许我访问主应用程序对象和方法。它确实如此,但通过在WcfServiceLibrary
进程中创建主应用程序的副本,这是不允许的。(我还发现,当从WcfServiceLibrary内部访问时,一个单实例应用程序正在被复制!)
如何解决这个问题?到目前为止,我想到了以下几点:
- 在主应用程序中自托管Wcf服务:可能,但我将失去"业务逻辑"和服务逻辑之间的清晰分离
- 使用IPC技术在主应用程序和
WcfSrviceLibrary
之间进行通信:这看起来像是多余的,因为它创建了另一层服务器-客户端接口(除非我使用进程外COM) - 还有其他办法吗?
提前感谢您的帮助!我想相信这个问题很快就会有一个简单的解决办法。
这可能是你正在寻找的…
public static class RealAppCoreHelper
{
private static RealAppCoreObject m_GlobalAppInstance = null;
public static RealAppCoreObject GetGlobalMainInstance()
{
// return the one and only instance of our main app
if (m_GlobalAppInstance == null)
{
m_GlobalAppInstance = new RealAppCoreObject();
}
return m_GlobalAppInstance;
}
}
你可以把这个逻辑放在WCF包装应用程序或你的主应用程序中,这取决于你正在寻找的确切行为。