zoukankan      html  css  js  c++  java
  • 【翻译】VSHOST 宿主进程

    【为了阅读方便,本文进行了分段整理】

    原文地址:http://blogs.msdn.com/b/dtemp/archive/2004/08/17/215764.aspx

    【转载请注明出处!】

    =========================================


     如果曾经使用过新的VS2005测试版,那么您应当会发现bin目录下多出了一些以vshost命名的文档。例如,当您创建好一个winform程序之后按下F5运行程序,将会发现类似于WindowsApplication1.vshost.exe文件和WindowsApplication1.vshost.exe.config文件。本文试图简单阐述这些文件生成的原因,并且回答几个网友常问的问题。

    什么是"vshost"?

     这是一个“宿主进程”,只要你在vs2005 IDE环境下构建一个项目,它就会被创建。它的主要目标是能提高F5调试性能,支持部分信任调试并支持设计时表达式计算。

    提高F5调试性能
       众所周知,当点击F5的时候您的应用程序就启动了。然而,运行一个托管的应用程序需要创建一个叫做"AppDomain"(应用程序域)的东西,它负责保存应用程序运行所在的“运行时环境”。如果从头开始创建一个AppDomain并且初始化围绕它的调试器等工具,需要花费不少时间,这个现象当应用程序一遍又一遍的运行时将更为明显。

       一个不争的事实是:当应用程序结束时,所有AppDomain相关的资源全部丢失,当点击F5再次启动程序时,又要重新加载他们(这明显是浪费时间和资源的);宿主进程的作用就是在后台帮你的应用程序做好这一切,并且在应用程序关闭之后为您保存AppDomain的状态,避免重复劳动。

    部分信任调试
     vs2005的一个新特性之一,就是能够在新的安全页所定义的部分信任模式下调试一个应用程序(这段字面意思是这样- -||,自己也不是很清楚什么意思)。当您部署一个部分信任模式的应用程序,它会自动运行在一个有限的安全上下文内(Context,大家应该不陌生)。然而,在Vs2005环境下利用调试器模拟一个部分信任环境需要应用程序域的支持(AppDomain),这个域就是由宿主进程来维护的。

    设计时表达式演算:
     vs2005的另外一个新特性是具有在即时窗口中测试应用程序中的代码,而不用真正运行应用程序的能力。同样是利用宿主进程在编码时实时运行您的代码。(译者:可能就是我们写代码的过程中即时提醒程序语法等功能,甚至不需要要编译)

    它在我们的Bin文件夹里做什么?
     至于vshost文件为啥必须和应用程序在同一个目录,是有许多技术上的原因的^_^,当您的应用程序伴随着宿主进程运行时,vshost是在AppDomain中执行程序集的最高层(我理解是最底层- -||),而不是您的应用程序本身。并且如果vshost文件不是和其他应用程序文件在同一个目录的话,所有的程序集,配置文件和所有的ClickOnce、side-by-side 装配件清单都无法被正确的载入。

    我应当和我的应用程序一起部署"vshost"么?
     不用,这几个文件仅仅是用来给vs2005 IDE使用的,他们无法正确的单独运行,而不用同您的应用程序一道部署。

    我能禁止产生vshost文件么?
     在Beta1版本的环境中对于所有的Winform应用程序这是必备的特性,但是在Beta2版本中,我们确实增加了一个选项来禁止这项功能。当然后果是您将无法享受到上面提到的所有好处。假如您在调试过程中发现了由于这项特性导致的bug的时候,请上报!

    鉴于本人水平有限,翻译中难免纰漏,欢迎大家拍砖。
     

  • 相关阅读:
    Jython:java调用python文件之第三方包路径问题
    待研究的技术第二版
    mysql主从数据库不同步的2种解决方法(转)
    mysql分表和表分区详解
    mysql-binlog日志恢复数据库
    mysql delete删除记录数据库空间不减少问题解决方法
    mySQL 增量备份方案(转)
    mysql 查看 删除 日志操作总结(包括单独和主从mysql)
    Memcache的部署和使用(转)
    Linux下memcache的安装和启动(转)
  • 原文地址:https://www.cnblogs.com/wbpmrck/p/1783455.html
Copyright © 2011-2022 走看看