Triển khai chia sẻ công cộng (public).

Một phần của tài liệu PHÁT TRIỂN PHẦN MỀM THEO HƯỚNG CẤU PHẦN (Trang 142)

III SO SÁNH JAVABEANS VÀ ACTIVE

4. Liên kết các sự kiện đại diện với điểu khiển sự kiện,bắt sự kiện, tạo ra sự kiện

2.4.2 Triển khai chia sẻ công cộng (public).

Triển khai phổ biến nhất là tái sử dụng cấu phần để triển khai một thành phần với một tên chuẩn, để đăng ký với GAC. Một thành phần chia sẻ với các tên chuẩn có thể làm cho nó độc đáo bởi cặp khóa công khai/riêng. Một thành phần chia sẻ đăng ký với GAC có thể làm cho bản thân để được chia sẻ bất cứ nơi nào. Các bước cần thiết để tạo một chia sẻ cấu phần .NET như sau:

Bước 1: Tạo một cặp khóa công khai/khóa riêng bằng tiện ích sn.exe.

>Sn -k mykey.snk

Khóa công khai là để xác minh chống lại chính tư nhân, mà là ký như là một chữ ký mã hoá được lưu giữ trong các tổ hợp ( Asembly) cấu phần. Các khoá công khai được lưu trong một bảng ghi của tổ hợp này. Khi một khách hàng tham khảo các cấu phần, các mã khóa công khai thông báo được lưu trữ trong tổ hợp của khách hàng.

Bước 2: Nhúng các dòng sau đây vào mã nguồn của cấu phần:

using System.Reflection:

Bài giảng COP – Chuyên ngành: CNPM - Version 1

Biên soạn: Ngô Thị Lan & Nguyễn Lan Oanh - 143

[assembly:AssemblyDelaySign (false)] [assembly:AssemblyVersion (“1,2,3,4”)] Lệnh sau sẽ ký chữ ký với cấu phần ngay : >csc /t:library mycomponents.cs

Các dòng lệnh tiếp theo sẽ lưu giữ một khoá công khai mã thông báo trong thành phần khách hàng.

> Csc / r: mycomponent.dll / out: myapplication.exe myapplication.cs Nếu kỹ chậm là cần thiết, chúng ta có thể đăng ký chữ ký muộn. > Sn-R mycomponent.dll mykey.sn

Chữ ký được xác nhận khi thành phần được đăng ký với GAC trong bước # 3 để đảm bảo rằng các thành phần không bị thay đổi kể từ khi tổ hợp được xây dựng.

Vào lúc chạy, khoá công khai thông báo trong các bảng ghi của khách hàng để xác minh các khoá công khai là một phần của cấu phần nhận dạng. Nếu phù hợp, sau đó nó chỉ ra rằng điều này là quyền muốn thành phần. Số phiên bản của một thành phần được chia sẻ được đánh dấu bằng bốn số cách nhau bằng dấu chấm rời rạc trong các định dạng của "major.minor.build.revision" Một thực hiện side-by-side được thực hiện bởi versioning NET... Các NET framework cho phép các cấu phần khác nhau là có cùng tên phiên bản chạy side-by-side trong các ứng dụng khác nhau. CLR kiểm tra số lượng cấu phần. Theo mặc định, chỉ có một tổ hợp chính xác về major.minor được cho phép. Nói cách khác, phiên bản "1.2.3.0" tương thích với "1.2.0.0", nhưng "1.2.3.0" không tương thích với "1.2.4.0". Nếu số phiên bản trong một cấu phần của biểu hiện không thể phù hợp với bất cứ thành phần trong GAC, nó sẽ được tải một cấu phần là phiên bản đó là khác nhau trong một phần sửa đổi. Số phiên bản được gọi là Cơ chế sửa chữa nhanh (QFE), đó là luôn luôn tương thích theo mặc định. Các chính sách mặc định phiên bản có thể được tùy chỉnh theo trọng các dặc tả tổ hợp trong tập tin cấu hình. Ví dụ,

<assemblyIdentity>

<binding redirect oldVersion = "1.2.3.4" newVersion = "<2.0.0.0" />

Bài giảng COP – Chuyên ngành: CNPM - Version 1

Biên soạn: Ngô Thị Lan & Nguyễn Lan Oanh - 144

Thiết lập này cho thấy các thành phần trong phiên bản "<2.0.0.0" sẽ được nạp thay vì của "1.2.3.4."

Bước 3: Đăng ký thành phần được chia sẻ trong GAC.

> Gacutil / i mycomponent.dll

Bước 4: Sử dụng thành phần được chia sẻ.

Các khách hàng phải thực hiện một tham chiếu đến các thành phần được chia sẻ để được tái sử dụng.

> Csc / t: exe / r: mycomponent.dll / out: myapp.exe myapp.cs

Để sử dụng lại các thành phần chia sẻ, mã nguồn khách hàng phải "sử dụng miền không gian tên ", nơi không gian tên có sẵn trong tổ hợp. Một ví dụ về triển khai thành phần chia sẻ của các thành phần TempConvComp được thể hiện trong những điều sau đây:

using System; using System.Reflection; [assembly:AssemblyVersion("1.0.0.0")] [assembly:AssemblyKeyFile("originator.key")] namespace TempConv {

public class TempConvComp {

public TempConvComp() {

}

public double cToF(double c) {

// how to control output format

return (int)((c*9/5.0+32)*100)/100.0; }

public double fToC(double f) {

// how to control output format return (int)((f-32)*5/9.0*100)/100.0;

Bài giảng COP – Chuyên ngành: CNPM - Version 1

Biên soạn: Ngô Thị Lan & Nguyễn Lan Oanh - 145

} } }

Các bước sau nêu ra cách chia sẻ cấu phần. >sn -k originator.key

>csc /t:library /out:TempConv.dll TempConvComp.cs >gacutil /i TempConv.dll

>csc /r:TempConv.dll /t:exe /out:TempConvCSClient.exe TempConvCSClient.cs

Một phần của tài liệu PHÁT TRIỂN PHẦN MỀM THEO HƯỚNG CẤU PHẦN (Trang 142)