2013-03-01 65 views
1

我目前正在编写一个应用程序,将自动为我们的Web服务器的几个管理项目。我的问题很简单,但我找不到任何文档;当通过using Microsoft.Web.Administration调用我们的ServerManager时,如果服务器对象连接定期打开和关闭(处置),它是否会有性能障碍?IIS性能创建几个服务器对象和处置

我知道在一个SQL数据库中频繁的连接调用会在很多情况下耗尽性能;所以我不想遇到类似的问题。

我试图避免必须创建一个Instance这将是Persisted在传出任务排队然后执行的方式。

如果任何人都可以让我知道,并指出我的任何文件,那将是伟大的。但正如我所说,目前我找不到任何东西。

在小范围的一个例子:

public void AddSite() 
{ 
    ServerManager defaultManager = new ServerManager(); 

    // Perform Task 
    defaultManager.CommitChanges(); 
    defaultManager.Dispose(); 
} 

public void RemoveSite() 
{ 
    ServerManager defaultManager = new ServerManager(); 

    // Perform Task 
    defaultManager.CommitChanges(); 
    defaultManager.Dispose(); 
} 

基本上通过构建基于每种方法的对象;然后关闭它会影响性能?


更新:

的例子是一个非常基本的,甚至基本的例子。将会有一些重构遵循良好的实践,例如执行IDisposable。然而,主要的困境是我无法准确地描述像SQL一样的变化。

在SQL过度打开和关闭的情况下,您会发现所有服务都逐渐消耗性能,尤其是随着数据库复杂性的增长。

这是我用IIS的目标,目前我无法获得准确的表示。表演确实在改变;我知道它加载的大部分服务都是序列化和反序列化解释配置的XML文件。

了解多么复杂的IIS,与我自动化,但试图做最简单的路径。我想知道这种简单化的方法是否需要更复杂的方法或重构。由于那些服务和流程确实会造成耗尽资源。

我试图准确地描述这些可能的障碍,但我找不到任何文档或甚至没有细节到IIS的性能增益。

加上每次我做一个测试的结果会出现零星,不一致,并最终不可靠。

回答

2

你在找这样的吗?

private ServerManager _defaultManager = new ServerManager(); 

    public void AddSite() 
    { 
     // perform task 
     _defaultManager.CommitChanges();    
    } 

    public void RemoveSite() 
    { 
     // perform task 
     _defaultManager.CommitChanges(); 
    } 

    public void Dispose() { 
     _defaultManager.Dispose(); 
    } 

您应该能够运行一些测试来确定上述确实是否会更好地执行。我已经看到了这样的事情。我建议你实现IDisposable接口,因为ServerManager的实现IDisposable和我的代码将有你的类拥有一个“管理IDisposable的资源”

http://blog.stephencleary.com/2009/08/how-to-implement-idisposable-and.html

+0

我跑了几个测试,但我不能得到任何真正的混凝土,他们看起来很快。然后看起来它会变慢。我将实现的IDisposable接口,但对于这个例子,我只是试图快速。 – Greg 2013-03-02 00:29:29

+0

不尽然,虽然Disposing会明显释放资源,但它无法准确描述从创建服务器对象到处理完成的时间迭代。这就是为什么我要测量它,但我找不到任何东西。在SQL中,您可以看到连接消耗资源,因为SQL服务启动和停止,我试图对所有启动和停止自动化的IIS服务执行相同的操作。 – Greg 2013-03-02 19:06:05

+0

Greg,我想你想确保你有没有内存泄漏的良好运行代码。您可以通过将您担心的代码放在循环中并在任务管理器中观察过程来轻松进行测试。你也可以使用探查器http://stackoverflow.com/questions/1312493/net-code-profiling-tools – mikey 2013-03-04 02:37:08