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

Tài liệu Assembly part 7 pdf

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 (137.37 KB, 3 trang )


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
×