Sự phát triển của Internet đã thúc đẩy nhu cầu cộng tác, làm việc qua mạng và sử dụng các dịch vụ trực tuyến dần trở thành một nhu cầu thiết yếu trong cuộc sống của chúng ta. Điều đó đòi hỏi các ứng dụng không chỉ là những hệ thống hoạt động đơn lẻ trên một máy trạm (máy client) và chịu phụ thuộc vào một nền tảng cố định nào nữa, mà chúng phải là những hệ thống linh động giúp người dùng làm việc “mọi lúc, mọi nơi”. Điều đó đã làm nhà phát triển phải đối mặt với hàng loạt các vấn đề mới như làm sao tích hợp các thành phần phân tán lại với nhau; hay tái sử dụng những thành phần có sẵn; vấn đề triển khai và bảo trì… đang là một vấn đề làm điên đầu các nhà phát triển. Tuy nhiên, một thực tế hiện nay là phần mềm đang ngày càng trở nên phức tạp quá mức và dường như đang vượt khỏi khả năng kiểm soát của các mô hình phát triển hiện có. Nguyên nhân khiến cho hệ thống có độ phức tạp tăng cao là do sự xuất hiện của nhiều công nghệ mới tạo nên môi trường không đồng nhất, trong khi nhu cầu trao đổi, chia sẻ, tương tác giữa các hệ thống ngày càng tăng và không thể đáp ứng được trong môi trường như vậy. Cùng với đó là vấn đề lập trình dư thừa và không thể tái sử dụng gây tốn kém rất nhiều không những trong giai đoạn phát triển hệ thống mà trong cả vận hành bảo trì phần mềm. Giải pháp cho các vấn đề này là gì? “SOA” hay “Kiến trúc Hướng dịch vụ” là mô hình phần mềm không phải là mới, song đang rất phát triển hiện nay. Đây cũng được coi là giải pháp ưu việt cho các vấn đề đã đề cập ở trên. Kiến trúc này được phát triển từ đầu những năm 2000 đi đầu là IBM. Hiện nay SOA đang được ứng dụng rộng rãi với sự đầu tư nghiên cứu của rất các tập đoàn lớn như IBM, Oracle, SAP, Microsoft… Vậy thật sự SOA là gì ? Nó có thật sự hoàn hảo? Làm thế nào để triển khai SOA? Các vấn đề của hệ thống SOA là gì ? Đó cũng chính là những câu hỏi mà đề tài sẽ nghiên cứu và trả lời.
Trang 1ĐẠI HỌC THÁI NGUYÊN KHOA CÔNG NGHỆ THÔNG TIN
Cố vấn khoa học
: S2010-08-21 : Nguyễn Thị Dung : Th.s Nguyễn Hồng Tân
Thái Nguyên 12/2010
Trang 2MỤC LỤC
MỞ ĐẦU 1
CHƯƠNG 1: TỔNG QUAN VỀ KIẾN TRÚC HƯỚNG DỊCH VỤ (SERVICE-ORIENTED-ARCHITECTURE) 2
CHƯƠNG 2: PHÁT TRIỂN PHẦN MỀM DỰA VÀO SOA 12
CHƯƠNG 3: KẾT QUẢ VÀ THẢO LUẬN 35
40
KẾT LUẬN 41
TÀI LIỆU THAM KHẢO 42
CHỮ KÝ XÁC NHẬN 44
Trang 3MỞ ĐẦU
Sự phát triển của Internet đã thúc đẩy nhu cầu cộng tác, làm việc quamạng và sử dụng các dịch vụ trực tuyến dần trở thành một nhu cầu thiết yếutrong cuộc sống của chúng ta Điều đó đòi hỏi các ứng dụng không chỉ là những
hệ thống hoạt động đơn lẻ trên một máy trạm (máy client) và chịu phụ thuộc vàomột nền tảng cố định nào nữa, mà chúng phải là những hệ thống linh động giúpngười dùng làm việc “mọi lúc, mọi nơi” Điều đó đã làm nhà phát triển phải đốimặt với hàng loạt các vấn đề mới như làm sao tích hợp các thành phần phân tánlại với nhau; hay tái sử dụng những thành phần có sẵn; vấn đề triển khai và bảotrì… đang là một vấn đề làm điên đầu các nhà phát triển
Tuy nhiên, một thực tế hiện nay là phần mềm đang ngày càng trở nênphức tạp quá mức và dường như đang vượt khỏi khả năng kiểm soát của các môhình phát triển hiện có Nguyên nhân khiến cho hệ thống có độ phức tạp tăng cao
là do sự xuất hiện của nhiều công nghệ mới tạo nên môi trường không đồng nhất,trong khi nhu cầu trao đổi, chia sẻ, tương tác giữa các hệ thống ngày càng tăng vàkhông thể đáp ứng được trong môi trường như vậy Cùng với đó là vấn đề lậptrình dư thừa và không thể tái sử dụng gây tốn kém rất nhiều không những tronggiai đoạn phát triển hệ thống mà trong cả vận hành bảo trì phần mềm Giải phápcho các vấn đề này là gì?
“SOA” hay “Kiến trúc Hướng dịch vụ” là mô hình phần mềm không phải
là mới, song đang rất phát triển hiện nay Đây cũng được coi là giải pháp ưu việtcho các vấn đề đã đề cập ở trên Kiến trúc này được phát triển từ đầu những năm
2000 đi đầu là IBM Hiện nay SOA đang được ứng dụng rộng rãi với sự đầu tưnghiên cứu của rất các tập đoàn lớn như IBM, Oracle, SAP, Microsoft…
Vậy thật sự SOA là gì ? Nó có thật sự hoàn hảo? Làm thế nào để triểnkhai SOA? Các vấn đề của hệ thống SOA là gì ? Đó cũng chính là những câu hỏi
mà đề tài sẽ nghiên cứu và trả lời
Thái Nguyên, năm 2010
Nguyễn Thị Dung
Trang 4CHƯƠNG 1:
TỔNG QUAN VỀ KIẾN TRÚC HƯỚNG DỊCH VỤ (SERVICE-ORIENTED-ARCHITECTURE)
1.1 Kiến trúc phần mềm hiện nay
1.1.1 Một số kiến trúc phần mềm phân tán hiện nay
Một số mô hình kiến trúc phân tán đang sử dụng phổ biến nhất hiện naylà: CORBA, RMI, DCOM, và EJB Các kiến trúc này là sự mở rộng của các hệthống hướng đối tượng bằng cách cho phép phân tán các đối tượng trên mạng.Đối tượng có thể có không gian địa chỉ bên ngoài ứng dụng, hoặc ở một máykhác so với máy chứa ứng dụng trong khi vẫn được tham chiếu sử dụng như mộtphần của ứng dụng
RMI (Remote Method Invocation):
RMI là một phần của bộ J2SDK (Java 2 Platform Standard DevelopmentKit) của Sun và là các hàm thư viện hỗ trợ cho các lời triệu gọi phương thức từ
xa và trả về giá trị cho các ứng dụng tính toán phân tán RMI cho phép chạy cácđối tượng trên môi trường JVM (Java Virtual Machine) triệu gọi với đối trượngchạy trên nền JVM khác thông qua việc sử dụng giao diện chung của các phươngthức trên client và server RMI cung cấp cho việc trao đổi truyền thông giữa cácchương trình được viết bằng ngôn ngữ lập trình Java
Ưu điểm của kiến trúc đối tượng phân tán RMI là người lập trình chỉ cầnlập trình các lời gọi phương thức vì đối tượng được gọi đã hiện diện trong máy
ảo của nó Nhưng nhược điểm là RMI chỉ thích hợp cho các ứng dụng viết trênngôn ngữ Java
CORBA (Common Object Request Broker Architecture)
Là một chuẩn công nghiệp được đưa ra bởi OMG (Object ManagementGroup), cho phép gọi các phương thức từ xa và nhận kết quả trả về, nhưng khônggiống như RMI, nó có thể được sử dụng khi bên phía gọi và bên phía phươngthức được gọi có thể sử dụng ngôn ngữ lập trình khác nhau, bao gồm cả trườnghợp cả 2 bên không sử dụng ngôn ngữ Java
CORBA được định nghĩa từ 2 thứ:
Trang 5• Thực thể mà cho phép liên lạc giữa 2 tiến trình được gọi là 1 môgiới yêu cầu đối tượng (Object Request Broker - ORB).
• Một giao thức được ORB dùng để liên lạc giữa nhiều tiến trình,được gọi là IIOP (Internet Interoperability Protocol)
Ưu điểm của CORBA: các lập trình viên có thể tùy chọn ngôn ngữ lậptrình, nền tảng phần cứng, giao thức mạng và công nghệ để phát triển mà vẫnthỏa mãn các tính chất của CORBA Tuy nhiên CORBA có nhược điểm là nó làngôn ngữ lập trình cấp thấp, rất phức tạp, khó học và cần một đội ngũ phát triển
có kinh nghiệm Ngoài ra các đối tượng CORBA khó tái sử dụng Các ứng dụngdựa trên CORBA hiện nay đang dần đi vào thoái trào
DCOM (Distributed Component Object Model)
DCOM là công nghệ độc quyền của Microsoft, nó định nghĩa các thànhphần của phần mềm được phân tán qua các mạng máy tính để truyền thông vớicác thành phần khác DCOM hỗ trợ kết nối giữa các đối tượng và kết nối này cóthể được thay đổi lúc đang chạy Các đối tượng DCOM được triển khai bên trongcác gói nhị phân chứa mã lệnh quản lý vòng đời của đối tượng và việc đăng kýđối tượng
Hình 1.1: Mô hình tương tác của các đối tượng DCOM.
DCOM mang đến nhiều ưu điểm như: dễ triển khai, chi phí thấp, tính ổnđịnh, không phụ thuộc vào địa lý, quản lý kết nối hiệu quả và dễ mở rộng Tuynhiên, các công nghệ của Microsoft có một nhược điểm lớn là bị giới hạn trên hệnền Windows do chiến lược độc quyền của Microsoft
1.1.2 Vấn đề phát sinh, nguyên nhân và giải pháp
Hiện nay áp lực đặt lên các doanh nghiệp ngày càng lớn như: giảm chi phíđầu tư cơ sở hạ tầng, khai thác có hiệu quả các công nghệ có sẵn, phục vụ yêucầu khách hàng tốt hơn, đáp ứng tốt các thay đổi thường xuyên về nghiệp vụ, khảnăng tích hợp cao với các hệ thống bên ngoài…
Trang 6Xây dựng được hệ thống đáp ứng được tất cả các nhu cầu đó quả là vấn đề
vô cùng khó khăn Bởi vậy một hướng đi mới cho các doanh nghiệp chính là tìmkiếm các giải pháp tích hợp các ứng dụng có sẵn hoặc kết hợp với ứng dụng củacác doanh nghiệp khác sao cho thỏa mãn nhu cầu
Trong quá trình kết hợp chắc chắn sẽ gặp những khó khăn:
- Không đủ khả năng quản lý quy trình nghiệp vụ
- Tốn chi phí tích hợp
- Quá nhiều định dạng dữ liệu
- Nhu cầu và yêu cầu của khách hàng thường xuyên thay đổi nhanhchóng nhằm tạo ra tính cạnh tranh liên tục
- Vấn đề an ninh bảo mật
Đa phần những khó khăn trên là bắt nguồn từ các nguyên nhân sau:
- Phức tạp: Ngày nay mỗi doanh nghiệp công nghệ thông tin có nhiềunhững hệ thống trên các nền tảng khác nhau, và hoạt động nghiệp vụ khác nhau.Các công ty phát triển phần mềm phải thuê các nhóm nhân viên giàu kinhnghiệm, có khả năng trên các lĩnh vực khác nhau để phát triển, triển khai và quản
lý các ứng dụng và hệ thống mà bản thân chúng không đồng nhất Thêm đó làviệc nâng cấp khó khăn, tích hợp cùng với nhau, và bảo mật ngày càng cao đãlàm gia tăng tính phức tạp cho hệ thống
- Không linh hoạt: Cùng với sự phức tạp trong chiến lược phát triển,cũng như cơ sở hạ tầng của các công ty Hầu như công ty nào cũng có những ứngdụng có sẵn nhưng khó nâng cấp, khó kết hợp hoạt động, mà không thể thay thếđược Vấn đề tích hợp trở nên khó khăn hơn và tốn kém hơn
- Không bền vững: Tiếp đó là sự không bên vững của hệ thống Cácphương pháp tiếp cận truyền thống trong việc xây dựng các hệ thống phần mềmthương dẫn đến rất nhiều những giải pháp khác nhau được lắp ghép, tích hợp.Kết quả mỗi khi thay đổi về quy trình nghiệp vụ hay yêu cầu thì các công ty phảichấp nhận phát triển những dự án tốn kém hoặc thay thế các công nghệ khôngphù hợp
Chính vì vậy mà các doanh nghiệp cần phải có một hướng tiếp cận mới đểgiải quyết vấn đề môi trường không đồng nhất và tốc độ chóng mặt của sự thayđổi công nghệ trong khi nguồn ngân sách bị hạn hẹp May mắn thay, vẫn còn có
Trang 7một giải pháp để giải quyết khá toàn diện về mọi mặt khó khăn này và nó đãđược triển triển khai trong thực tế “Kiến trúc hướng dịch vụ” (Service OrientedArchitecture - SOA) là cách tiếp cận để xây dựng hệ thống công nghệ thông tincho phép các doanh nghiệp tận dụng những gì đang có và dễ dàng thay đổi theoyêu cầu để hỗ trợ cho doanh nghiệp.
SOA được xem như là bước phát triển tiếp theo của nghành công nghệ phần mềm
1.2 Kiến trúc hướng dịch vụ - SOA
1.2.1 Khái niệm
SOA (Service Oriented Architecture) – Kiến trúc Định hướng Dịch vụ là
một cách tiếp cận hay một phương pháp luận để thiết kế và tích hợp các thànhphần khác nhau, bao gồm các phần mềm và các chức năng riêng lẻ lại thành một
hệ thống hoàn chỉnh Kiến trúc SOA rất giống với cấu trúc của các phần mềmhướng đối tượng gồm nhiều module Tuy nhiên khái niệm module trong SOAkhông đơn thuần là một gói phần mềm, hay một bộ thư viện nào đó Thay vào
đó, mỗi module trong một ứng dụng SOA là một dịch vụ được cung cấp rải rác ởnhiều nơi khác nhau và có thể truy cập thông qua môi trường mạng Nói mộtcách ngắn gọn, một hệ thống SOA là một tập hợp nhiều dịch vụ được cung cấptrên mạng, được tích hợp lại với nhau để cùng cộng tác thực hiện các tác vụ nào
đó theo yêu cầu của khác hàng
Một trong những cách hiểu sai lầm nhất về SOA là coi SOA là một côngnghệ Mặc dù SOA hoạt động được là nhờ công nghệ, nhưng khách hàng cầnphải chuyển đổi từ chỗ chỉ việc tích hợp công nghệ SOA sang việc phải điềuchỉnh các phương pháp thực hiện dự án, chính sách bảo trì và thay đổi để đạtđược các lợi ích về khả năng trưởng thành và đáp ứng
Dịch vụ (service) là yếu tố then chốt trong SOA Có thể hiểu dịch vụ như là
một loại module thực hiện một quy trình nghiệp vụ nào đó Một trong những mụcđích của SOA là giúp các ứng dụng có thể “giao tiếp” được với nhau mà khôngcần biết các chi tiết kỹ thuật bên trong Để thực hiện điều đó SOA định ra mộtchuẩn giao tiếp (dùng để gọi hàm dịch vụ) được định nghĩa rõ ràng và độc lậpvới nền tảng hệ thống, và có thể tái sử dụng Như vậy, SOA là cấp độ cao hơncủa phát triển ứng dụng, chú trọng đến quy trình nghiệp vụ và dùng giao tiếp
Trang 8khái niệm dịch vụ, nó giúp cho các doanh nghiệp có thể tích hợp các thành phầnhiện có vào các ứng dụng mới và các thành phần này có thể được chia sẻ hoặc tái
sử dụng trong nhiều lĩnh vực khác nhau của công ty đó mà không cần phải chỉnhsửa mã nguồn hay phải tái cấu trúc lại hệ thống
Tóm lại, một dịch vụ có các đặc điểm sau:
Có ranh giới rõ ràng (Boundaries Are Explicit): Mỗi service được xây
dựng dựa trên các giao chuẩn hóa đã được sử dụng rộng rãi Chi tiết hiệnthực của mỗi service sẽ không được thể hiện ra bên ngoài Mỗi service chỉcông bố một số các giao của nó cho người sử dụng có thể dùng để gởi cácyêu cầu và nhận kết quả trả về
Tính tự trị (Autonomous): Về mặt lý thuyết, mỗi service có tính độc lập
cao, có thể được xây dựng và đưa vào sử dụng mà không phụ thuộc vàocác service khác
Share the Schema and Contract, Not the Class: Về mặt trao đổi dữ liệu,các service không truyền các class và type Thay vào đó, các class và type
sẽ được đặc tả hình thức (data được đặc tả trong schema, behavior đượcđặc tả thành các contract)
Service Compatibility Is Based on Policy: Sự tương thích giữa các service
được căn cứ vào các policy (chính sách) Tương thích về mặt cấu trúc dựatrên các đặc tả hình thức bao gồm contract (dựa trên Web ServiceDescription Language (WSDL) hoặc Business Process ExecutionLanguage for Web Services (BPEL4WS)) và schema (XSD) Sự tươngthích dựa trên policy cung cấp khả năng phân tích cũng như đảm bảo sựtương thích giữa các service
Có nhiều cách khác nhau để kết nối các dịch vụ, chẳng hạn dùng các giaothức mạng có sẵn, hoặc tạo một giao thức riêng Nhưng từ năm 2001, các dịch vụweb (Web service) được xây dựng dựa trên nền tảng web toàn cầu, bất cứ nơinào cũng có, đã trở thành một phương pháp phổ biến cho việc kết nối các thànhphần của hệ thống SOA với nhau Thoạt nhìn SOA và Web Service trông có vẻgiống nhau nhưng chúng không phải là một Chúng ta sẽ tìm hiểu rõ hơn về cácWeb Service trong các phần tiếp theo
Trang 9Hình 1.2: Mô hình cơ bản của SOA.
vụ cao cấp hơn hay còn gọi là ứng dụng tổ hợp
- Sự khác biệt về công nghệ không thành vấn đề và khả năng tương tác trởthành mục tiêu then chốt
- Các chuẩn mở phải được thông qua để cho phép tích hợp giữa các doanhnghiệp Phối hợp tiến trình nghiệp vụ giữa nhiều nhà cung cấp, nhiều đốitác thậm chí có thể với cả khách hàng
- Phải chú ý tới việc quản lý và và đảm bảo khả năng có thể quản trị của hệthống để đảm bảo tính linh hoạt do ba nguyên tắc đầu tiên không bị xáotrộn và xung đột với nhau
Nói cách khác, SOA nhấn mạnh việc hạ thấp các rào cản truyền thống tớikhả năng tái sử dụng của ứng dụng Tôn trọng nguyên tắc thiết kế này của SOA
sẽ giải quyết được bài toán lớn về vấn đề tích hợp cũng như bảo trì hệ thống phầnmềm đang là thách thức đối với các nhà phát triển công nghệ thông tin trong giaiđoạn hiện nay
Dựa trên nguyên lý, hệ thống SOA có những tính chất cơ bản Để có thểxem xét hoạt động và xây dựng được hệ thống thì việc hiểu rõ tính chất của hệthống đóng vai trò rất quan trọng
Trang 101.2.3 Tính chất của SOA
1.2.3.1 Kết nối lỏng lẻo
Vấn đề kết nối nói tới một số ràng buộc giữa các module lại với nhau Có
2 loại kết nối là lỏng lẻo và chặt chẽ Các module có tính chất kết nối lỏng lẻo có
một số ràng buộc được mô tả rõ ràng trong khi các module có tính kết nối chặt lại
có nhiều ràng buộc không thể biết trước Hầu như mọi kiến trúc phần mềm đều
hướng đến tính kết nối lỏng lẻo giữa các module Mức độ kết nối của hệ thống
ảnh hưởng trực tiếp đến khả năng chỉnh sửa hệ thống Kết nối càng chặt baonhiêu thì có nhiều thay đổi chỉnh sửa khi có sự thay đổi nào đó xảy ra Mức độkết nối tăng dần khi bên sử dụng dịch vụ cần biết nhiều thông tin ngầm định củabên cung cấp dịch vụ để sử dụng dịch vụ được cung cấp Nghĩa là nếu bên sửdụng dịch vụ biết vị trí và chi tiết định dạng dữ liệu của bên cung cấp dịch vụ thìquan hệ sẽ càng trở nên chặt chẽ Ngược lại, nếu bên sử dụng dịch vụ không cầnbiết mọi thông tin chi tiết của dịch vụ trước khi triệu gọi nó thì quan hệ giữa 2
bên càng có tính lỏng lẻo.
Kết nối lỏng lẻo làm cho sự phụ thuộc ở mức tối thiểu Khi đó, những sựthay đổi sẽ có ảnh hưởng ít nhất tới hệ thống và hệ thống vẫn có thể hoạt độngkhi có thành phần nào đó bị hư hỏng Tối thiểu hóa sự phụ thuộc giúp hệ thốnglinh hoạt, và ít xảy ra sự cố
Tính kết nối lỏng lẻo giúp gỡ bỏ những ràng buộc điều khiển giữa những
hệ thống đầu cuối Mỗi hệ thống có thể tự quản lý độc lập nhằm tăng năng xuất,khả năng mở rộng và khả năng đáp ứng cao Những thay đổi cài đặt cúng đượcche dấu đi Tính chất kết nối lỏng lẻo đem đến sự độc lập giữa bên cung cấp vàbên sử dụng nhưng nó đòi hỏi các giao diện phải theo chuần và cần một thànhphần trung gian quản lý, trung chuyển yêu cầu giữa các hệ thống đầu cuối
1.2.3.2 Tái sử dụng dịch vụ
Bởi vì các dịch vụ được cung cấp trên môi trường mạng và được đăng ký
ở một nơi nhất định nên chúng dễ ràng được tìm thấy và sử dụng lại Nếu mộtdịch vụ không có khả năng tái sử dụng, nó cũng không cần đến giao diện mô tả.Các dịch vụ có thể được tái sử dụng lại bằng cách kết hợp lại với nhau theo nhiềumục đích khác nhau Tái sử dụng lại các dịch vụ còn giúp loại bỏ những thànhphần trùng lặp và tăng tốc độ vững chắc trong cài đặt, nó còn giúp đơn giản hóaviệc quản trị Thực ra tái sử dụng dịch vụ lại dễ dàng hơn tái sử dụng thành tố
Trang 11hay lớp Những dịch vụ được dùng chung bởi tất cả các ứng dụng của một hệthống SOA gọi là những dịch vụ chia sẻ cơ sở hạ tầng.
1.2.3.3 Quản lý chính sách
Tập các chính sách là tập tất cả các qui tắc chung mà mọi thành phầntrong hệ thống đều phải tuân thủ Khi sử dụng các dịch vụ chia sẻ trên mạng, tùytheo mỗi ứng dụng sẽ có một luật kết hợp riêng gọi là các chính sách Các chínhsách cần được quản lý và áp dụng cho mỗi dịch vụ cả trong quá trình thiết kế vàtrong thời gian triển khai
Việc đó làm tăng khả năng tạo ra các dịch vụ có đặc tính tái sử dụng Bởi
vì các chính sách được thiết kế tách biệt, và tùy vào mỗi ứng dụng nên giảm tối
đa các thay đổi phần mềm Nếu không sử dụng các chính sách, thì các nhân viênphát triển phần mềm, nhóm điều hành và nhóm hỗ trợ phải làm việc với nhautrong suốt thời gian phát triển để cài đặt và kiểm tra những chính sách Ngượclại, nếu sử dụng các chính sách, những nhân viên phát triển phần mềm chỉ cầntập trung vào quy trình nghiệp vụ trong khi nhóm điều hành và nhóm hỗ trợ tậptrung vào các luật kết hợp
1.2.3.4 Tự động dò tìm và ràng buộc động
SOA hỗ trợ khái niệm khai thác dịch vụ (service discovery) Một người sửdụng cần đến một dịch vụ nào đó có thể tìm kiếm dịch vụ dựa trên một số tiêuchuẩn khi cần Người sử dụng chỉ cần hỏi một registry về một dịch vụ nào thỏayêu cầu tìm kiếm Ví dụ, một hệ thống chuyển khoản, khách hàng yêu cầu mộtregistry tìm tất cả các dịch vụ có khả năng kiểm tra thẻ tín dụng Registry trả vềmột tập các danh mục thỏa mãn yêu cầu Các mục đó chứa thông tin về dịch vụ,bao gồm cả chi phí giao dịch Bên sử dụng sẽ chọn một dịch vụ có phí giao dịchthấp nhất trong danh sách các dịch vụ trả về, kết nối đến nhà cung cấp dịch vụdựa trên thông tin địa chỉ registry đã cung cấp để sử dụng dịch vụ kiểm tra thẻ tíndụng Trong phần mô tả dịch vụ kèm theo đã có tất cả các tham số cần thiết dùng
để thực thi dịch vụ, bên sử dụng chỉ cần định dạng dữ liệu yêu cầu đúng theo mô
tả và gửi đi Nhà cung cấp dịch vụ sẽ thực thi kiểm tra thẻ tín dụng và trả về mộtthông điếp có định dạng đúng như trong phần mô tả dịch vụ Mối ràng buộc duynhất giữa bên cung cấp và bên sử dụng là bản hợp đồng được cung cấp bởiregistry trung gian Mối ràng buộc này là ràng buộc trong thời gian chạy Tất cảthông tin cần thiết về dịch vụ được lấy về và sử dụng trong khi chạy Vậy với
Trang 12SOA, bên sử dụng dịch vụ không cần biết định dạng của thông điệp yêu cầu vàthông điệp trả về, cũng như địa chỉ dịch vụ cho đến khi cần.
1.2.3.5 Khả năng tự hồi phục
Với kích cỡ và độ phức tạp của những hệ thống phân tán ngày nay, khảnăng phục hồi của một hệ thống sau khi bị sự cố là một yếu tố rất quan trọng.Một hệ thống tự phục hồi là hệ thống có khả năng tự phục hồi sau khi lỗi màkhông cần sự can thiệp của con người
Độ tin cậy là mức độ đo khả năng của một hệ thống xử lý tốt như thế nàotrong tình trạng hỗn loạn Trong SOA, các dịch vụ luôn có thể hoạt động hayngừng hoạt động bất cứ lúc nào, nhất là đối với những áp dụng tổng hợp từ nhiềudịch vụ của nhiều tổ chức khác nhau Độ tin cậy phụ thuộc vào khả năng phụchồi của phần cứng sau khi bị lỗi Hạ tầng mạng phải cho phép các kết nối động từnhiều hệ thống khác nhau kết nối đến trong khi chạy Một khía cạnh khác ảnhhưởng đến độ tin cậy là kiến trúc mà dựa trên đó những ứng dụng được xâydựng Một kiến trúc hỗ trợ kết nối và thực thi động sẽ có khả năng tự phục hồihơn một hệ thống không hỗ trợ những tính năng trên
Ngoài ra, những hệ thống dựa trên dịch vụ yêu cầu tách biệt giữa giaodiện và cài đặt, nên có thể có nhiều cài đặt khác nhau cho cùng một giao diện.Nếu một thể hiện service nào đó không hoạt động thì một thể hiện khác vẫn cóthể hoàn tất giao dịch cho khách hàng mà không bị ảnh hưởng gì Khả năng nàychỉ có được khi client tương tác với giao diện của dịch vụ chứ không tương táctrực tiếp cài đặt của dịch vụ Đây là một trong những tính chất cơ bản của hệthống hướng dịch vụ (SOA)
1.2.4 Lợi ích của SOA
Sử dụng mô hình SOA trong việc thiết kế hệ thống mang lại rất nhiều lợiích về cả mặt kinh tế và kỹ thuật
Về mặt kinh tế:
- Doanh nghiệp có điều kiện tập trung thời gian để tìm kiếm các giảipháp cho các bài toán liên quan đến kinh tế
- Thúc đẩy khả năng phát triển của hệ thống hiện có cũng như khả năng
mở rộng của hệ thống trong tương lai
Lợi ích về mặt kỹ thuật:
Trang 13- Độc lập hệ thống : những service không phụ thuộc vào hệ thống vàmạng cụ thể.
1.2.5 Ưu nhược điểm của SOA
SOA có thể được coi là một kiến trúc ưu việt trong thiết kế và xây dựng
hệ thống phần mềm cho doanh nghiệp bởi:
- Hệ thống uyển chuyển và lâu dài thuận tiện cho việc chỉnh sửa, nâng cấphoặc mở rộng hệ thống
- Dễ dàng và nhanh chóng tạo ra các tiến trình nghiệp vụ từ các service đãcó
- Khả năng tương tác của các service
Tuy nhiên, bên cạnh những ưu điểm SOA vẫn tồn tại một số yếu điểm như sau:
- Hệ thống phức tạp
- Khó miêu tả dữ liệu không cấu trúc trong header của message
- Đặc biệt, khi xây dựng ứng dụng tổng hợp từ nhiều dịch vụ với tính tái sửdụng cao thì vấn đề bảo mật như: xác thực, phân quyền, bí mật và toànvẹn dữ liệu, bảo vệ quyền riêng tư… trở thành một bài toán hết sức phứctạp và đòi hỏi giải quyết bằng những hướng tiếp cận bảo mật hoàn toànmới so với các phương pháp bảo mật truyền thống
Trên đây là những trình bày tổng quan và đặc trưng nhất của SOA VậySOA hoạt động như thế nào? Bằng cách nào để triển khai nguyên lý SOA vào hệthống phần mềm thực tế và qui trình xây dựng hệ thống ra sao? Phần tiếp theo sẽ
đi sâu hơn về SOA và trả lời các câu hỏi đó
Trang 14CHƯƠNG 2:
PHÁT TRIỂN PHẦN MỀM DỰA VÀO SOA
2.1 Mô hình hoạt động và kiến trúc chi tiết của hệ thống
2.1.1 Mô hình tổng thể của SOA
Hình 2.1: Mô hình tổng quan của SOA
- Service Provider: Cung cấp các 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 Họ chỉ cần quan tâm dịch vụ đó là gì
- Serive Consumer: khách hàng dịch vụ hay những 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 ServiceProvider 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
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 Service Consumer khi có nhu cầu về mộtservice nào đó sẽ tìm kiếm thông tin trên Service 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êncác tiêu chí về chất lượng dịch vụ, bầu chọn từ các khách hàng đã sử dụngservice Những thông tin này sẽ hỗ trợ thêm cho quá trình tìm kiếm của ServiceConsumer Khi đã xác định được Service Provider mong muốn, ServiceConsumer thiết lập kênh giao tiếp trực tiếp với Service Provider nhằm sử dụngservice hoặc tiến hành thương lượng thêm (về mặt giá cả, resource sử dụng )
Trang 152.1.2 Mô hình giao tiếp bằng thông điệp (message) trong SOA
So với kiểu thiết kế Component-Based (hướng thành phần), điểm khácbiệt chính của SOA là cung cấp khả năng giao tiếp giữa các thành phần trong hệthống sử dụng thông điệp (message) dựa trên các giao thức đã được chuẩn hóa(HTTP, FTP, SMTP ) Chính nhờ đặc điểm này, hệ thống SOA trở nên độc lậpvới nền (platform independent) Các service hoạt động trên các platform khácnhau vẫn có thể giao tiếp với nhau nhờ vào các interface giao tiếp đã được chuẩnhóa để cộng tác xử lý một tác vụ nào đó
Hình 2.2: Message được truyền nhận giữa các dịch vụ
Sử dụng thông điệp (message) để giao tiếp có các lợi thế sau:
• Độc lập nền: thông điệp (message) trở thành ngôn ngữ chung của cácplatform và các ngôn ngữ lập trình khác nhau Điều này đảm bảo các service trêncác platform khác nhau hoạt động với cấu trúc dữ liệu đặc thù của platform đó
• Giao tiếp bất đồng bộ: Người gửi và người nhận không cần phải chờthông điệp trả lời sau khi đã gởi đi một thông điệp Điều này giúp cho người gửi
và người nhận tiếp tục xử lý công việc sau khi gửi thông điệp mà không cầndừng thực thi để chờ thông điệp trả lời
• Giao tiếp tin cậy: các thông điệp từ bên gửi có thể được gửi đến mộtservice trung gian có nhiệm vụ lưu trữ (store) các thông điệp Service trung gian
sẽ chuyển tiếp (forward) thông điệp cho bên nhận khi bên nhận có thể xử lý yêucầu tiếp theo Cơ chế Store-and-Forward này đảm bảo các thông điệp sẽ không bịthất lạc trong trường hợp Receiver bị quá tải và không thể nhận thêm yêu cầumới
• Quản lý luồng: Việc trao đổi thông điệp theo cơ chế bất đồng bộ giúpứng dụng không cần ngừng thực thi để chờ một tác vụ kết thúc mà có thể tạo racác luồng (thread) xử lý các công việc khác nhau
Trang 16• Giao tiếp từ xa: Các thông điệp lưu trữ thông tin về các đối tượng dữliệu dưới dạng đặc tả hình thức thay thế việc phải serialization and deserializationcác đối tượng dữ liệu truyền qua mạng khi ứng dụng thực hiện gọi từ xa một ứngdụng khác.
• Bảo mật end-to-end: Thông điệp có thể lưu trữ thông tin về hình thứcbảo mật của kênh giao tiếp Điều này cung cấp khả năng điều khiển liên quan đếnbảo mật như xác thực và phân quyền
2.1.3 Kiến trúc phân tầng chi tiết
Hiện nay chưa có một mô hình chính thức nào của SOA Thật sự SOA làmột phương pháp luận giúp chúng ta tận dụng sức mạnh của các nguồn lực,nguồn tài nguyên khác nhau trong mạng máy tính để trở thành một hệ thốngnhất Mỗi một công ty có một mô hình SOA khác nhau Nhìn chung mô hìnhSOA có các đặc điểm sau:
Hình 2.3: Kiến trúc chi tiết của SOA
- Tầng Connectivity: đây là tầng thấp nhất của SOA, có nhiệm vụ giaotiếp trực tiếp với các thành phần khác như cơ sở dữ liệu, giao tiếp với cácứng dụng khác, các web service… Vì vậy có thể coi đây là tầng vật lý củaSOA
- Tầng Orchestration: là các dịch vụ xử lý các quy trình nghiệp vụ vàđộc lập với tầng vật lý phía bên dưới Tầng orchestration chứa các thànhphần đóng vai trò vừa là dịch vụ sử dụng vừa là những dịch vụ cung cấp.Những dịch vụ này sử dụng những dịch vụ của tầng kết nối và các dịch vụorchestration khác để kết hợp những chức năng cấp thấp hơn thành nhữngdịch vụ hoạt động ở cấp cao hơn, có hành vi gần với những chức năngnghiệp vụ hơn
Trang 17- Tầng Composite Application: là các ứng dụng tổng hợp nhằm mục đíchtrình diễn (presentation) và hiển thị thông tin cho người dùng cũng nhưcung cấp một giao diện cho người dùng tương tác với hệ thống như là mộtphần mềm duy nhất Tầng này có thể là các website, portal, các ứng dụngclient mở rộng (rich client), các thiết bị di động thông minh (smartdevice),…
- Các thành phần khác: gồm có quy trình phát triển (development), quản lýcác dịch vụ (service management), và quản lý con người (governance).Như vậy có thể thấy SOA không chỉ đơn thuần là về mặt công nghệ mà nó
là tổng hòa của rất nhiều yếu tố: công nghệ, cơ sở hạ tầng, con người vàquy trình nghiệp vụ
Hình 2.4: Các thành phần tham gia triển khai hệ thống SOA
Vậy khi nào sử dụng SOA? Đó là khi thiết kế hệ thống đặt ra một câu hỏilớn là việc cân nhắc giữa khả năng sử dụng lại và hiệu năng của hệ thống Nếu hệthống cần việc chạy nhanh cho một ứng dụng đặc biệt thì RMI, CORBA, DCOM
là sự lựa chọn Nhưng hệ thống khó có thể thay đổi hoặc sử dụng lại Nếu hệthống dự định thay đổi thường xuyên mà không yêu cầu quá cao về tốc độ thìSOA là phương cách tiếp cận tốt nhất Nó dễ dàng sử dụng lại trong tương lai vàcho phép các ứng dụng tương tự được thiết kế một cách nhanh chóng
SOA là tư duy hệ thống ưu việt cho giai đoạn công nghệ hiện nay Vậylàm cách nào để triển khai tư duy đó vào các ứng dụng thực tế? Đó là vấn đề vềcông nghệ Phần tiếp theo sẽ trình bày một công nghệ có thể nói là thể hiện tốt
nhất cho SOA hiện nay – Web Service.
Trang 182.2 SOA và ứng dụng Web Service
2.2.1 Giới thiệu về Web service
Đặc điểm chính của SOA là tách rời phần giao tiếp với phần thực hiệndịch vụ Điều này cho phép chúng ta liên tưởng đến một công nghệ được đề cậpnhiều hiện nay: Web Service Web Service cho phép truy cập thông qua địnhnghĩa giao thức-và-giao tiếp
Về cơ bản, SOA là kiến trúc phần mềm phát xuất từ định nghĩa giao tiếp
và xây dựng toàn bộ mô hình ứng dụng như là mô hình các giao tiếp, hiện thựcgiao tiếp và phương thức gọi giao tiếp Giao tiếp là trung tâm của toàn bộ triết lýkiến trúc này Thực ra, tên gọi “kiến trúc định hướng giao tiếp” thích hợp hơncho SOA Dịch vụ và module phần mềm nghiệp vụ được truy cập thông qua giaotiếp, thường theo cách thức yêu cầu - đáp trả Ngay cả với yêu cầu dịch vụ mộtchiều thì nó vẫn là yêu cầu trực tiếp có chủ đích từ một phần mềm này đến mộtphần mềm khác Một tương tác định hướng dịch vụ luôn bao hàm một cặp đốitác: nguồn cung cấp dịch vụ và khách hàng sử dụng dịch vụ
Web service là một công nghệ triệu gọi từ xa có tính khả chuyển cao nhất
hiện nay: mang tính độc lập nền, độc lập ngôn ngữ Với web service, các chươngtrình viết bằng các ngôn ngữ lập trình khác nhau, chạy trên các nền tảng (phầncứng & OS) khác nhau đều có thể trao đổi với nhau thông qua công nghệ này.Tầng transport của Web Service thường dùng những công nghệ truyền tải phổdụng nhất như HTTP, SMPT (tuy hiện nay thường chỉ dùng HTTP) nên khảnăng phân tán trên diện rộng như Internet là rất thuận tiện Mà SOA là kiến trúckết nối lỏng lẻo các service và các service đó tương tác với nhau thông qua Webservice Do đó, kiến trúc SOA sử dụng Web service như là một giải pháp chính
để giải quyết vấn đề tích hợp nghiệp vụ giữa các hệ thống Và đặc biêt trong quátrình internet hóa mọi dịch vụ hiên nay, thì triển khai dịch vụ bằng Web service
có thể nói là điều “tất nhiên”
2.2.2 SOA và Web service trong vấn đề tích hợp hệ thống
Web services là những thành phần ứng dụng, giao tiếp bằng cách sử dụnggiao thức mở chứa đựng và mô tả chính nó, có thể được phát hiện bằng cách sửdụng UDDI và có thể được sử dụng bởi ứng dụng khác khác nhau Web servicehoạt động dựa trên nền tảng là XML và HTTP Trong đó: XML cung cấp mộtngôn ngữ mà có thể được sử dụng giữa các nền tảng và ngôn ngữ lập trình khác
Trang 19nhau và vẫn thể hiện thông điệp và chức năng phức tạp; Các giao thức HTTP làgiao thức Internet được sử dụng nhiều nhất.
Web Service với mô hình hoạt động 3 bên tương ứng với mô hình hoạtđộng của SOA, sử dụng một bộ các chuẩn công nghệ Đó là:
- XML: Chuẩn định dạng dữ liệu và thông điệp
- SOAP: Giao thức dựa trên XML và HTTP cho phép giao tiếp trên môitrường mạng
- WSDL: Ngôn ngữ mô tả Web Service theo chuẩn
- UDDI: Một bộ khung chuẩn cho phép mô hình hóa và cụ thể hóa các WebService đã được đăng ký
Hình 2.5: Mô hình hoạt động của web service
Hoạt động của mô hình Web Service như sau:
- Service Provider: Dùng Web Services Description Language (WSDL) để
mô tả dịch vụ mà mình có thể cung cấp và xuất bản (đăng ký) với ServiceBroker (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à các kho lưu trữ được mô tảbởi Universal Discovery, Description, and Integration (UDDI)
Trang 20- 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 ServiceBroker Bằng việc sử dụng UDDI và chức năng tìm kiếm của ServiceBroker, Service Requester có thể tìm thấy Service Provider thích hợp.Ngay sau đó, giữa Service Requester và Service Provider thiết lập kênhgiao tiếp sử dụng SOAP để thương lượng giá cả và các yếu tố khác trongviệc sử dụng service
Như vậy, sử dụng Web Service cho việc tích hợp SOA giúp ứng dụng đạt đượcnhững mục tiêu theo nguyên lý SOA:
- Thông qua các chuẩn công nghiệp Các chuẩn này gồm Web Service vớicác định nghĩa thành phần chuẩn công nghiệp cho XML
- Sử dụng được những phần mềm thương mại đã xây dựng sẵn nhiều nhất
có thể Phần mềm phải cung cấp các kênh giao tiếp (adapter) cho Webservice
- Đóng gói các ứng dụng cho phép kế thừa với giao diện đúng theo chuẩncông nghệ chung Các Web Service đều phải được sử dụng thông qua giaodiện này
- Sử dụng dữ liệu và tầng dữ liệu độc lập nằm giữa các ứng dụng để ẩn đicấu trúc dữ liệu bên dưới Mọi tương tác với dữ liệu đều phải thông quaWeb Service
Làm thế nào Web Service có thể đạt được những mục tiêu trên? Chúng ta
sẽ đi vào xem xét chi tiết các công nghệ và kỹ thuật thực hiện của Web Service
2.2.3 Cấu trúc và chi tiết các thành phần của Web service
Nền tảng của các dich vụ web gồm các yếu tố: XML (eXtensible MarkupLanguage), SOAP (Simple Object Access Protocol), UDDI (UniversalDescription, Discovery and Integration), WSDL (Web Services DescriptionLanguage)
Trang 21Hình 2.6: Các thành phần của Web service 2.2.3.1 XML - eXtensible Markup Language
XML là một chuẩn mở do W3C đưa ra và được phát triển từ SGML XML
là một ngôn ngữ mô tả văn bản với cấu trúc do người sử dụng định nghĩa, nóđược sử dụng để định nghĩa các thành phần dữ liệu trên trang web và cho nhữngtà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 không tuân theo một đặc tả quy ước như HTML, người sử dụng hay cácchương trình có thể quy ước định dạng các tag XML để giao tiếp với nhau Trongkhi HTML định nghĩa thành phần được hiển thị như thế nào thì XML lại địnhnghĩa những thành phần đó chứa cái gì Với XML, các thẻ có thể được lập trìnhviên tự tạo ra trên mỗi trang web và được chọn là định dạng thông điệp chuẩn bởitính phổ biến và hiệu quả mã nguồn mở
Do Web Service 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 Vì vậy 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âydựng một Web Service, 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ông tin theo chuẩncủa SOAP hoặc XML-RPC và có thể tương tác với nhau trong một thể thốngnhất
Ví dụ về tài liệu XML:
<?xml version="1.0" encoding = “UTF-8” ?>
<DOCUMENT>
<GREETING>
Trang 22Tài liệu XML chỉ chứa dữ liệu, không nhắc đến cách trình bày Điều này
có ý nghĩa đó là một XML parser, không cần phải hiểu ý nghĩa của các thẻ Nó
chỉ cần tìm các thẻ và xác định đây là một tài liệu XML hợp lệ vì trình duyệtkhông cần phải hiểu ý nghĩa của các thẻ, nên người dùng có thể tạo ra các thẻ bất
kì để sử dụng
2.2.3.2 SOAP (Simple Object Access Protocol)
Là một giao thức dựa trên XML để cho phép các ứng dụng trao đổi thôngtin qua HTTP, được thiết kế đơn giản và dễ mở rộng Đơn giản, SOAP là mộtgiao thức để truy cập một Web Service, một giao thức truyền thông hay một địnhdạng để gửi tin nhắn Tất cả các thông điệp SOAP đều được mã hóa sử dụngXML, cho nên không bị ràng buộc bởi bất kỳ ngôn ngữ lập trình nào hoặc côngnghệ nào Vì những đặc trưng này, nó không quan tâm đến công nghệ gì được sửdụng để thực hiện miễn là người dùng sử dụng các message theo định dạngXML Tương tự, service có thể được thực hiện trong bất kỳ ngôn ngữ nào, miễn
là nó có thể xử lý được những message theo định dạng XML
Hình 2.7: Mô hình gửi nhận thông điệp qua SOAP
Bộ khung của một thông điệp SOAP bao gồm:
- Protocol Header: Cho biết thông tin về các chuẩn giao thức được sử dụng
- SOAP Envelop: Phần chính của thông điệp Thông tin chính của messagebao gồm:
• SOAP Header: Chứa các SOAP header
Trang 23• SOAP body: Thông tin về name và data được đặc tả dưới dạngXML Ngoài ra còn có trường lỗi được dùng để gởi các webservice exception.
Hình 2.8: Cấu trúc của một SOAP message
Ví dụ:
<?xml version="1.0"?>
<soap:Envelope xmlns:soap="http://www.w3.org/2001/12/soap- envelope"
encoding">
2.2.3.3 WSDL (Web Service Discription Language)
WSDL là một ngôn ngữ dựa trên XML dùng để mô tả giao diện của Web