3 Sử Dụng Mobile Agent Để Tích Hợp Thông Tin
3.3 Các giải pháp
Thay vì việc truyền dữ liệu từ máy chủ dữ liệu đến máy Client xử lý, sử dụng mobile agent mang mã nguồn đến máy chứa dữ liệu và xử lý ngay ở máy chủ dữ liệu, sau đó mobile agent mang kết quả về Client.
Như vậy việc áp dụng mobile agent đã đáp ứng được một yêu cầu của bài toán là tính linh động của hệ thống. Phía Server cung cấp dịch vụ dữ liệu, phía Client có thể đưa ra cách xử lý dữ liệu khác nhau. ví dụ : Client muốn liệt kê danh sách các sinh viên được học bổng. Thời gian sau Client lại muốn thống kê danh sách sinh viên được học bổng và cả con nhà chính sách cộng số tiền lại, tính tổng số tiền nhận được, tổng số tiền phải chi. Bài toán đã trở nên phức tạp hơn nhiều đòi hỏi việc xử lý dữ liệu cũng phức tạp hơn. Client sẽ viết các mobile agent và gửi đến Server để xử lý và mang kết quả về. Cho dù yêu cầu phía client có thay đổi sao đi chăng nữa hệ thống vẫn đảm bảo được tính ổn định và mềm dẻo tối đa.
Mặc dù đã đạt được mục tiêu đảm bảo được tính linh động của hệ thống song giải pháp này lại chưa giải quyết được yêu cầu về an toàn dữ liệu của bài toán. Bởi mobile
CHƯƠNG3: SỬDỤNGMOBILEAGENTĐỂTÍCHHỢPTHÔNGTIN
agent mang mã xử lý tới các nguồn dữ liệu và xử lý thông tin, tuy nhiên nếu thông tin được gửi trực tiếp cho mobile agent xử lý sẽ dẫn đến việc làm lộ thông tin do mobile agent có khả năng di chuyển từ nơi này đến nơi khác hoặc trao đổi thông tin với các agent ở máy khác. Như vậy phải có cơ chế nào đó để khi mobile agent gửi yêu cầu thì bên phía Server chạy được đoạn mã xử lý của mobile agent mà không gửi thông tin quan trọng của cho Mobile Agent.
3.3.2 Giải pháp 2 - áp dụng mẫu visitor
Giải pháp này cải tiến của giải pháp 1, phía Server có các agent dịch vụ chạy sẵn, mobile agent từ client chạy sang sẽ tìm kiếm các agent tương ứng với dịch vụ mà mình đang cần, sau đó gửi mã và các thông tin cần thiết để agent bên phía Server kiểm tra và thực hiện xử lý sau đó trả lại kết quả, mobile agent nhận được kết quả có thể tiếp tục di chuyển sang máy khác chứa dữ liệu để tích hợp thông tin cần thiết hoặc quay về client trả kết quả cho người dùng.
Tuy nhiên cơ chế gửi nhận mã giữa mobile agent và agent dịch vụ phải được cài đặt sao cho hệ thống vẫn phải đảm bảo được tính mềm dẻo. Nếu mobile agent chứa thuật toán và gửi trực tiếp cho agent dịch vụ xử lý. như vậy cứ mỗi lần có thêm một yêu cầu mới, phía client lại viết thêm một mobile agent mới, cài đặt lại các quá trình làm việc (tương tác với web/application server, với agent dịch vụ, di chuyển . . . ) sẽ dẫn đến tốn kém về mặt thời gian lẫn công sức. Mặt khác nếu mobile agent gửi mã, thông tin định danh . . . cho agent dịch vụ dẫn đến quá trình giao tiếp giữa 2 agent sẽ phức tạp. Ý tưởng sử dụng mẫu Visitor sẽ gói thuật toán và các thông tin định danh vào các đối tượng visitor, khi các yêu cầu thay đổi chỉ visitor thay đổi, mobile agent không thay đổi mặt khác việc xử lý sẽ dễ dàng hơn.
Về mẫu Visitor Mẫu visitor 3.1 cho phép thêm một phương thức mới trên tập các đối tượng không đồng nhất về kiểu của một cấu trúc mà không cần phải sửa đổi các lớp của các đối tượng bên trong cấu trúc đó.
Áp dụng mẫu visitor vào bài toán hiện tại, với mỗi phương thức là một phép xử lý mới, cấu trúc đối tượng tương ứng với tập các dịch vụ phía server ta có thể thấy khi thêm phép xử lý mới hệ thống vẫn đảm bảo giữ nguyên các dịch vụ tức là đạt được độ mềm dẻo tối đa.
CHƯƠNG3: SỬDỤNGMOBILEAGENTĐỂTÍCHHỢPTHÔNGTIN
Hình 3.1:Mẫu Visitor
Một vài đặc điểm khi sử dụng mẫu Visitor
1. Visitor làm cho việc thêm một phương thức mới trở nên dễ dàng bằng cách thêm một visitor mới. Ngược lại, nếu không sử dụng mẫu này việc mở rộng thêm các chức năng cho các lớp đòi hỏi phải sửa các lớp và định nghĩa một phương thức mới.
2. Một Visitor tập hợp các phương thức liên quan và tách dời các phương thức không liên quan đến nhau. Các phương thức liên quan tới nhau không mở rộng ra trên các lớp định nghĩa cấu trúc đối tượng, mà điều này được thực hiện trong visitor. Tập các phương thức không liên quan được phân chia ra các lớp con (subclass) visitor. Điều này làm đơn giản hóa việc định nghĩa cả các lớp thành phần (các lớp Node) và thuật toán được định nghĩa trong các lớp visitor. Một vài cấu trúc dữ liệu thuật toán đặc biệt có thể được ẩn trong visitor.
3. Việc thêm lớp mới ConcreteElement là khó khăn. mẫu Visitor làm cho khó có thể thêm một lớp con (subclass) của mỗi Element trong object structure. Mỗi lớp ConcreteElement mới làm tăng thêm một phương thức ảo trong lớp Visitor và một cài đặt tương ứng trong mọi lớp ConcreteElement. Dựa vào
4. Biểu đồ lớp hình 3.1 ta có thể thấy nếu thêm một lớp ConcreteElementC cài kế thừa lớp Element thì trong lớp Visitor phải thêm hàm ảo VisitConcreteEle-
CHƯƠNG3: SỬDỤNGMOBILEAGENTĐỂTÍCHHỢPTHÔNGTIN
mentC(ConcreteElementC) tương ứng như với ConcreteElementA và ConcreteEle- mentB, khi đó các lớp ConcreteVisitor1 và ConcreteVisitor2 phải cài đặt phương thức VisitConcreteElementC(ConcreteElementC). Đôi khi có thể cài đặt mặc định phương thức trong Visitor và tất cả các lớp ConcreteVisitor chỉ việc kế thừa, nhưng điều đó giống như một ngoại lệ hơn là quy luật
Do vậy mấu chốt để áp dụng mẫu Visitor là hoặc hầu như phải thay đổi thuật toán áp dụng trên một object structure hoặc là thay đổi các lớp của các đối tượng tạo nên cấu trúc đó. Cấu trúc cây của lớp Visitor khó có thể bảo toàn khi có lớp mới ConcreteElement được thêm vào một cách thường xuyên. Trong các trường hợp này, sẽ dễ hơn nếu chỉ định nghĩa các phương thức trên các lớp tạo nên cấu trúc. Nếu cấu trúc lớp Element là cố định, bạn có thể thêm một cách liên tục các phương thức hoặc thay đổi thuật toán, khi đó mẫu Visitor sẽ giúp bạn quản lý sự thay đổi.
Áp dụng mẫu Visitor Dựa vào những điểm mạnh và hạn chế của mẫu Visitor, hình 3.2 cải tiến mẫu visitor để áp dụng vào bài toán hiện tại. Mô hình mới đã tách bạch Service và Visitor với Agent. Đồng thời cũng đáp ứng được yêu cầu của bài toán.
Hình 3.2:Cải tiến mẫu Visitor
CHƯƠNG3: SỬDỤNGMOBILEAGENTĐỂTÍCHHỢPTHÔNGTIN
chủ chứa dữ liệu và cài các agent quản lý chạy trên nó. Client thực chất là một máy chủ phục vụ người dùng (có thể là một web server hoặc application server) nhưng đóng vai trò là Client đối với máy chủ dữ liệu, Client được cài đặt sẵn các mobile agent để đợi yêu cầu.
Trong bài toán này, các mobile agent sẽ trao đổi với các agent dịch vụ bằng các đối tượng Visitor, đối tượng visitor có nhiều kiểu, mỗi kiểu được cài đặt thuật toán khác nhau từ phía client, mobile agent mang theo loại visitor nào là phụ thuộc vào yêu cầu, visitor này được gửi tới agent quản lý bên phía máy chủ dữ liệu. Ngoài thuật toán, visitor mang theo thông tin xác thực để khi mobile agent gửi visitor cho agent dịch vụ, agent dịch vụ sẽ kiểm tra thông tin xem có quyền nào, có thể quyền lấy toàn bộ thông tin hoặc quyền được xử lý những thông tin nhưng chỉ nhận kết quả tính toán chứ không được lấy thông tin đó.
Hình 3.3:Mô hình sử dụng mobile agent tích hợp thông tin áp dụng mẫu Visitor
3.3.3 Các thành phần Client
CHƯƠNG3: SỬDỤNGMOBILEAGENTĐỂTÍCHHỢPTHÔNGTIN
• Web Server : là trung gian giữa người dùng và mobile agent, thông qua web server người dùng mobile agent mang theo các visitor sang Server để tích hợp thông tin.
• Mobile Agent : có khả năng di động tới các máy chủ và giao tiếp với các agent khác. mobile agent mang các đối tượng visitor theo, mỗi visitor chứa thông tin xác thực và mã xử lý dữ liệu. mỗi visitor đều có phương thức visit mà tham số là đối tượng Service, tùy vào loại Service sẽ có các kiểu visit khác nhau, phương thức visit này được Service gọi khi mà dịch vụ chấp nhận (accept) một visitor.
3.3.4 Các thành phần Server
Gồm hai phần chính Agent dịch vụ và Dữ liệu :
• Agent Dịch vụ : Các agent này là thực thể của lớp Agent cài đặt giao diện Service. Trong mẫu Visitor, mỗi service đề có phương thức verify và accept, phương thức verify để xác thực quyền của một visitor truy cập CSDL.
• Dữ liệu : có thể là CSDL hoặc hệ thống các tệp tin ...
3.3.5 Hoạt động
Người dùng tương tác với web server (hoặc application server) thông qua giao diện, tùy vào yêu cầu người dùng hệ thống sẽ sinh ra các yêu cầu khác nhau gửi đến mobile agent, mobile agent tạo ra visitor phù hợp với yêu cầu nhận được sau đó di chuyển đến máy có các dịch vụ tương ứng.
Mobile agent sau khi di chuyển từ client sang server sẽ tìm kiếm các agent cung cấp các dịch vụ, sau đó mobile agent gửi đối tượng visitor sang agent dịch vụ, agent dịch vụ sẽ xác thực (thông qua phương thức verify) visitor xem có quyền hay không, nếu đủ quyền truy cập thì agent dịch vụ sẽ chấp nhận (thông qua phương thức accept) visitor và cho phép visitor thực hiện các tính toán bằng cách gọi phương thức visit của visitor mà tham biến đưa vào chính là agent dịch vụ. Tiếp theo agent dịch vụ sẽ kiểm tra kết quả xử lý xem có hợp lệ không sau đó tạo một visitor khác chứa kết quả rồi gửi lại cho mobile agent. mobile agent nhận được kết quả di chuyển đến máy khác để tiếp tục tích hợp thông tin hoặc quay lại client và trả kết quả cho người dùng. Như vậy ta có thể thấy được :
CHƯƠNG3: SỬDỤNGMOBILEAGENTĐỂTÍCHHỢPTHÔNGTIN
1. Mỗi mobile agent đến, muốn sử dụng dịch vụ phải có thông tin xác thực để phía client kiểm tra xem có đủ quyền hay không.
2. Các thuật toán xử lý dữ liệu đều được cài đặt bởi mobile agent mang đến.
3. Mobile agent không hề biết đến nội dung dữ liệu được xử lý mà chỉ biết duy nhất kết quả
4. Dữ liệu trả về sẽ được agent dịch vụ kiểm tra tính hợp lệ trước khi gửi cho mobile agent.
3.4 Ý nghĩa của phương pháp
Như vậy, với việc kết hợp sử dụng mobile agent và áp dụng mẫu Visitor bài toán đặt ra đã được giải quyết. Mặt khác mô hình còn đem lại rất nhiều ý nghĩa quan trọng trong thực tiễn :
1. Do mobile agent mang xử lý đến Server để thực thi nên thuật toán được cài đặt hoàn toàn bên phía client vì vậy hệ thống đạt được độ mềm dẻo tối đa.
2. Mỗi mobile agent gói thuật toán và các thông tin xác thực gửi sang agent dịch vụ xác thực và thực thi thuật toán nên mobile agent hoàn toàn không biết được các thông tin mà agent dịch vụ phía máy chủ dữ liệu cung cấp.
3. Vì không phải tải một lượng thông tin thô cần thiết để xử lý trên đường truyền như mô hình cổ điển nên băng thông đường truyền cũng tốt hơn và việc mất mát thông tin trên đường truyền sẽ thấp hơn.
4. Các xử lý được thực hiện phía máy chủ dữ liệu do đó có thể giảm tải cho máy Client nếu nó đóng vai trò Server cho một máy khác.
5. Mô hình không chỉ áp dụng đối với bài toán quản lý dữ liệu mà trong nhiều kiểu dịch vụ khác vẫn đem lại hiệu quả cao.
CHƯƠNG 4
Thực Nghiệm
Để chứng minh tính khả thi của mô hình Sử dụng mobile agent kết hợp mẫu Visitor để tích hợp thông tin ở chương 3, ở chương này Tôi sẽ xây dựng một thực nghiệm về sử dụng mobile agent để tích hợp thông tin.
4.1 Mô tả và thiết kế bài toán
Chương trình là một ứng dụng web đơn giản có chức năng đưa ra các thống kê về lương nhân viên của công ty. Điểm đặc biệt là có nhiều dạng thống kê và bên phía thống kê không hề biết được lương cụ thể của từng nhân viên là bao nhiêu. Tùy vào lựa chọn của người dùng chương trình sẽ đưa ra các kiểu thống kê ví dụ lương trung bình, tổng lương, 5 nhân viên có lương cao nhất (nhưng không cho biết lương của từng người là bao nhiêu) ...
4.1.1 Thiết kế tổng thể
Chương trình gồm hai phần Client và Server. Phía Client cài đặt webserver, môi trường JADE. Chạy trên JADE là mobile agent có nhiệm vụ lắng nghe thông tin từ web server và tích hợp thông tin. Phía Client là các agent dịch vụ chạy trên nền JADE và CSDL.
CHƯƠNG4: THỰCNGHIỆM
4.1.2 Thiết kế phía Client
Gồm 2 phần chính là Web Server và Mobile Agent:
1. Web Server : hình 4.1 là biểu đồ UML thiết kế các gói ứng dụng web. xây dựng giao diện web tương tác với người dùng, khi người dùng gửi yêu cầu thông qua trình duyệt công việc (ví dụ thống kê tổng tiền lương của nhân viên trong một công ty) lên máy chủ web. Yêu cầu được gửi lên cho các Servlet bằng cách sử dụng công nghệ Ajax, trước đó Servlet đã dùng JadeGateway khởi tạo đối tượng MyGatewayAgent (là một agent có nhiệm vụ làm cổng giao tiếp giữa môi trường jade và ứng dụng java bên ngoài mà cụ thể ở đây là servlet). Servlet gửi thông tin yêu cầu cho Gateway Agent, Gateway Agent gửi thông điệp yêu cầu tới mobile agent.
Hình 4.1:Biểu đồ UML gói thiết kế web phía Client
2. Mobile Agent : Hình 4.2 là biểu đồ UML thiết kế các gói ứng dụng cho mobile agent chạy trên môi trường Jade, mobile agent có nhiệm vụ lắng nghe các yêu cầu đến từ các agent khác.
CHƯƠNG4: THỰCNGHIỆM
Hình 4.2:Biểu đồ UML gói thiết kế chạy trên nền JADE phía Client
4.1.3 Thiết kế phía Server
Gồm hai phần chính Agent dịch vụ và Dữ liệu (Hình 4.3 : biểu đồ UML thiết kế các gói ứng dụng Jade phía Server)
1. Agent Dịch vụ : Các agent này là thực thể của lớp Agent cài đặt giao diện Service. Trong mẫu Visitor, mỗi service đề có phương thức verify và accept, phương thức verify để xác thực quyền của một visitor truy cập CSDL.
2. Dữ liệu : CSDL về lương nhân viên
4.1.4 Hoạt động
Biểu đồ hình 4.4 mô tả quá trình làm việc của chương trình.
Ban đầu, người dùng tương tác với web server thông qua giao diện web, căn cứ theo kiểu yêu cầu, sau khi di chuyển sang phía Server, mobile agent biết được phải tạo ra kiểu
CHƯƠNG4: THỰCNGHIỆM
Hình 4.3:Biểu đồ UML gói thiết kế chạy trên nền JADE phía Client
Visitor tương ứng nào để khai thác dịch vụ (trong ứng dụng này là kiểu ComputeSalary1 hay kiểu ComputeSalary2). Các thông tin về định danh, về dịch vụ được cấu hình trong file agent.properties, mobile agent biết được dịch vụ ở máy nào cung cấp và sẽ di chuyển sang máy đó để tích hợp thông tin.
Khi mobile agent di chuyển (thực hiện lời gọi phương thức doMove()) dịch vụ di động liên nền sẽ tải tất cá các lớp cần thiết sang máy đích, trình ClassLoader sẽ tải các lớp này lên máy ảo của nó. Sau đó mobile agent sẽ tìm kiếm các agent cung cấp các dịch vụ thông qua dịch vụ DFService. Mỗi Agent dịch vụ khi chạy sẽ tự động đăng ký dịch vụ với DF agent và kết nối tới CSDL. Sau đó mobile agent sẽ tạo ra các agent căn cứ theo kiểu yêu cầu phía client và gửi đối tượng visitor sang agent dịch vụ, agent dịch vụ sẽ xác thực (thông qua phương thức verify) visitor xem có quyền hay không, việc xác thực này chủ yếu kiểm tra nội dung đối tượng CertID của Visitor, nếu đủ quyền truy cập thì agent dịch vụ sẽ chấp nhận (thông qua phương thức accept) visitor và cho phép visitor thực hiện các tính toán bằng cách gọi phương thức visit của visitor mà tham biến đưa vào chính là agent dịch vụ. Tiếp theo agent dịch vụ sẽ kiểm tra kết quả xử lý xem