C# 使用persession WCF服务对象对多个应用程序请求执行单例

C# 使用persession WCF服务对象对多个应用程序请求执行单例,c#,singleton,C#,Singleton,我有一个类(并发)对象,我在其中启动所有与数据库相关的设置。 所有这些代码都在WCF服务中。比如说实例管理,我做了基于persession的服务实例。现在我想通过所有db层类共享并发类对象。虽然我已经为wcf服务使用了persession实例创建,但我不清楚singleton模式将如何同时对多个请求做出反应。每个用户将获得相同的类对象还是将与所有用户共享相同的类对象 场景是:我有用户对象用户属于组织。WCF服务具有方法“用户注册”。使用wcf服务,我有单独的数据库操作类库。当任何客户端调用用户注

我有一个类(并发)对象,我在其中启动所有与数据库相关的设置。 所有这些代码都在WCF服务中。比如说实例管理,我做了基于persession的服务实例。现在我想通过所有db层类共享并发类对象。虽然我已经为wcf服务使用了persession实例创建,但我不清楚singleton模式将如何同时对多个请求做出反应。每个用户将获得相同的类对象还是将与所有用户共享相同的类对象


场景是:我有用户对象用户属于组织。WCF服务具有方法“用户注册”。使用wcf服务,我有单独的数据库操作类库。当任何客户端调用用户注册方法时,在并发对象中,我必须根据用户的组织设置数据库设置。为此,我希望每个用户管理一个并发对象。这样做对吗

我希望正确理解你的问题。我自己也有这个问题,我们的DAL只有一个入口点。它必须在多个平台上工作:WCF、WF、ASMX、ASP.NET等

我提出了singleton的这个实现,它在适用于该平台的情况下,将类实例保存在用户会话中:

public static Class1 Current
{
    get
    {
        if (HttpContext.Current != null) /* ASP.NET / ASMX / ASHX */
        {
            if (HttpContext.Current.Session["Class1"] == null)
                HttpContext.Current.Session["Class1"] = new Class1();

            return (Class1)HttpContext.Current.Session["Class1"];
        }
        else if (OperationContext.Current != null) /* WCF */
        {
            if (WcfInstanceContext.Current["Class1"] == null)
                WcfInstanceContext.Current["Class1"] = new Class1();

            return (Class1)WcfInstanceContext.Current["Class1"];
        }
        else /* WPF / WF / Single instance applications */
        {
            if (Class1.current == null)
                Class1.current = new Class1();

            return Class1.current;
        }
    }
}

如果您的层中有多个对象,您可以在基类或方法中重构它。

通过WCF服务公开
并发
对象,您想在DB访问层依赖它吗?听起来可能是个坏主意。你能分享一些代码让我们看到你想要的结构吗?我不打算通过WCF分享并发对象。请再读一遍问题。。我已经做了一些改变,以明确实际情况感谢您的回复。。。以上代码将在WCF项目中使用。正确的?实际上我只想在db层管理所有db操作和实例创建。。。我的项目内容是:WCF应用程序、应用程序服务(类库)、域服务(类库)基础设施服务(类库)。现在我想保留wcf服务和应用程序服务层,用于纯函数调用和返回所需值。在域服务中,我想启动我的“并发”类对象,因为它将用于启动与域相关的不同类对象,这很好。这适用于多个平台,也适用于WCF,无需每次修改代码。@user3759078:因为您是新来的:如果您的问题已被回答,并且没有其他问题,请在回答之前勾选复选标记,接受您最喜欢的答案。