Assembly part 7

Chia sẻ: Dqdsadasd Qwdasdsad | Ngày: | Loại File: PDF | Số trang:3

0
44
lượt xem
6
download

Assembly part 7

Mô tả tài liệu
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

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.

Chủ đề:
Lưu

Nội dung Text: Assembly part 7

  1. 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.
  2. 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).
  3.  
Đồng bộ tài khoản