CÁC GIẢI PHÁP LẬP TRÌNH C# - Trang 56

56
Chương 1: Phát triển ứng dụng

14.

14.

Qu n lý Global Assembly Cache

Qu n lý Global Assembly Cache

Bạn cần thêm hoặc loại bỏ assembly từ Global Assembly Cache (GAC).

Sử dụng công cụ Global Assembly Cache (gacutil.exe) từ dòng lệnh để xem nội
dung của GAC
, cũng như thêm hoặc loại bỏ assembly.

Trước khi được cài đặt vào GAC, assembly phải có tên mạnh (xem mục 1.9 về cách tạo tên
mạnh cho assembly). Để cài đặt assembly có tên là SomeAssembly.dll vào GAC, sử dụng lệnh

gacutil /i SomeAssembly.dll

.

Để loại bỏ SomeAssembly.dll ra khỏi GAC, sử dụng lệnh

gacutil /u SomeAssembly

. Chú ý

không sử dụng phần mở rộng .dll để nói đến assembly một khi nó đã được cài đặt vào GAC.
Để xem các assembly đã được cài đặt vào GAC, sử dụng lệnh

gacutil /l

. Lệnh này sẽ liệt kê

tất cả các assembly đã được cài đặt trong GAC, cũng như danh sách các assembly đã được
biên dịch trước sang dạng nhị phân và cài đặt trong NGEN cache. Sử dụng lệnh

gacutil /l

SomeAssembly

để tránh phải tìm hết danh sách xem một assembly đã được cài đặt chưa.

.NET Framework sử dụng GAC chỉ khi thực thi, trình biên dịch C# sẽ không tìm
trong GAC
bất kỳ tham chiếu ngoại nào mà assembly của bạn tham chiếu đến.
Trong quá trình phát triển, trình biên dịch C#
phải truy xuất được một bản sao
cục bộ của bất kỳ assembly chia sẻ nào được tham chiếu đến. Bạn có thể chép
assembly chia sẻ vào thư mục mã nguồn của bạn, hoặc sử dụng đối số

/lib

của

trình biên dịch C# để chỉ định thư mục mà trình biên dịch có thể tìm thấy các
assembly cần thiết trong đó.

15.

15.

Ngăn ng

i khác d ch ng

c mã ngu n c a b n

ườ

ượ

ồ ủ ạ

Ngăn ng

i khác d ch ng

c mã ngu n c a b n

ườ

ượ

ồ ủ ạ

Bạn muốn bảo đảm assembly .NET của bạn không bị dịch ngược.

Xây dựng các giải pháp dựa-trên-server nếu có thể để người dùng không truy
xuất assembly được. Nếu bạn phải phân phối assembly thì không có cách nào để
ngăn người dùng dịch ngược chúng. Cách tốt nhất có thể làm là sử dụng kỹ
thuật obfuscation
và các thành phần đã được biên dịch thành mã lệnh nguyên
sinh (native code
) để assembly khó bị dịch ngược hơn.

Vì assembly .NET bao gồm một tập các mã lệnh và siêu dữ liệu được chuẩn hóa, độc lập nền
tảng mô tả các kiểu nằm trong assembly, nên chúng tương đối dễ bị dịch ngược. Điều này cho
phép các trình dịch ngược dễ dàng tạo được mã nguồn rất giống với mã gốc, đây sẽ là vấn đề
khó giải quyết nếu mã của bạn có chứa các thông tin hoặc thuật toán cần giữ bí mật.
Cách duy nhất để đảm bảo người dùng không thể dịch ngược assembly là không cho họ lấy
được assembly. Nếu có thể, hiện thực các giải pháp dựa-trên-server như các ứng dụng
Microsoft ASP.NET và dịch vụ Web XML. Với một chính sách bảo mật tốt ở server, không ai
có thể truy xuất assembly, do đó không thể dịch ngược chúng.

Liên Kết Chia Sẽ

** Đây là liên kết chia sẻ bới cộng đồng người dùng, chúng tôi không chịu trách nhiệm gì về nội dung của các thông tin này. Nếu có liên kết nào không phù hợp xin hãy báo cho admin.