【问题标题】:Is loading a dependency assembly from the internet a good practice?从 Internet 加载依赖程序集是一种好习惯吗?
【发布时间】:2010-09-27 06:22:34
【问题描述】:

我知道部署 .net windows 客户端应用程序有多种方法:

Windows InstallerClick Once,一个简单的下载和运行,并在 Internet Explorer 中加载 windows 窗体/WCF 应用程序(不要将后者与 WCF/E - Silverlight RIA 应用程序混淆)

所以...考虑一下真正的 Windows 客户端应用程序——只是为了明确一点:那些由文件系统中的 .exe 组成的应用程序——可以从 Internet 加载其部分或全部依赖项是个好主意?

<assemblyIdentity 
    name="MyAssembly"
    publicKeyToken="89a956accc8f98e98a9e954a"
    culture="en-US" />
<codeBase 
    version="2.0.0.0"
    href="http://www.contoso.com/MyAssembly.dll" /> <!-- look here -->

显然有一些严重的缺点:必须始终连接,客户端中的CAS 配置(互联网依赖项将在Internet_Zone code group 中),更不用说加载时间了。

但我也能想到几个优点。

有什么问题?有人在实际项目中使用过这个吗?

【问题讨论】:

    标签: .net deployment assemblies dependencies


    【解决方案1】:

    我可以看到在公司 Intranet 环境中执行您的建议,其中自定义应用程序可以与自定义服务器通信,并且每个服务器都能很好地理解对方。当然,可能存在连接和同步问题,但随着时间的推移,这些问题可能会在某种程度上得到解决。我在一个应用程序对一组后端服务器执行基本 CRUD 任务的情况下完成了此操作,这些服务器对数据库运行命令。诚然,它没有被给予太多重视,并且在一段时间内是某人的宠物项目,但最终它确实做了一些不错的事情。

    在互联网环境中,我认为安全问题是我最担心的问题,因为另一个因素是,如果该程序集升级,它可能会使应用程序崩溃。对于互联网情况,我认为 Click Once 是我的建议。

    【讨论】:

      【解决方案2】:

      如果您正在加载的程序集是从受信任的提供程序进行数字签名的,那么从安全角度来看,它应该不会那么糟糕。如果您真的信任他们...例如,如果您从一些第三方供应商那里下载程序集,这些供应商可能不会很好地掌握他们的密钥,那么是的,我会小心的这样做。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-06-23
        • 1970-01-01
        • 2020-08-25
        • 2010-11-16
        • 1970-01-01
        • 1970-01-01
        • 2015-09-21
        • 1970-01-01
        相关资源
        最近更新 更多