Tổ chức quản lý tên miền

Bắt đầu với những khái niệm cơ bản, sau đây là định nghĩa không chính thức về Hệ thống tên miền:

Nhưng:

Dù vậy, bạn vẫn có thể nắm được thông tin hữu ích từ lớp này để làm việc với Tink một cách hiệu quả trong thời gian này.

Điều gì xảy ra khi bạn gọi getPrimitive() trên tên người dùng của tập hợp phím? Thao tác này sẽ chuyển tiếp lệnh gọi của bạn đến Sổ đăng ký1, chứa các đối tượng có phương thức cụ thể để tạo khoá và dữ liệu gốc, chẳng hạn như khoá AesGcm hoặc thực thể ChunkedMac. Nhiệm vụ của Sổ đăng ký là chuyển tiếp lệnh gọi đến đúng đối tượng. Phương thức này chỉ hoạt động nếu đối tượng đã được đăng ký, đó là lý do điều quan trọng là phải luôn đăng ký các dữ liệu gốc mà bạn sẽ sử dụng.

Nhưng nếu tôi sử dụng một thư viện đã đăng ký dữ liệu gốc mà tôi cần thì sao?

Đó chính xác là vấn đề. Và một trong những lý do khiến Sổ đăng ký bị xoá. Vì trong trường hợp này, mã của bạn chỉ hoạt động cho đến khi tác giả thư viện quyết định không đăng ký dữ liệu gốc đó nữa. Tại thời điểm này, mã của bạn bị lỗi và lý do vẫn không rõ ràng và khó hiểu. Vì vậy, hãy luôn đăng ký những gì bạn dùng. Ví dụ: nếu định sử dụng MAC trong mã Java, bạn nên làm như sau trong giai đoạn thiết lập:

MacConfig.register()

Mã này đảm bảo rằng tất cả các đối tượng cần thiết đã được đăng ký ở những vị trí cần thiết để bạn có thể sử dụng MAC gốc.

Vấn đề này vẫn còn một khía cạnh nữa. Một số phần phụ thuộc có thể đăng ký những nội dung mà bạn thực sự không cần và không muốn phụ thuộc vào. Đây là một lý do khác để xoá Hệ thống tên miền chung.


  1. cho chính xác là thực thể singleton toàn cầu của lớp Đăng ký. Chúng tôi sử dụng tên "Registry" (Đăng ký) cho cả lớp và singleton, thay thế cho nhau.