Sự phát triển của công nghệ thông tin cho phép ứng dụng hiệu quả vào các hoạt động kinh doanh, giải trị, quản lý cũng như một số lĩnh vực khoa học xã hội khác. Sự bùng nổ của Internet đã trở thành một điều kiện hết sức thuận lợi, đem lại hiệu suất cao trong công việc đồng thời giảm thiểu chi phí cho các doanh nghiệp. Tuy nhiên các yêu cầu về nghiệp vụ phức tạp trong hệ thống này dẫn đến các hệ thống phần mềm tương ứng cũng ngày càng trở nên phức tạp, cồng kềnh và khó kiểm soát. Rất nhiều yêu cầu nghiệp vụ đòi hỏi xử lý các vấn đề liên quan đến dữ liệu phân tán, xử lý các thông tin khác nhau do nhiều tổ chức nắm giữ. Đã có nhiều kiến trúc phần mềm được đưa ra nhưng chưa đủ mạnh để giải quyết được vấn đề này. Sự ra đời của kiến trúc phần mềm hướng dịch vụ đã mở ra một hướng đi mới trong việc giải quyết các loại bài toán này.
Trang 1ĐẠI HỌC CÔNG NGHỆ - ĐẠI HỌC QUỐC GIA HÀ NỘI
Báo cáo môn các vấn đề hiện đại
công nghệ phần mềm
Multi-agent System in Web Service Composition
Sinh viên thực hiện : Hoàng Minh Đường Giảng viên hướng dẫn : TS Võ Đình Hiếu
Hà Nội, tháng 11 năm 2013
Trang 2Chương 1: Giới thiệu
Sự phát triển của công nghệ thông tin cho phép ứng dụng hiệu quả vào các hoạtđộng kinh doanh, giải trị, quản lý cũng như một số lĩnh vực khoa học xã hội khác Sựbùng nổ của Internet đã trở thành một điều kiện hết sức thuận lợi, đem lại hiệu suất caotrong công việc đồng thời giảm thiểu chi phí cho các doanh nghiệp Tuy nhiên các yêucầu về nghiệp vụ phức tạp trong hệ thống này dẫn đến các hệ thống phần mềm tươngứng cũng ngày càng trở nên phức tạp, cồng kềnh và khó kiểm soát Rất nhiều yêu cầunghiệp vụ đòi hỏi xử lý các vấn đề liên quan đến dữ liệu phân tán, xử lý các thông tinkhác nhau do nhiều tổ chức nắm giữ Đã có nhiều kiến trúc phần mềm được đưa ranhưng chưa đủ mạnh để giải quyết được vấn đề này Sự ra đời của kiến trúc phầnmềm hướng dịch vụ đã mở ra một hướng đi mới trong việc giải quyết các loại bài toánnày
Kiến trúc SOA định nghĩa một kiểu kiến trúc cho việc xây dựng các hệ thốngphân tán theo hướng dịch vụ, tức là hệ thống được phân tách thành các modulechương trình, và các module này được phát triển độc lập, các module sử dụng cáccông nghệ khác nhau nhưng vẫn có thể giao tiếp được với nhau Một công nghệ tiêubiểu nhất cho kiến trúc hướng dịch vụ là công nghệ Web Service Với công nghệ WebService, mỗi Service ở đây là một module có thể thực hiện các công việc khác nhau, ta
có thể tổng hợp các Service thành phần lại để cùng thực hiện một công việc lớn, đóđược gọi là công nghệ tích hợp Web Service, khi đó mỗi Service thành phần được gọi
là một Service Composition Sự ra đời của công nghệ Web Service đã đem lại rất nhiềulợi thế cho việc chia sẻ tài nguyên qua mạng, trợ giúp xây dựng các hệ thống phân tánđồng thời đáp ứng được tính mềm dẻo cần thiết, hệ thống có thể dễ dàng chấp nhậnnhững thay đổi lớn so với thiết kế ban đầu mà vẫn đảm bảo cho vấn đề nâng cấp vàbảo trì sau này Web Service đem đến đầy đủ sự đáp ứng cần thiết cho các quy trìnhB2B – Bussiness to Bussiness và B2C – Bussiness to Customer, chính vì thế WebService hiện tại đang là một thuật ngữ đang được nhắc đến rất nhiều và ngày càngđược sử dụng rộng rãi
Vấn đề tích hợp các service có sẵn là một phần trong kiến trúc của SOA Ngàynày việc tích hợp Web Services vẫn đang là một chủ đề được nghiên cứu rộng rãi, và
Trang 3được coi là một giải pháp cho việc sử dụng lại các service có sẵn để tạo dựng lên mộtService mới tốt hơn Báo cáo này trình bày một phương pháp mới để giải quyết vấn đềtích hợp web service nói trên Phương pháp mới này dựa trên tư tưởng cập nhật đầy
đủ khi khởi tạo và theo mô hình P2P Với mỗi một agent ở quá trình khởi tạo, nó sẽtương tác với các agent khác để có được một bảng service đầy đủ nhất Do đó, khi mộtrequest gửi tới, agent có thể trả lời ngay là thực hiện được hay không mà không cầngửi tới successor nữa Báo cáo này còn trình bày một giao thức hoạt động về cách hoạtđộng giữa các agent trong quá trình khởi tạo, tìm kiếm và thực hiện Để hiện thực hóaphương pháp đề xuất, tôi đã xây dựng công cụ WSCA Tool dựa trên JADE framework.Công cụ này không chỉ có khả năng tìm được service composition mà còn có thể thựchiện yêu cầu và trả về kết quả cho người dùng với các kiểu dữ liệu cơ bản
Cấu trúc của báo cáo được trình bày như sau: Chương 2 sẽ đề cập các kiếnthức nền tảng Ở Chương 3, chúng ta sẽ tìm hiểu về bài toán web service composition
và giải pháp sử dụng công cụ JXTA Chương 4 trình bày phương pháp đề xuất và công
cụ WSCA Và cuối cùng là phần tổng kết ở Chương 5
Trang 4Chương 2: Kiến thức nền tảng
1 Service-Oriented Architecture (SOA)
Sự phát triển của công nghệ ngày nay kéo theo một môi trường giao tiếpkhông đồng nhất giữa các hệ thống phần mềm với nhau Một vấn đề đặt rađối với các tổ chức công nghệ thông tin là làm sao xây dựng được một kiếntrúc phần mềm có khả năng tích hợp và sử dụng các thành phần mới nhằmgiảm thiểu chi phí phát triển và bảo trì hệ thống phần mềm
Chúng ta đã có các kiến trúc như OOP (Object Oriented Programming),COM/DCOM (Distributed Common Object Model), CORBA ( Common ObjectRequest Broker Architecture)…và nhiều phương thức tích hợp ứng dụngnhanh và tốt hơn Tuy nhiên, do đặc tính ràng buộc chặt chẽ giữa các thànhphần với nhau làm cho các kiến trúc này chưa thật hiệu quả Mô hình SOA –Kiến trúc hướng dịch vụ ra đời gần như giải quyết được những vấn đề khókhăn trong giao tiếp
Kiến trúc hướng dịch vụ là kiểu thiết kế hướng dẫn tạo và sử dụng cácdịch vụ nghiệp vụ cũng như định nghĩa và cung cấp một kiến trúc hạ tầngcho phép nhiều ứng dụng khác nhau có thể trao đổi dữ liệu và tham giavào quy trình nghiệp vụ bất chấp sự khác biệt về mặt ngôn ngữ lập trìnhcũng như hệ điều hành của các ứng dụng này
Một hệ thống phần mềm luôn phải thay đổi để đáp ứng những yêu cầucủa thị trường Mục tiêu của kiến trúc hướng dịch vụ là nhằm xóa bỏnhững rào cản về mặt công nghệ hiện thực, các hệ nền, tận dụng nguồntài nguyên sẵn có của các hệ thống cũ để giảm thiểu chi phí hiện thực,phát triển cũng như bảo trì hệ thống phần mềm
Trang 5Service Registry
Service Provider
Service Consumer
• Service Provider: Cung cấp stateless service phục vụ cho một nhu cầu nào đó User (service consumer) không cần quan tâm đến vị trí thực sự
mà service họ cần sử dụng đang hoạt động
• Serive Consumer: User sử dụng service được cung cấp bởi Service Provider
• Service Registry: Nơi lưu trữ thông tin về các service của các Service Provider khác nhau, Service Consumer dựa trên những thông tin này để tìm kiếm và lựa chọn Service Provider phù hợp
Figure 1: SOA actors
Service Provider sẽ đăng kí thông tin về service mà mình có thểcung cấp (các chức năng có thể cung cấp, khả năng của hệ thống(resource, performance), giá cả dịch vụ, ) vào Service Registry ServiceConsumer khi có nhu cầu về một service nào đó sẽ tìm kiếm thông tin trênService Registry Ngoài chức năng hỗ trợ tìm kiếm, Service Registry còn
có thể xếp hạng các Service Provider dựa trên các tiêu chí về chất lượngdịch vụ, bầu chọn từ các khách hàng đã sử dụng service, Những thôngtin này sẽ hỗ trợ thêm cho quá trình tìm kiếm của Service Consumer Khi
đã xác định được Service Provider mong muốn, Service Consumer thiếtlập kênh giao tiếp trực tiếp với Service Provider nhằm sử dụng servicehoặc tiến hành thương lượng thêm (về mặt giá cả, resource sử dụng, )
2 Web Service
Trang 6Là một chuẩn mở do W3C đưa ra cho cách thức mô tả dữ liệu, nó được sử dụng để định nghĩa các thành phần dữ liệu trên trang web và cho những tài liệu B2B Về hình thức, XML hoàn toàn có cấu trúc thẻ giống như ngôn ngữ HTML nhưng HTML định nghĩa thành phần được hiển thị như thế nào thì XML lại định nghĩa những thành phần đó chứa cái gì Với XML, các thẻ
có thể được lập trình viên tự tạo ra trên mỗi trang web và được chọn là địnhdạng thông điệp chuẩn bởi tính phổ biến và hiệu quả mã nguồn mở
Do dịch vụ Web là sự kết hợp của nhiều thành phần khác nhau nên nó sử dụng các tính năng và đặc trưng của các thành phần đó để giao tiếp XML
là công cụ chính để giải quyết vấn đề này và là kiến trúc nền tảng cho việc xây dựng một dịch vụ Web, tất cả dữ liệu sẽ được chuyển sang định dạng thẻ XML Khi đó, các thông tin mã hóa sẽ hoàn toàn phù hợp với các thôngtin theo chuẩn của SOAP hoặc XML-RPC và có thể tương tác với nhau trong một thể thống nhất
Dịch vụ web (Web Service) là một hệ thống phần mềm được thiết
kế để hỗ trợ tương tác giữa máy với máy thông qua mạng Nó là một giaodiện được mô tả trong 1 định dạng mà máy có thể hiểu được (cụ thể làwsdl) Các hệ thống khác nhau tương tác với dịch vụ web trong một cáchthức theo quy định bằng các mô tả sử dụng thông báo SOAP, thườngtruyền tải bằng cách sử dụng HTTP với 1 định dạng XML kết hợp với cácchuẩn web khác [W3C]
SOAP (Simple Object Access Protocol) cung cấp một cơ chế đơngiản và gọn nhẹ để trao đổi thông tin giữa các điểm trong môi trườngphân cấp, phân tán sử dụng XML có cấu trúc và kiểu SOAP không phảixác định bất kỳ ngữ nghĩa ứng dụng nào như là mô hình lập trình hay ngữnghĩa thực hiện cụ thể, nó định nghĩa 1 cơ chế đơn giản cho việc thể hiệnngữ nghĩa của ứng dụng bằng cách cung cấp mô hình gói các module và
cơ chế mã hóa cho việc mã hóa dữ liệu trong các module Điều đó cho
Trang 7phép SOAP sử dụng trong đa dạng các hệ thống khác nhau từ hệ thốngnhắn tin tới RPC.[W3C]
Nói một cách đơn giản, SOAP là một giao thức quy định cách traođổi dữ liệu giữa ứng dụng và service SOAP sử dụng cú pháp của XML đểchứa dữ liệu và dùng HTTP làm giao thức truyền tin Ta có thể định nghĩaSOAP bằng công thức: SOAP = XML + HTTP
WSDL là định dạng XML để mô tả dịch vụ mạng như là 1 tập hợp các thiết
bị đầu cuối hoạt động dựa trên các thông báo có chứa thông tin hướng tài
Trang 8liệu hoặc là hướng thủ tục Phương thức và thông báo được mô tả trừutượng, bị ràng buộc vào 1 giao thức mạng cụ thể và định dạng thông báo
để định nghĩa 1 thiết bị đầu cuối Các điểm cuối liên quan cụ thể được kếthợp thành 1 điểm cuối trừu tượng (dịch vụ) WSDL được mở rộng để chophép mô tả các thiết bị đầu cuối và các thông báo của nó bất kể thôngbáo có định dạng gì hay giao thức mạng nào được sử dụng để giao tiếp
WSDL mô tả các loại thông tin chính bao gồm: import, types, message ,portType, binding, service, port
a Types: WSDL định nghĩa các kiểu dữ liệu của thông điệp gửi
Trang 9b Message: Mô tả thông điệp được gửi giữa client và server.
Thao tác và những message được mô hình riêng rẽ để hỗ trợ tínhlinh hoạt và đơn giản hóa việc tái sử dụng lại Chẳng hạn, hai thao tácvới cùng tham số có thể chia sẻ một định nghĩa message
c Port type: WSDL mô tả cách gửi và nhận thông điệp.
WSDL định nghĩa bốn kiểu thao tác mà môôt cổng có thể hỗ trợ :
• One-way: Cổng nhâôn môôt message, message đó là message
nhâôp
• Request-response: Cổng nhâôn môôt message và gửi môôt message
phản hồi
• Solicit-response: Cổng gửi môôt message và nhâôn về môôt message
• Notification: Cổng gửi môôt message, message đó là message xuất.
• Mỗi kiểu thao tác có cú pháp biến đổi tùy theo: Thứ tự của cácmessage nhập, xuất và lỗi
<wsdl:definitions >
<wsdl:portType > *
<wsdl:operation name="nmtoken"
parameterOrder="nmtokens">
Trang 10<wsdl:input name="nmtoken"? message="qname"/>
<wsdl:output name="nmtoken"? message="qname"/>
<wsdl:fault name="nmtoken" message="qname"/>*
vi mối kết hợp
e Service: Nó sẽ thực hiện những gì đã được định nghĩa trong tập
tin giao diện và cách gọi web services theo thủ tục và phương thứcnào
f Port: một cổng đầu cuối, nó định nghĩa như môôt tâôp hợp của
binding và môôt địa chỉ mạng
Trang 11Ở đây chúng ta thấy rằng thuôôc tính kết hợp tên là qname Nótham chiếu tới môôt mối kết hợp Môôt cổng chứa đựng chính xácmột địa chỉ mạng bất kỳ cổng nào trong phần thi hành phải tươngứng chính xác với một tham chiếu trong phần giao diêôn.
Web service Structure
Tương tự với SOA, có 3 actor chính tham gia vào Web service
để mô tả dịch vụ mà mình có thể cung cấp cho Service Broker (tương
tự với Service Registry trong SOA)
• Service Broker: Lưu trữ thông tin về các service được cung cấp bởi
các Service Provider Cung cấp chức năng tìm kiếm hỗ trợ Service Requester (Service Consumer trong SOA) trong việc xác định Service Provider phù hợp Thành phần chính của Service Broker là Universal Discovery, Description, and Integration (UDDI) repositories
• Service Requester: Dùng WSDL để đặc tả nhu cầu sử dụng (loại
service, thời gian sử dụng, resource cần thiết, mức giá ) và gởi cho Service Broker Bằng việc sử dụng UDDI và chức năng tìm kiếm của Service Broker, Service Requester có thể tìm thấy Service Provider thích hợp Ngay sau đó, giữa Service Requester và Service Provider
Trang 12thiết lập kênh giao tiếp sử dụng SOAP để thương lượng giá cả và các yếu tố khác trong việc sử dụng service.
2 Agent
Ngày nay, từ "Agent – Tác nhân" được sử dụng rất nhiều, nó vôtình làm ta nghĩ đến lĩnh vực trí tuệ nhân tạo và điều đó là đúng Nhưngngày nay, việc sử dụng thuật ngữ này không còn hạn chế đối với trí tuệnhân tạo, nó được sử dụng rộng rãi trong các lĩnh vực như ngành sảnxuất tự động và khoa học máy tính.Trong khoa học máy tính, một tácnhân thông minh là một phần mềm tác nhân thể hiện một số hình thứccủa trí tuệ nhân tạo giúp người dùng cùng sử dụng và hoạt động nhândanh họ, trong việc thực hiện việc lặp đi lặp lại các nhiệm vụ liên quanđến máy tính Các phần mềm tác nhân này hoạt động trong các hệ điềuhành máy tính, cơ sở dữ liệu, mạng
Trang 13Định nghĩa: Agent là một thành phần phần mềm có tính tự chủ, có
khả năng cảm nhận môi trường và tác động lại vào môi trường Agent(phần mềm) ở đây hành động giống như Agent (con người), đại diện chomột đối tượng nào đó để thực hiện công việc
• Sự kiên trì (Persistence): Đoạn mã (Code) không thực hiện theo yêu
cầu nhưng chạy liên tục và quyết định cho chính nó khi cần thực hiệnmột số hoạt động
• Sự tự chủ (Autonomy): Mỗi tác nhân có một trạng thái riêng, độc lập
với các tác nhân khác (tự chủ ở trạng thái bên trong) đồng thời nó cóthể tự quyết định các hành động của mình (tự chủ về hành động).Tính tự chủ là đặc trưng quan trọng nhất của tác nhân
• Khả năng xã hội (Social Ability): Các tác nhân không chỉ hướng tới
đích riêng của mình mà còn có khả năng tương tác với các tác nhânkhác trong hệ thống để hướng tới đích chung của hệ thống
• Khả năng phản ứng và sự chủ động (Reactivity and Proactivity):
Các tác nhân nhận thức được ngữ cảnh mà trong đó chúng vận hành
và phản ứng lại một cách thích hợp đối với từng trường hợp khácnhau
3 Multi-agent System
Định nghĩa: Multi-agent System là một hệ thống gồm môi trường
hoạt động và các agent hoạt động trong môi trường đó Các agenttương tác lẫn nhau và tương tác với môi trường, cộng tác với nhau
để cùng thực hiện mục đích chung của hệ thống
tính toán hiệu quả hơn nhờ quá trình tính toán được phân chia chocác agent khác nhau và khả năng phối hợp cùng xử lý của nhiềuagent
• Độ tin cậy cao: Do có nhiều agent cùng tham gia giải bài toán và
các agent có cơ chế trao đổi, kiểm tra kết quả nên độ tin cậy tínhtoán trong hệ đa agent được cho là cao hơn
Trang 14• Khả năng mở rộng: Hệ đa agent là hệ mở vì có thể có thêm các
agent mới hoặc bớt đi các agent khi các agent hoàn thành nhiệm
vụ Khả năng này phù hợp với tính mở của yêu cầu các hệ phầnmềm hiện nay
quyết định phức tạp hoặc các bài toán dựa trên thông tin khôngchắc chắn như các bài toán thương lượng trong thương mại điện
tử, các bài toán điều khiển tự động
• Khả năng bảo trì: Do hệ đa agent gồm nhiều agent, mỗi agent là
một module có tính tự chủ cao nên hệ đa agent là hệ dễ bảo trì
của các agent đơn nên khi nhận biết được một thay đổi của môitrường thì các agent trong hệ thống sẽ phối hợp với nhau để đưa
ra hành động tương ứng với thay đổi đó
nhau có thể tương tác với nhau để cùng giải quyết một vấn đềchung Một agent trong hệ thường không phải chờ agent khác màchủ động tương tác để tìm ra thông tin cần thiết để giải quyết vấn
đề đặt ra cho riêng mình
mỗi agent có khả năng riêng và có thể dùng lại cho nhiều ứng dụngkhác nhau
Chương 3: Web Service Composition và
Trang 15Định nghĩa: Tích hợp Web Service chính là một quá trình xử lý để kết nối
các Web Services đã tồn tại để xây dựng lên một Web Service mới WebService mới được gọi là composite service, còn các Web Service đã tồn tại
dùng để xây dựng lên service mới thì được gọi Web Service Composition.
Trong mô hình minh họa trên, phía client sẽ gọi các service tới các WebService đã được tổng hợp thông qua file WSDL của Web Service được tổnghợp đó Từ các Composite Web Service sẽ xây dựng lời gọi đến các WebService Composition, Các Web Service Composition thực hiện các thao táctính toán, trả lại kết quả cho Composite Web Service Composite WebService tổng hợp các kết quả từ các Service thành phần và trả lại kết quảcuối cùng cho phía Client
Có 2 phương pháp tích hợp Web Service là tích hợp tĩnh và tích hợp động:
• Tích hợp được coi là tĩnh nếu chúng ta kết hợp các service tại thời điểmthiết kế hoặc tại thời điểm cài đặt các Web Service
• Tích hợp được coi là động nếu chúng ta kết hợp các service tại thời điểmcác Service đang được thực thi
2 Phân loại
Việc tích hợp các Web Service có thể phân chia thành hai loại như sau:
thường như Java, C# Quá trình này giống như phát triển một ứng dụng
từ các dịch vụ Web Trong trường hợp này, ứng dụng cũng được coi làmột Web Service, và tầng trung gian không quan tâm đến quá trình tích