Tải bản đầy đủ (.pdf) (5 trang)

Assemblies - Cấu hình pot

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (100.3 KB, 5 trang )

Assemblies
Cấu hình


Các thành phần COM dùng registry để định hình các thành phần. Cấu
hình của các ứng dụng .NET được thực hiện khi sử dụng các tập tin cấu
hình. Với đăng ký cấu hình xcopy-deployment không thể thực hiện được.
Các file cấu hình dùng cú pháp XML để xác định thiết lập startup và runtime
cho các ứng dụng.
Cơ chế về phiên bản
Như bạn đã biết, .NET Runtime không buồn kiểm tra phiên bản đối với
các private assembly. Nhưng khi dùng shared assembly thì vấn đề phiên bản
lại trở thành quan trọng. Bây giờ, ta thử tìm hiểu cơ chế đánh số phiên bản
(gọi là versioning) và kiểm tra đối với shared assembly.
Trên .NET, các shared assembly sẽ được nhận diện là duy nhất thông qua
tên và phiên bản, GAC cho phép những phiên bản khác "sống chung cùng
nhà, tay trong tay" (thường gọi là side-by-side) nghĩa là phiên bản cũ vẫn
hiện diện cùng với phiên bản mới hơn. Như vậy, mọi ứng dụng đặc biệt nào
đó có thể bảo "cho tớ phiên bản mới toanh nhất" hoặc "cho tớ build chót
nhất của Verion 2", hoặc kể cả "chỉ cho tớ phiên bản mà ứng dụng đang sử
dụng".
Một con số đánh dấu phiên bản của một assembly trông giống như sau:
1:0:2204:21, nghĩa là dãy 4 con số phân cách bởi dấu hai chấm. Hai số đầu
(1:0) là phiên bản major và minor. Con số thứ ba (2204) là số build, còn
con số thứ tư (21) là số revision (số chỉnh sửa duyệt lại).
Khi hai assembly có những số major hoặc minor khá nhau (chẳng hạn1.0
so với 1.5) thì được xem như là hoàn toàn bất tương thích (incompatible).
Khi các assembly khác nhau khá xa dựa trên con số Major và Minor, thì bạn
có thể cắc chắn là có nhiều thay đổi đáng kể (nghĩa là thay đổi tên các hàm
hành sự, kiểu dữ liệu được thêm vào hoặc bị gỡ bỏ, các thông số bị thay đổi,
v.v ). Do đó, nếu ứng dụng client yêu cầu gắn kết với phiên bản 2.0 nhưng


GAC chỉ chứa phiên bản 2.5 thì yêu cầu gắn kết thất bại (trừ phi bị phủ
quyết bởi tập tin cấu hình ứng dụng).
Khi hai phiên bản mang cung số major và minor nhưng lại có số build
khác nhau (chẳng hạn 2.5.0.0 so với 2.5.1.0) thì .NET Rungtime giả định
chúng có thể là tương thích với nhau (nói cách khác xem như có tương thích
lui nhưng không bảo đảm). Cuối cùng, khi ba con số đầu giống nhau, chỉ
khác số revision (còn gọi là Quick fix Engineering, QFE) thì được xem như
lf hoàn toàn tương thích.
Số duyệt lại QFE dành cho những lần sửa chữa bug. Nếu bạn sửa một bug
và cho biết là DLL của bạn hoàn toàn tương thích đối với phiên bản hiện
hữu, thì bạn phải tăng con số duyệt lại. Khi một ứng dụng nạp một
assembly, thì nó cho biết phiên bản major và minor nó muốn nạp, và
AssemblyResolver sẽ tìm ra con số build và revision cao nhất.
Ghi nhận thông tin về Version
Tới đây, có thể bạn hỏi con số phiên bản được khai báo ở đâu? Bạn nhớ
lại là mỗi dự án C# đều định nghĩa một tập tin mang tên AssemblyInfo.cs.
Nếu bạn quan sát tập tin này (bạn mở dự án CarLibrary.dll chẳng hạn, goi
Solution Explorer vào rồi double-click lên assemblyInfo.cs thì cửa sổ tập tin
này sẽ hiện lên). Bạn thấy một chuỗi như sau được đặt để:
[asssembly: assemblyVersion("1.0.*")]
Mỗi dự án mới C# bắt đầu cuộc sống với phiên bản 1.0. Khi bạn build
phiên bản mới của một shard assembly, phần lớn công việc của bạn là nhật
tu con số thứ tư của phiên bản. Bạn nên nhớ là Cisual Stidio.NET IDE sẽ tự
động tăng con số build và revision (được đánh dấu bởi tag '*'). Bạn có thể
nhật tu chuỗi trên như sau:
[asssembly: AssemblyVersion("1.0.0.0")]
Cơ bản về phobing
.NET Runtime giải quyết việc tìm ra nơi tá túc của một private assembly
bằng cách sử dụng một kỹ thuật được gọi là probing. Đây là một tiến trình
ánh xạ một qui chiếu assembly nằm ngoài (external assembly reference),

nghĩa là [.assembly extern], về đúng tập tin nhị phân tương ứng. Thí dụ, khi
.NET Runtime đọc hàng sau đây từ một manifest:
.assembly extern carlLibrary
{

}
thì một cuộc dò tìm sẽ được thực hiện trên thư mục ứng dụng đối với một
tập tin mang tên CarLibrary.dll. Nếu không thể tìm thấy nơi tá túc của
một DLL binary, thì lại thử đối với một CarLibrary.exe. Bạn nhớ cho là nếu
assembly chứa tag [.publickeytoken], nghĩa là liên quan đến một shared
assembly, thì GAC sẽ được dò tìm trước tiên (ta sẽ xem chi tiết sau trông
chốc lát).

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×