您的位置:首页 > 其它

第九讲:基于组件的程序设计

2009-03-04 11:17 155 查看
*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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: