Khái niệm Extension (Plugin)
Extension là cơ chế cho phép chạy các đoạn mã đóng gói từ bên ngoài, cùng với hệ thống, ứng dụng mà không làm ảnh hưởng đến phần lõi của hệ thống, ứng dụng đó. Một hệ thống cho phép cài đặt extension, là một hệ thống có khảnăng mềm dẻo, cho phép người phát triển tự do xây dựng các phần mở rộng dựa trên api mà hệ
thống cung cấp. Một Extension là tập hợp các file cài đặt, cấu hình để extension có thể chạy được.
Plugin là cũng là các phần mở rộng, cắm thêm vào hệ thống nhưng đảm nhiệm một chức năng, nhiệm vụ cụ thể. Các Plugin có thểđược chứa trong Extension. Đặc thù của Plugin là thực hiện một nhiệm vụ cụ thể vì vậy chúng thường gắn với các Class với hành vi và thuộc tính của riêng nó.
Với cơ chế Extension, hệ thống hoàn toàn có thể quản lý bật tắt các phần mở
rộng, giảm thiểu và ngăn ngừa lỗi từ các phần mở rộng bằng cách tạo ra các khuôn mẫu đòi hỏi các extension phải cài đặt nếu muốn tích hợp vào hệ thống, đảm bảo hệ
Sinh viên thực hiện: Lê Văn Thành 20102156 Khóa 55 48 thống vẫn hoạt động bình thường nếu các extension bị lỗi, từđó tăng khảnăng chịu lỗi hệ thống.
Extension xuất hiện ở rất nhiều các hệ thống, ứng dụng, framework khác nhau
như: extension trong hệ điều hành, extension với các trình duyệt web (Chorme, Firefox, IE), extension trong các web framework (joomla, wordpress)…
Cơ chế extension trong các game server engine càng trở nên rõ ràng khi người phát triển có thể xây dựng nhiều game logic khác nhau, nghiệp vụ rất đa dạng nhưng đều có đặc điểm chung là quản lý user, quản lý luồng ra vào phòng, giao tiếp giữa user và hệ thống. Do đó các hệ thống game server cần có cơ chế extension, cho phép
người phát triển tùy biến, cài đặt các phần mở rộng thông qua API mà hệ thống cung cấp.
Cấu trúc thư mục cài đặt các phần mở rộng
Hình 3.10: Cấu trúc thư mục cài đặt phần mở rộng
Theo cấu trúc thư mục trên các phần mở rộng sau khi đã được đóng gói được
đặt trong thư mục extensions. Cấu trúc file của một phần mở rộng bao gồm: thư mục
có tên tương ứng với phần mở rộng, thư mục này chứa 2 thư mục con khác là config
và lib. Trong thư mục config người phát triển cấu hình các plugin, các đối tượng sử
Sinh viên thực hiện: Lê Văn Thành 20102156 Khóa 55 49
thư viện của phần mở rộng. Sau đó hệ thống sẽcó cơ chếđể duyệt qua các thư mục này, khởi tạo extension và chạy cùng server.
Cơ chế chạy các phần mở rộng
Các chương trình viết bằng Java được các IDE hỗ trợ biên dịch các file .java thành các file .class dưới dạng byte code, sau đó sử dụng JVM để thông dịch các file .class thành mã máy tương ứng, từđó chương trình được nạp và chạy thông qua CPU.
Để chạy các phần mở rộng ta sử dụng ClassLoader trong Java hỗ trợ nạp các file class từcác file thư viện đóng gói (.jar) vào máy ảo JVM mà không cần phải đặt chúng vào –classpath khi chạy chương trình.
Hình 3.11: Cơ chế load class trong Java Trong Java có 3 loại Class Loader:
x Bootstrap Class Loader (Bộ nạp Lớp Khởi động): nạp các lớp java căn bản (core class) thuộc các gói như java.lang, java.util, v.v.. Những lớp này là một phần của môi trường thực thi của java (JRE). Bootstrap Class Loader
được triển khai riêng cho từng nền tảng nên có thể khác nhau giữa các JVM.
x Extensions Class Loader (Bộ nạp Lớp Mở rộng): nạp các lớp java từthư
mục JRE/lib/ext này hoặc bất cứ thư mục nào được định nghĩa trong biến
môi trường java.ext.dirs
x System Class Loader (Application Class Loader): load các lớp được cấu hình trong biến môi trường CLASSPATH, -cp, -classpath hoặc thuộc tính Class-Path trong file Manifest của gói JAR.
Java cung cấp các lớp mở rộng từ java.lang.ClassLoader như:
Sinh viên thực hiện: Lê Văn Thành 20102156 Khóa 55 50 dụng để nạp các file class trong lúc chạy chương trình. Ngoài ra, LTV cũng có thể cũng có thể tạo ra các lớp Class Loader của riêng mình bằng cách mở rộng class java.lang.ClassLoader.
Biểu đồ hoạt động sau đây mô tả cách hệ thống chạy các phần mở rộng:
Browse extension folder
Load all file .jar in lib folder
load class by URLClassLoader
Read config/Extension.xml
init and run object by className use
URLClassLoader
Hình 3.12: Biểu đồ hoạt động load extension
Hệ thống sẽ duyệt các phần mở rộng trong thư mục extensions, sau đó đọc vào
thư mục lib, load tất cảcác file .jar. Sau đó, hệ thống sử dụng URLClassLoader để
nạp các class trong các file .jar này vào máy ảo JVM. Từđó hệ thống có thể khởi tạo các class từclass name đọc từ file Extension.xml. Nhờcơ chế này các đối tượng từ
các phần mở rộng được khởi tạo và điều khiển theo logic của người phát triển.
Kết chương
¾ Trong chương này, người viết đồán đã trình bày về 3 giải pháp trọng tâm giải quyết bài toán là: nghiên cứu và cài đặt cơ chếNIO Network, cơ chế
phân cụm dữ liệu và áp dụng Hazelcast, cơ chế Extension (Plugin).
¾ Trong chương tiếp theo, người viết đồ án xin trình bày vềcách cài đặt hệ
Sinh viên thực hiện: Lê Văn Thành 20102156 Khóa 55 51
Chương 4: Kết quảđạt được
Nội dung chính được trình bày trong chương này: 9 Cài đặt hệ thống trong môi trường thực tế 9 Kiểm thử hiệu năng hệ thống
Qua quá trình nghiên cứu, tìm hiểu dưới sự hướng dẫn của thầy ThS Hoàng Anh Việt và anh Nguyễn Hoàng Bách em đã xây dựng thành công giải pháp tương
tác trực tuyến Parrot Interactive Solution.
Được sự hỗ trợ của công ty TapStudio, hệ thống game đã được đưa vào hoạt
động được một thời gian.