我正在尝试加快一些 Web 服务调用,并怀疑打开许多 NHibernate 连接是问题所在。我知道打开与 SQL 服务器的新连接非常耗时且昂贵。但我认为 NHibernate 会保留一个连接(因此只需要打开一次),即使我在许多地方打开了一个 nhibernate 会话。
所以这里是这个问题的几个不同部分:
- 如果我创建一个会话并处理它,然后再次创建它,第二次加载是否需要相同的时间,还是 sql server 连接仍在后台使用?像这样:
使用 (var session = new SessionFactory.OpenSession()) {... }; 使用 (var session2 = new SessionFactory.OpenSession()) {.. };
- 如果我在 using 语句中创建一个会话,然后在该语句中创建另一个会话(不处理它),是否不需要在后台启动整个其他 sql server 连接?像这样:
使用 (var session = new SessionFactory.OpenSession()) { 使用 (var session2 = new SessionFactory.OpenSession()) {.. }; };
- 最后,是否保留了跨 Web 服务调用的 sql server 连接?即,如果我在Web 服务请求调用#1 上打开一个会话,Web 服务请求调用#2 会更快吗,因为隐藏的连接位于后台某处,它将拾取和使用?
我知道在大多数情况下最好只使用一个会话,但是编写了一个非常大的程序,并且打开了许多新会话,我试图弄清楚重新编写它是否真的会节省很多性能或不。
谢谢!