Chương 1: TỔNG QUAN VỀ KIẾN TRÚC HƯỚNG DỊCH VỤ VÀ NGÔN NGỮ BPEL Trong chƣơng này, chúng ta sẽ đi tìm hiểu những nét tổng quan về kiến trúc hƣớng dịch vụ, công nghệ Web Service và ngôn ngữ thực thi tiến trình nghiệp vụ BPEL.1 Tổng quan về kiến trúc hướng dịch vụ 1.1 Kiến trúc hướng dịch vụ Kiến trúc hƣớng dịch vụ, đƣợc định nghĩa là 'Khái niệm về hệ thống trong đó mỗi ứng dụng được xem như một nguồn cung cấp dịch vụ'[20].Nói theo một cách đơn giản thì kiến trúc hƣớng dịch vụ (SOA) là một hƣớng tiếp cận với việc thiết kế và tích hợp các phần mềm, chức năng, hệ thống theo dạng module và có khả năng truy cập thông qua môi trƣờng mạng. Hệ thống theo chuẩn SOA là một tập hợp các dịch vụ đƣợc chuẩn hóa trên mạng trao đổi với nhau trong ngữ cảnh một tiến trình nghiệp vụ. Sự cộng tác trong kiến trúc SOA[20] đƣợc mô tả nhƣ sau: Hình 1.1Mô hình cộng tác hƣớng dịch vụ Trong mô hình trên, nhà cung cấp dịch vụ cần cung cấp thông tin về dịch vụ của mình cho một nơi lƣu trữ thông tin dịch vụ. Nơi này lƣu trữ mọi thông tin về dịch vụ nhƣ: đặc tả, chức năng, nhà cung cấp, giao diện sử dụng.
Ngƣời sử dụng sẽ tìm kiếm trên Website lƣu trữ để có đƣợc thông tin mô tả về dịch vụ cần tìm và sau đó là xây dựng kênh giao tiếp với phía nhà cung cấp. Kiến trúc hƣớng dịch vụ cung cấp giải pháp để giải quyết các vấn đề tồn tại của các hệ thống hiện nay nhƣ: phức tạp, không linh hoạt và không ổn định. Một hệ thống triển khai theo mô hình hƣớng dịch vụ có khả năng dễ mở rộng, liên kết tốt. Đây chính là cơ sở và nền tảng cho việc tích hợp, tái sử dụng lại những tài nguyên hiện có.
Tuy nhiên, kiến trúc hƣớng dịch vụ chỉ là mô hình lý thuyết. Để hiện thực hóa mô hình này, một trong những công nghệ đƣợc sử dụng phổ biến là dịch vụ Web (Web Service).2 Dịch vụ Web Dịch vụWeb là hạt nhân trong kiến trúc hƣớng dịch vụ. Theo IBM [12], “Dịch vụ Web là một hệ thống phần mềm được thiết kế để hỗ trợ giao tiếp giữa các hệ thống qua LUAN VAN CHAT LUONG download : add luanvanchat@agmail. Nó có giao tiếp được mô tả theo định dạng chung mà các máy tính có thể xử lý được gọi là ngôn ngữ định nghĩa dịch vụ (Web Service Definition Language - WSDL)”.
Dịch vụ Web có thể cung cấp một chức năng hoặc một tập các chức năng nhất định. Dịch vụ Web đƣợc mô tả thông qua một chuẩn theo định dạng XML, gọi là đặc tả dịch vụ, trong đó cung cấp thông tin cần thiết để có thể tƣơng tác với dịch vụ, bao gồm định dạng thông điệp (cả các toán tử), giao thức, và địa chỉ. Đặc tả này cũng ẩn đi các thông tin chi tiết bên trong, vì thế dịch vụ Web hoàn toàn độc lập với nền tảng phần cứng và phần mềm tạo nên nó. Kiến trúc hƣớng dịch vụ là cấp độ cao hơn của phát triển ứng dụng, chú trọng đến qui trình nghiệp vụ và dùng giao tiếp chuẩn để giúp che đi sự phức tạp kỹ thuật bên dƣới.
Thiết kế hƣớng dịch vụ tách riêng phần thực hiện dịch vụ (phần mềm) với giao tiếp gọi dịch vụ. Điều này tạo nên một giao tiếp nhất quán cho ứng dụng khách (client) sử dụng dịch vụ bất chấp công nghệ thực hiện dịch vụ. Thay vì xây dựng các ứng dụng đơn lẻ và đồ sộ, nhà phát triển sẽ xây dựng các dịch vụ tinh gọn có thể triển khai và tái sử dụng trong toàn bộ quy trình nghiệp vụ. Điều này cho phép tái sử dụng phần mềm tốt hơn, cũng nhƣ tăng sự linh hoạt vì nhà phát triển có thể cải tiến dịch vụ mà không làm ảnh hƣởng đến ứng dụng khách sử dụng dịch vụ.
Ƣu điểm quan trọng nhất của kiến trúc hƣớng dịch vụ là khả năng kết nối 'mềm dẻo' – loose coupling và tái sử dụng. Các dịch vụ có thể đƣợc thiết kế trên nền tảng và ngôn ngữ và ngôn ngữ bất kỳ, hoàn toàn độc lập với hệ thống Client sử dụng nó. Ví dụ, một ứng dụng Java có thể liên kết với một dịch vụ Web viết bằng công nghệ .NET và ngƣợc lại. Có thể thấy dịch vụ Web giúp cho các ứng dụng đƣợc tích hợp nhanh hơn, dễ dàng hơn và tốn ít chi phí hơn so với các công nghệ trƣớc đó.
Cụ thể, sử dụng dịch vụ Web đem lại những lợi ích sau: Giảm chi phí phát triển nghiệp vụ: do đã có dịch vụ cung cấp có sẵn. Các dịch vụ này có thể sử dụng lại nhiều lần. Cung cấp khả năng triển khai giải pháp nhanh chóng hơn: Doanh nghiệp có thể kết hợp những dịch vụ có sẵn để phát triển thành một quy trình nghiệp vụ hoàn thiện. Với việc nhanh chóng đƣa ra những ứng dụng hỗ trợ cho nghiệp vụ của doanh nghiệp với chi phí rẻ hơn, công nghệ này mở ra những cơ hội kinh doanh mới.
Để đạt đƣợc điều nay, dịch vụ Web sử dụng các giao thứchỗ trợ việc giao tiếp giữa các hệ thống nhƣ HTTP, XML, SOAP và WSDL. SOAP hay còn gọi là giao thức truy cập đối tƣợng đơn giản là giao thức để trao đổi thông tin giữa các ứng dụng phân tán. Nó dựa trên chuẩn XML bao gồm 3 phần sau: một lớp bao đóng định nghĩa khung về thông điệp và cách xử lý nó; một tập các luật đƣợc mã hóa để biểu diễn các kiểu dữ liệu mà ứng dụng định nghĩa; chuyển đổi cho các thủ tục gọi từ xa. SOAP có thể dùng kết hợp với các giao thức khác nhƣ HTTP.1 ở trên, nhà cung cấp dịch vụ LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com - 15 - sử dụng định dạng WSDL để đăng ký dịch vụ với trung tâm lƣu trữ.
Ngƣời sử dụng cũng sử dụng giao diện WSDL này để kết nối tới dịch vụ để thử nghiệm và thực thi. Việc trao đổi giữa ngƣời sử dụng dịch vụ và nhà cung cấp đƣợc thực hiện qua các thông điệp XML dựa trên giao thức SOAP.2 Kết hợp dịch vụ Ngày nay, với sự phát triển của các ứng dụng nghiệp vụ đòi hỏi các ứng dụng công nghệ thông tin phải có một hạ tầng mềm dẻo và linh hoạt để có thể nhanh chóng thay đổi và đáp ứng. Tuy nhiên, các ứng dụng CNTT truyền thống thƣờng đƣợc thiết kế theo hƣớng chức năng và thƣờng phục vụ một nghiệp vụ nhất định, khó có khả năng thay đổi nghiệp vụ khi cần. Kết quả là rất nhiều các doanh nghiệp không thể tiếp tục sử dụng lại các hệ thống cũ do không thể tích hợp với các thiết kế của hệ thống mới.
Một bài toán đƣợc đặt ra là làm sao có thể sử dụng lại các chức năng của các hệ thống cũ để tạo ra một hệ thống mới, nhằm tiết kiệm chi phí đầu tƣ CNTT trong môi trƣờng cạnh tranh hiện nay. Kiến trúc hƣớng dịch vụ ra đời nhằm giải quyết bài toán đó, ngƣời ta dùng thuật ngữ “Orchestration” – tạm dịch là kết hợp các dịch vụ. Kiến trúc này cho phép kết hợp các dịch vụ rời rạc thành một ứng dụng nghiệp vụ thống nhất một cách đơn giản và nhanh chóng mà không cần thay đổi các dịch vụ đó. Không giống nhƣ các công nghệ trƣớc đây, khi ngƣời dùng muốn sử dụng một chức năng của ứng dụng có sẵn, họ cần phải tích hợp mã nguồn hoặc các thƣ viện của ứng dụng cũ vào ứng dụng mới; kiến trúc hƣớng dịch vụ hỗ trợ khả năng sử dụng lại các chức năng này trong khi chúng vẫn là các dịch vụ Web chạy trên các hệ thống cũ.
Đây là điểm đặc biệt củakiến trúc này giúp cho việc tích hợp đƣợc nhanh hơn, đơn giản hơn.2 Kết hợp các ứng dụng theo kiến trúc SOA trong một hệ thống ngân hàng LUAN VAN CHAT LUONG download : add luanvanchat@agmail.2 trên là ví dụ về việc kết hợp các ứng dụng trong một ngân hàng theo kiến trúc hƣớng dịch vụ. Ngân hàng có rất nhiều các hệ thống, đƣợc phát triển trên các ngôn ngữ khác nhau nhƣ C, C++, .NET, Java và chạy trên các nền tảng khác nhau nhƣ: Solaris, Window, Unix, Linux. Lãnh đạo ngân hàng muốn xây dựng một hệ thống giám sát giao dịch tập trung để kiểm soát tất cả giao dịch của các hệ thống: hệ thống lõi (giao dịch ngân hàng), hệ thống thẻ ATM, hệ thống ngân hàng trực tuyến, hệ thống chứng khoán, hệ thống sàn vàng. Phòng phát triển ứng dụng đã đề xuất và xây dựng hệ thống ứng dụng theo kiến trúc hƣớng dịch vụ sử dụng công nghệ dịch vụ Web để tận dụng hạ tầng các ứng dụng sẵn có.
Mỗi ứng dụng sẵn có sẽ xây dựng dịch vụ Web để đƣa chức năng của nó ra ngoài, sau đó ứng dụng mới sẽ gọi các dịch vụ Web đó để tạo thành một ứng dụng hoàn chỉnh. Trong chiến lƣợc đa dạng hóa dịch vụ và tăng tiện ích cho khách hàng, ngân hàng muốn triển khai dịch vụ thanh toán tiền cƣớc điện thoại cho các khách hàng có nhu cầu. Công nghệ dịch vụ Web tiếp tục đƣợc lựa chọn để giao tiếp với hệ thống thanh toán cƣớc của công ty viễn thông. Trong mô hình này, công ty viễn thông đã xây dựng sẵn các dịch vụ Web cho phép truy vấn và thanh toán cƣớc, do đó phía ngân hàng chỉ cần xây dựng quy trình nghiệp vụ cho phép giao tiếp (theo công nghệ dịch vụ Web) và thực hiện các giao dịch thanh toán cƣớc điện thoại từ tài khoản của khách hàng đăng ký.
Nhƣ vậy, công nghệ dịch vụ Web không chỉ cho phép kết hợp nhiều ứng dụng và dịch vụ trong nội bộ doanh nghiệp mà còn hỗ trợ giao tiếp với hệ thống ngoài theo mô hình B2B (Business To Business). Để kết hợp đƣợc các dịch vụ Web thành một quy trình nghiệp vụ hoàn chỉnh, ngƣời ta sử dụng ngôn ngữ mô phỏng và thực thi tiến trình nghiệp vụ có tên là BPEL. Ngôn ngữ BPEL sẽ định nghĩa tiến trình, các dịch vụ ngoài và sử dụng các tác vụ, các phép toán logic để tạo thành một quy trình. Để hiểu rõ hơn về ngôn ngữ BPEL, chúng ta sẽ đi tìm hiểu về từng thành phần của nó trong phần dƣới đây.3 Ngôn ngữ BPEL 1.1 Giới thiêụ BPEL (Business Process Execution Language ) là ngôn ngữ dùng để hỗ trơ ̣ phát triể n các ứng dụng phức tạp, lớn đòi hỏi phải tổ ng hơ ̣p nhiề u dich ̣ vu ̣ Web khác nhau.
Phiên bản BPEL đầu tiên (BPEL 1.0) ra đời vào tháng 07/2002. Vào tháng 05/2003 BPEL1.1 ra đời dựa trên việc kết hợp BPEL 1.