zoukankan      html  css  js  c++  java
  • 第九讲:基于组件的程序设计

    *4步用来强命名
    创建强命名组件的步骤:
    1、生成组public-private key pair
    2、将其通过AssemblyInfo.cs的属性应用到组件中。
    3、重新编译Assembly
    4、重新编译客户端

    *建立public/private key文件
    使用.NET "SN" 命令行用法
    -k 选项生成key pair
    把该文件放置在vs solution/project目录下

    sn.exe -k pubpriv.key

    *保护key文件
    私钥key的安全-recompile
    必须保证key文件是秘密的
    每个程序员是否需要一份key文件的拷贝?
    可能不会...
    因为.NET支持后签名:
    [assembly: AssemblyDelaySign(false)]
    [assembly: AssemblyKeyFile("..\\..\\..\\pubpriv.key")]

    *布署的前提:
    .NET必须安装在目标计算机中
    应用程序必须安装在目标计算机中
    应用程序必须在运行时可以定位组件

    *部署选项?
    1、"XCopy"部署:
    安装EXE,DLLs和支持文件到单一目录
    .NET使用AppBase定位所有的组件和文件
    2、"Zero-touch"部署
    为.EXE设置一个URL:http://server/myapp/app.exe
    客户端浏览URL
    .NET在web服务器远程目录中设置AppBase!
    .NET从AppBase下载.EXE和.DLLs

    版本转向
    应用程序的.config文件将覆盖 .EXE的manifest
    例:
    .EXE引用1.0.0.0 Business Tier
    我们要求.EXE使用2.0.0.0
    <configuration>
     <runtime>
      <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.vl">
       <dependentAssembly>
        <assemblyIdentity name="BusinessComponent" publicKeyToken="123456789abcdef" />
        <bindingRedirect oldVersion="1.0.0.0" newVersion="2.0.0.0" />
       </dependentAssembly>
      </assemblyBinding>
     </runtime>
    </configuration>

    *如果不使用强命名
    定位Assembly的算法
    1、找与.exe相同目录。
    2、找应用程序子目录。
    3、找配置文件指定的目录。

    *如果使用了强命名
    定位Assembly的算法
    1、确定版本号(基于metadata)然后检查.config文件并转向
    2、查找GAC
    3、查找应用程序目录


    *安装到GAC
    如何把组件放置进GAC中?
    组件必须是强命名的
    使用.NET "gacutil" 命令行工具:
    gacutil /i BusinessComponent.dll

    优势?
    共享DLLs
    并行安装不同的版本
    更快的下载时间(在安装时刻,组件完整的检查)

    *CodeBase
    可以转向到不同的目录和机器
    Dlls保存用户的internet下载缓存
    对于每个版本只有一个codebase
    <configuration>
     <runtime>
      <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.vl">
       <dependentAssembly>
        <assemblyIdentity name="BusinessComponent" publicKeyToken="123456789abcdef" />
        <codeBase
          version="2.0.0.0"
          href="http://www.company.com/downloads/BusinessComponent.dll" />
       </dependentAssembly>
      </assemblyBinding>
     </runtime>
    </configuration>
     

  • 相关阅读:
    freebsd ports update url
    Cisco交换机里IP和MAC地址互查找出对应端口
    实现不同vlan间的相互通信方法一:单臂路由
    文件共享③Samba实例
    RHEL6基础四十九之RHEL文件(夹)权限进阶篇
    windows下查找指定端口被哪个程序占用
    DNSmasq – 配置DNS和DHCP
    dnsmasq多vlan配置
    dnsmasq.conf 配置
    windows2003 DHCP中批处理绑定IP与MAC
  • 原文地址:https://www.cnblogs.com/iceberg2008/p/1402813.html
Copyright © 2011-2022 走看看