Nếu bạn đang vận chuyển thư viện có thể tái sử dụng bao gồm nhiều tập hợp, nhưng chỉ một vài trong số chúng tạo thành mặt tiền, bạn có thể xem xét cài đặt các hội đồng vào GAC, nếu gói được cài đặt vào máy tính của nhà phát triển.
Hãy tưởng tượng, bạn gửi 6 hội đồng, và chỉ một trong 6 hội đồng này có mặt tiền - tức là 5 khác chỉ được sử dụng bởi mặt tiền. Bạn ship:
- MyProduct.Facade.dll - đó là thành phần chỉ nhằm mục đích được sử dụng bởi các nhà phát triển
- MyProduct.Core.dll - được sử dụng bởi MyProduct.Facade.dll, nhưng không có ý định sẽ được sử dụng bởi các nhà phát triển
- MyProduct.Component1.dll - cùng
- MyProduct.Component2.dll - cùng
- ThirdParty.Lib1.dll - thư viện của bên thứ ba sử dụng bởi MyProduct.Component1.dll
- ThirdParty.Lib2.dll - cùng
- , vv
phát triển sử dụng dự án của bạn muốn tham khảo chỉ MyProduct.Facade.dll trong các dự án riêng của họ. Nhưng khi dự án của họ chạy, nó phải có khả năng nạp tất cả các assembly mà nó tham chiếu - đệ quy. Làm thế nào điều này có thể đạt được? Nói chung, họ phải có sẵn hoặc trong thư mục Bin, vào trong GAC:
- Bạn có thể yêu cầu các nhà phát triển để xác định vị trí thư mục cài đặt của bạn và thêm tài liệu tham khảo cho tất cả N hội bạn đặt ở đó. Điều này sẽ đảm bảo chúng sẽ được sao chép vào thư mục Bin để có sẵn trong thời gian chạy.
- Bạn có thể cài đặt mẫu dự án VS.NET đã chứa 6 tham chiếu này. Một chút phức tạp, vì bạn nên tiêm đường dẫn thực tế đến các hội đồng của bạn vào mẫu này trước khi cài đặt của nó. Điều này có thể được thực hiện chỉ bởi trình cài đặt, vì đường dẫn này phụ thuộc vào đường dẫn cài đặt.
- Bạn có thể yêu cầu nhà phát triển tạo bước đăng bài đặc biệt sau trong tệp .csproj/.vbproj sao chép các phụ thuộc cần thiết vào thư mục Bin. Những bất lợi tương tự.
- Cuối cùng, bạn có thể cài đặt tất cả các hội đồng của bạn vào GAC. Trong trường hợp này, các nhà phát triển phải thêm tham chiếu vào MyProduct.Facade.dll từ dự án của họ. Mọi thứ khác sẽ có sẵn trong thời gian chạy anyway.
Lưu ý: tùy chọn cuối cùng không làm bạn làm như vậy trong khi vận chuyển dự án sang máy tính sản xuất. Bạn có thể gửi tất cả các assembly trong thư mục Bin, hoặc cài đặt chúng vào GAC - tất cả đều phụ thuộc vào tất cả mong muốn của bạn.
Vì vậy, giải pháp được mô tả cho thấy lợi thế của việc đưa các hội đồng của bên thứ ba vào GAC trong quá trình phát triển. Nó không liên quan đến sản xuất.
Như bạn có thể thấy, việc cài đặt vào GAC chủ yếu nhằm giải quyết vấn đề vị trí của các cụm được yêu cầu (phụ thuộc). Nếu một hội đồng được cài đặt vào GAC, bạn có thể xem xét nó tồn tại "lân cận" bất kỳ ứng dụng nào. Nó giống như thêm đường dẫn đến .exe vào biến PATH của bạn, nhưng trong "cách quản lý". - tất nhiên, đây là mô tả khá đơn giản;)
Nguồn
2009-06-21 16:00:26
Nếu tôi đang xây dựng phần mềm máy chủ, của riêng mình ... thì việc đưa nó vào GAC sẽ giúp hiệu suất? – Jason
Hội đồng địa phương (không được đặt trong GAC) có thêm chi phí nhưng chỉ trong khi khởi động. Sau đó, có NGEN vs JIT. Các hội đồng NGENed (nhưng chỉ những người trong GAC) mới có thể cải thiện thời gian khởi động nhưng các hội đồng JITed phải có hiệu suất thời gian chạy tốt hơn - theo lý thuyết. Bạn sẽ cần phải đo lường điều này trên ứng dụng của riêng bạn. –