2011-08-31 39 views
3

我是一个相对较新的C#开发人员,我发现自己大约1/5作为VS 2010中C#MVC应用程序的生产力,比我之前在Zend使用php 手动使用vim如何提高MVC C#应用程序的生产效率?

我在写测试/写代码/运行测试/集成&调试问题的迭代周期中工作。

这最后一步涉及到使用visual studio构建代码,debug> attach to process> w3wp.exe,然后访问http://localhost/App/(IIS 7.5的本地副本)并触发一些事件/ etc,使VS调试器运行。

发现错误/问题后,我停止调试器,修复它,重新编译并重复。

这是令人难以置信的缓慢。

编译应用程序可能需要2秒,但第一次在调试器中加载需要大约60-80秒。关闭调试器可以提高分数的速度,但不会显着。

我的IIS副本没有什么特别之处;它只是配置为从Visual Studio项目本地运行项目目录。

我的机器不是太棒了,它的3.0Ghz双核心运行Windows 7的4 GB内存......但这只是一个笑话。我花更多的时间盯着我的屏幕等待IIS到做点什么比我写的代码。

后续页面加载显然非常快,你知道即时页面加载。

我想这个问题是,IIS需要运行应用程序启动和加载文件,并在我重新编译时执行它对应用程序池worker的任何操作,这意味着初始启动速度很慢(IOC,Web配置文件等)。

...但是,我似乎无法在网上找到许多其他人抱怨这个,所以我猜想它必须是应用程序配置方式,IIS配置方式和我的工作流程都搞砸了。

我在做什么错?

如果IIS启动时没有办法,我应该怎么做才能避免这个问题呢?

+0

你能否提供更多关于你的项目的信息,比如对代码文件编号的粗略估计,它做了什么等等?如果你有一个Hello World项目,CLR在第一次加载时就不需要花费几秒钟的时间来编译应用程序。由于首页加载需要一分钟,我认为你还有其他事情要做,或者在后台运行一些非常糟糕的东西。 –

+0

这是一个不起眼的购物车Web应用程序。唯一可能不寻常的是它有大约8个soap服务依赖项(而不是数据库)。解决方案目前有8个子项目,8k loc。可维护性指数〜85,圈复杂度〜35? – Doug

回答

3

我想大多数人使用内置的Visual Studio开发服务器(类似IIS)。如果您正在运行SP1,则还可以使用对于大型和/或多/跨网站应用程序更健壮的IIS Express。

右键单击您的Web应用程序 - >属性 - > Web选项卡以选择一个调试服务器。

+0

这是一个选项,但visual studio明确地阻止您将其公开给网络;所以如果我这样做,我就不能使用我的Mac进行跨平台测试。 – Doug

+0

对于Visual Studio Development Server yes,但不适用于IIS Express。事实上,我目前在Mac上安装了运行XP的VisualBox 2010 w/IIS Express。 Mac用户正在编辑XP盒子上的文件,并刷新网页浏览器而没有问题。 –

+0

不错。它使用IIS Express将加载时间缩短了大约50%。现在只有30秒左右的第一个页面视图。 – Doug

1

我同意你的说法,即它可能不得不对你的本地系统做些什么。显然,我不可能告诉你系统是如何配置错误的,但我会先详细检查一下。

,这可能是有帮助的,即使他们没有解决问题的根源其他一些提示:

  • 在开发服务器使用的构建为埃里克建议。
  • 如果您只更改了模板,则不必从头开始重新启动。
  • 如果您有良好的单元测试,则根本不需要启动Web应用程序。
  • IIS 7.5是否具有应用程序池?如果是,则可以重新启动应用程序池,这比重新启动整个IIS快得多。

PS:当打开数据库连接时,我发现很奇怪的行为,如果网络配置不好。即使它在本地计算机上,也可能有奇怪的DNS查找或类似的东西。就像寻找什么的附加提示一样。

+0

调试工作我很少在模板中执行它(嘿,这就是我们的设计人员..)它几乎总是在控制器中......并且我不能单元测试控制器据我所知。我将调查应用程序池,但我确信这已经是IIS 7.5的功能了。 – Doug

+0

你可以单元测试控制器,但它取决于你的控制器是多么棘手。如果您明智地使用MVC功能,应该很容易。你所描述的听起来像你的控制器包含很多逻辑。 – Achim