如何将WcfServiceLibrary与主应用程序分开设计

本文关键字:应用程序 WcfServiceLibrary | 更新日期: 2023-09-27 18:06:44

我对WCF有点陌生,我遇到了一个非常简单的设计问题,我认为这个问题已经有了很好的答案。我创建了一个(单实例)主应用程序,它完成了所有的"业务逻辑":连接到数据库和第三方API,执行管理用户命令等。这个应用程序将在服务器机器上运行,我的下一步是在上面创建一个WcfServiceLibrary,以便最终用户可以使用Wcf客户端远程执行命令。

逻辑上,WcfServiceLibrary引用主应用程序程序集。你可以说我天真,但我认为这将允许我访问主应用程序对象和方法。它确实如此,但通过在WcfServiceLibrary进程中创建主应用程序的副本,这是不允许的。(我还发现,当从WcfServiceLibrary内部访问时,一个单实例应用程序正在被复制!)

如何解决这个问题?到目前为止,我想到了以下几点:

  • 在主应用程序中自托管Wcf服务:可能,但我将失去"业务逻辑"和服务逻辑之间的清晰分离
  • 使用IPC技术在主应用程序和WcfSrviceLibrary之间进行通信:这看起来像是多余的,因为它创建了另一层服务器-客户端接口(除非我使用进程外COM)
  • 还有其他办法吗?

提前感谢您的帮助!我想相信这个问题很快就会有一个简单的解决办法。

如何将WcfServiceLibrary与主应用程序分开设计

这可能是你正在寻找的…

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包装应用程序或你的主应用程序中,这取决于你正在寻找的确切行为。