惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

酷 壳 – CoolShell
酷 壳 – CoolShell
H
Hacker News: Front Page
P
Palo Alto Networks Blog
T
ThreatConnect
Apple Machine Learning Research
Apple Machine Learning Research
博客园_首页
T
True Tiger Recordings
P
Privacy & Cybersecurity Law Blog
B
Blog
IT之家
IT之家
Last Week in AI
Last Week in AI
F
Full Disclosure
Hacker News: Ask HN
Hacker News: Ask HN
C
Comments on: Blog
Microsoft Azure Blog
Microsoft Azure Blog
C
Cybersecurity and Infrastructure Security Agency CISA
Microsoft Security Blog
Microsoft Security Blog
博客园 - 【当耐特】
N
News and Events Feed by Topic
NISL@THU
NISL@THU
腾讯CDC
雷峰网
雷峰网
Security Latest
Security Latest
李成银的技术随笔
M
Microsoft Research Blog - Microsoft Research
L
LangChain Blog
L
Lohrmann on Cybersecurity
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
C
Check Point Blog
Y
Y Combinator Blog
Recent Announcements
Recent Announcements
博客园 - Franky
N
News | PayPal Newsroom
V
V2EX
A
About on SuperTechFans
The Register - Security
The Register - Security
月光博客
月光博客
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Google Online Security Blog
Google Online Security Blog
MyScale Blog
MyScale Blog
Cisco Talos Blog
Cisco Talos Blog
Vercel News
Vercel News
WordPress大学
WordPress大学
C
Cyber Attacks, Cyber Crime and Cyber Security
The Hacker News
The Hacker News
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
爱范儿
爱范儿
A
Arctic Wolf
L
LINUX DO - 最新话题
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More

博客园 - Laeb

ASP.NET Web 页面语法概览 ASP.NET Web 页面中的新事物 - Laeb 渐增的许可 介绍 ASP.NET Web 页面 - Laeb 管理工具 - Laeb ASP.NET Web 页面概览 检测何时需要更改安全策略 安全策略管理的概览 System.Net 类的最佳习惯 异常处理的最佳习惯 面向世界应用程序开发的最佳习惯 - Laeb 使用 ASP.NET 所创建的 XML Web 服务的设计指南 ASP.NET 控件与可访问 ASP.NET 中的可访问支持 实践:创建自定义 HTTP 模块 - Laeb HTTP 模块介绍 实践:创建 HTTP 处理器工厂 - Laeb 实践:注册 HTTP 处理器 - Laeb 实践:创建同步 HTTP 处理器 - Laeb
为并发执行而创建应用程序与组件的指南
Laeb · 2007-03-24 · via 博客园 - Laeb

按照这些常规指南来创建为并发执行而被设计的被管理应用程序或者组件:

  • 把类型标识绑定到文件的特定版本。

    公共语言运行时通过使用强命名的汇编集把类型标识绑定到一个特定的文件版本。要为并发执行而创建一个应用程序或者组件,你就必须为所有的汇编集提供强名称。这会创建精确的类型标识并且确保任何类型协议都把注意力集中到正确的文件。一个强命名的汇编集包含了在运行时定位到正确文件来完成绑定请求的版本,文化和出版者信息。

  • 使用明确版本的存储。

    运行时使用全局汇编缓存来提供明确版本存储。全局汇编缓存是安装在每台使用 .NET Framework 的计算机中的一种明确版本的目录结构。当该汇编集的一个新版本被安装之后,被安装在全局汇编缓存中的汇编集并不会被覆盖。

  • 创建一个隔离运行的应用程序或者组件。

    隔离运行的应用程序或者组件必须管理资源来避免同时运行的应用程序或者组件的两个实例之间的冲突。该应用程序或者组件同样必须使用特定版本的文件结构。

应用程序与组件隔离

为并发执行而成功地设计应用程序或者组件的一个关键就是隔离。应用程序或者组件必须管理所有的资源,独特的文件 I/O,以一种被隔离的方式。遵循这些指南来确保你的应用程序或者组件的隔离运行:

  • 以一种特定版本方式来写入注册表。把值存储进表示版本的簇或者关键字中,并且不要跨越组件的版本来共享信息或者状态。这防止了两个应用程序或者组件同时从信息的覆盖中运行。
  • 产生特定版本的已命名内核对象,因此不会出现紊乱条件。例如,当彼此等待的相同应用程序的两个版本出现两个信号时所出现的紊乱条件。
  • 产生明确版本的文件与目录名称。这表示这些文件结构应该依赖于版本信息。
  • 以一种特定版本的方式来创建用户帐号和分组。通过应用程序而被创建的用户帐号和分组应该通过版本而被识别。不要在应用程序的版本之间共享用户帐号和分组。

安装与卸载版本

当为并发执行而设计应用程序的时候,遵循这些关于安装和卸载版本的指南:

  • 不要从可能被其他运行在不同版本 .NET Framework 下的应用程序所需要的注册表中删除信息。
  • 不要替换可能被其他运行在不同版本 .NET Framework 下的应用程序所需要的注册表信息。
  • 不要反注册运行在不同版本 .NET Framework 下的可能被其他应用程序所需要的 COM 组件。
  • 不要更改已经被注册的 COM 服务器的 InprocServer32 或者其他注册表入口。
  • 不要删除可能被运行在不同版本 .NET Framework 下的其他应用程序所需要的用户帐号或者分组。
  • 不要把任何事物添加到包含未被版本化的路径的注册表中。

文件版本号与汇编版本号

  • 文件版本就是一种不被运行时所使用的 Win32 版本资源。通常,你需要为 QFE 更新文件版本。两个同样的文件可以有不同的文件版本信息,并且两个不同的文件还可以拥有相同的文件版本信息。
  • 汇编集版本通过汇编集绑定的运行时而被使用。拥有不同版本号的两个同一汇编集会被运行时视为两种不同的汇编集。
  • 全局汇编集缓存工具(Gacutil.exe)只允许你在文件版本号是最新的时候替换汇编集。通常安装程序不会通过一个汇编集,除非该汇编集版本号是是最大的。