我们非常依赖Ninject的注射机制。目前,我们正在努力处理会话。我们阅读了很多关于会话管理的内容,我们希望实现每个业务转换的会话。我们有一个简单的基础设施,如下所示:
public class Repository<TEntity> : IRepository<TEntity>
where TEntity : class, IEntity
{
public Repository(ISession session)
{
this.Session = session;
}
protected ISession Session { get; private set; }
public TEntity FindBy(Guid key)
{
return this.Session.Get<TEntity>(key);
}
/// rest omitted
}
回购的消费者如下所示:
public class Consumer {
public Consumer (Repository<SomeEntity> repo, ISession session)
public void DoSomeWork() {
using (var tx = session.BeginTransaction()) {
repo.FindBy(someId);
/// etc.
tx.Commit();
}
}
Repo实例中注入的ISession保证与消费者中的ISession相同。我们正在构建一个小型服务器应用程序,它在内部托管几个基础结构服务,这些服务具有服务器进程的生命周期和一些WCF端点当我们控制铣床时,基础设施服务主要用于控制“软件”机器及其状态机的创建和正确处理。
我们正在考虑以下会话管理结构:
对于某些情况,WCF端点需要挂钩到基础结构服务。你会如何处理那里的会议?
有什么建议吗?
答案 0 :(得分:0)
如果您使用每个服务端点的会话,那么该服务的所有使用者将使用相同的会话。这是不可取的。
我个人会按照每个请求进行会话,因为它更容易使用和实现,而你的问题并没有说明使用其他任何东西的任何理由。
有关详细信息,请参阅this。