Điều Chỉnh Không Gian Tên Của Mô-Đun Skynet
Vài tuần trước, một số bạn học viên đã phàn nàn rằng các module Lua được cung cấp trong hệ sinh thái Skynet hiện tại thiếu không gian tên (namespace) chuẩn hóa. Việc đặt tên phẳng như vậy dễ gây ra xung đột tên với các module do chính team phát triển dự án tự xây dựng. Dù có thể tự thiết lập namespace cho các module do team tự phát triển, nhưng khi tích hợp chung thì cách sắp xếp này vẫn tạo cảm giác lộn xộn, thiếu nhất quán.
Sau khi cân nhắc kỹ lưỡng, tôi đã quyết định trong bản cập nhật Skynet 1.1 sẽ tiến hành chuẩn hóa namespace cho hầu hết các module hệ thống. Cụ thể, phần lớn các module sẽ được đặt dưới namespace skynet
để tạo tính thống nhất và dễ quản lý hơn.
Danh sách các module sẽ được cập nhật namespace mới như sau:
• cluster → skynet.cluster
• crypt → skynet.crypt
• datacenter → skynet.datacenter
• dns → skynet.dns
• memory → skynet.memory
• mongo → skynet.db.mongo
• redis → skynet.db.redis
• mysql → skynet.db.mysql
• multicast → skynet.multicast
• netpack → skynet.netpack
• profile → skynet.profile
• sharedata → skynet.sharedata
• sharemap → skynet.sharemap
• stm → skynet.stm
• snax → skynet.snax
• socket → skynet.socket
• socketchannel → skynet.socketchannel
• socketdriver → skynet.socketdriver
Tuy nhiên, một số module đặc biệt sẽ giữ nguyên tên gọi do phụ thuộc vào các thư viện bên ngoài không thể thay đổi namespace:
• md5
• sproto
• bson
Riêng với module http và snax, vì đã được thiết kế namespace từ phiên bản 1.0 nên không cần điều chỉnh trong đợt nâng cấp này.
Để đảm bảo tính tương thích ngược với các dự án đang sử dụng Skynet 1.0, tôi đã tạo các tập tin proxy chuyển tiếp tại thư mục lualib/compat10
. Các tập tin này sẽ đóng vai trò như cầu nối, tự động dẫn hướng các yêu cầu gọi module cũ đến phiên bản mới có namespace. Nếu bạn muốn giữ nguyên dự án cũ mà không sửa code, chỉ cần thêm lualib/compat10
vào tham số lua_path
của dự án là có thể tiếp tục chạy ổn định.
Gợi ý nâng cấp:
Chúng tôi khuyến khích các team dự án mới hoặc các dự án có thể cập nhật code nên sử dụng namespace mới chuẩn hóa để tận dụng lợi thế về tổ chức mã nguồn rõ ràng, tránh rủi ro xung đột về lâu dài.