Một assembly được định nghĩa là đơn vị nhỏ nhất có thể phân phối độc lập, mã phân phối lại trong .NET. Vì vậy, câu hỏi đầu tiên tôi sẽ tự hỏi mình là "tôi có bao giờ muốn tạo một phiên bản mới của mã không an toàn và phân phối nó độc lập với ứng dụng của tôi không?"
Nếu câu trả lời là có, thì bằng mọi cách, hãy đặt mã đó trong hội đồng của riêng nó.
Nếu câu trả lời là không, hãy xem xét các yếu tố khác. Ví dụ, trong bảo mật .NET "cổ điển", bạn có thể có các assembly khác nhau chạy ở các mức tin cậy khác nhau trong cùng một miền appdomain. (Trong CLR hiện đại, hệ thống đơn giản hơn rất nhiều, chỉ có mã hoàn toàn đáng tin cậy và mọi thứ khác chạy ở mức độ tin tưởng được cấp cho appdomain.) Mã của bạn thực hiện điều gì đó không an toàn cần được tin cậy hoàn toàn, nhưng mã chỉ đơn giản gọi nó có thể ít đáng tin cậy hơn nếu mã không an toàn xác nhận tập quyền chính xác.
Bạn có bao giờ gặp tình huống mã an toàn của bạn được tin cậy một phần không? Nếu vậy, sau đó bằng mọi cách, đặt mã không an toàn trong hội đồng của riêng nó, và sau đó tài liệu rằng hội đồng này phải được hoàn toàn đáng tin cậy.
Nếu bạn không ở trong các tình huống như vậy thì tôi sẽ không có khuynh hướng đưa mã không an toàn của tôi vào hội đồng của riêng mình.
Tuy nhiên, tôi muốn viết mô hình đối tượng được quản lý dễ chịu trên mã không được quản lý của tôi, thay vì chỉ hiển thị các cuộc gọi win32 thô. Ví dụ, ngày hôm sau tôi cần gọi một số xác minh tên mạnh win32 apis từ C# và tôi vừa đánh một thư viện nhỏ để lộ chúng một cách độc đáo, trừu tượng hóa tất cả các chi tiết liên quan đến nội thất riêng tư của lớp.
Nguồn
2010-02-19 20:48:44
Đủ công bằng. Cách tốt hơn câu trả lời của tôi. Bạn không thể đợi đến khi tôi có 3 upvotes vì vậy tôi có thể nhận được một huy chương để xóa nó? ;) – pdr
Không có tội gì trong việc để lại câu trả lời của bạn trong một thời gian ngay cả khi bạn cho rằng nó thấp kém hơn – Mykroft
@ Mykroft: Gọi nó là niềm tự hào cá nhân, thưa ông – pdr