8. Kết quả nghiên cứu, đóng góp của luận án
2.1.3. Xây dựng OPC UA Server SDK
Kiến trúc tổng quan của OPC UA Server SDK được mô tả trong hình 2.8. Bao gồm các thành phần sau đây:
49
ServerBase: Là lớp cao nhất trong ứng dụng, mô hình hóa hoạt động của cả ứng dụng server. Lớp được xây dựng bằng cách thực thi hai giao diện sinh ra từ đặc tả của UA là ISessionEndpoint và IDiscoveryEndpoint. Đây là lớp trừu
tượng, người viết ứng dụng server cần kế thừa từ lớp này. Server sẽ thực sự
khởi động sau khi gọi phương thức Start(), phương thức này sẽ tạo ra các điểm cuối của dịch vụđể client có thể kết nối.
IServerInternalData: Đây là một giao diện, một lớp thực thi giao diện này sẽ được sử dụng để bao hàm những thành phần có thể được gọi đến bởi những thành phần khác trong server. Ví dụ: SessionManager lại cần đến thông tin từ
NodeManger, SubscriptionManager cần kiểm tra một session quản lý bởi SessionManager. Giao diện này bao gồm các lớp như trên hình vẽ đã mô tả: SessionManager, INodeManger, SubscriptionManager, ApplicationDescription, EndpointDescription, IsercurityHelper.
ServiceHost: Đối tượng nằm trong gói thư viện .NET của Microsoft, dùng để
tạo các điểm cuối cho dịch vụ.
MasterNodeManager và INodeManager: Thực thi tất cả các dịch vụliên đến việc truy cập đến không gian địa chỉ. MasterNodeManager bao gồm một CoreNodeManager và có thể là nhiều đối tượng với giao diện INodeManager khác.
CoreNodeManager: Thực thi giao diện INodeManager. Khi đối tượng
CoreNodeManager được khởi tạo, nó load toàn bộkhông gian địa chỉ tiêu chuẩn từ file vào bộ nhớ. Đây là những nút có id được định nghĩa trước, và có thể sử
dụng thuận tiện trong lập trình.
SessionManager: Thực thi những dịch vụ liên quan đến quản lý Session như
CreateSession, ActivateSession, CloseSession. Lớp này cũng duy trì một đếm thời gian đểxác định những phiên làm việc nào đã bị quá hạn.
Session: Là thực thể lưu thông tin về một phiên làm việc. Nó cung cấp hàm Activate cho phép khả năng kích hoạt chính nó dựa trên tham số truyền vào là
được chấp nhận.
SubscriptionManager: Có nhiệm vụ quản lý các đăng ký thu thập thông tin (Subscription) và phần tửđược theo dõi (Monitored Item). Đối tượng này định kỳ thu thập thông tin từ các giá trịvà lưu thay đổi vào các phần tửtương ứng.
Đồng thời định kỳ tổng hợp các thay đổi đó thành các bản tin vào các đăng ký
đểđáp ứng các yêu cầu xuất ra bản tin từ Client.
SessionPublishQueue: Một phiên làm việc có thể có nhiều subscription, và có một hàng đợi các yêu cầu (Request). Đối tượng này được buộc vào một phiên làm việc, hỗ trợ SubscriptionManager chọn ra Subscription thích hợp để trả lại các bản tin thông báo (Notification Message), đồng thời lưu các yêu cầu gửi đến vào một hàng đợi để xử lý dần.
Subscription: Đối tượng này bao gồm nhiều phần tử cần theo dõi và nó sẽ
chuẩn bị những bản tin thông báo để đáp lại những yêu cầu của Client đang ở trong hàng đợi.
50
MonitoredItem: Chứa những thông tin cần theo dõi trong đó có id của nút, id của thuộc tính. Đối tượng này được SubscriptionManager định kỳđẩy dữ liệu
vào, và sau đó lại được Subscription lấy ra để tạo nên bản tin thông báo.