Đề tài Kiến trúc hướng dịch vụ và ứng dụng

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

doc48 trang | Chia sẻ: tuandn | Lượt xem: 4358 | Lượt tải: 2download
Bạn đang xem trước 20 trang tài liệu Đề tài Kiến trúc hướng dịch vụ và ứng dụng, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
ĐẠI HỌC THÁI NGUYÊN KHOA CÔNG NGHỆ THÔNG TIN ----------(---------- ĐỀ TÀI NGHIÊN CỨU KHOA HỌC CẤP SINH VIÊN 2010 Đề tài: KIẾN TRÚC HƯỚNG DỊCH VỤ & ỨNG DỤNG (SERVICE-ORIENTED-ARCHITECTURE) Mã số đề tài Chủ nhiệm đề tài 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 MỤ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 1.1. Kiến trúc phần mềm hiện nay 2 1.1.1. Một số kiến trúc phần mềm phân tán hiện nay 2 1.1.2. Vấn đề phát sinh, nguyên nhân và giải pháp 3 1.2. Kiến trúc hướng dịch vụ - SOA 5 1.2.1. Khái niệm 5 1.2.2. Nguyên lý SOA 7 1.2.3. Tính chất của SOA 8 1.2.4. Lợi ích của SOA 10 1.2.5. Ưu nhược điểm của SOA 11 CHƯƠNG 2: PHÁT TRIỂN PHẦN MỀM DỰA VÀO SOA 12 2.1. Mô hình hoạt động và kiến trúc chi tiết của hệ thống 12 2.1.1. Mô hình tổng thể của SOA 12 2.1.2. Mô hình giao tiếp bằng thông điệp (message) trong SOA 13 2.1.3. Kiến trúc phân tầng chi tiết 14 2.2. SOA và ứng dụng Web Service 16 2.2.1. Giới thiệu về Web service 16 2.2.2. SOA và Web service trong vấn đề tích hợp hệ thống 16 2.2.3. Cấu trúc và chi tiết các thành phần của Web service 18 2.3. Qui trình xây dựng hệ thống SOA 26 2.3.1. Thách thức khi xây dựng hệ thống 26 2.3.2. Vòng đời của hệ thống 28 2.3.3. Các pha cơ bản xây dựng hệ thống SOA 29 2.3.4. Các chiến lược xây dựng hệ thống 31 CHƯƠNG 3: KẾT QUẢ VÀ THẢO LUẬN 36 3.1. Chương trình demo 36 3.1.1. Chức năng chính của chương trình: 36 3.1.2. Xây dựng chương trình 36 3.2. Đánh giá chương trình 41 KẾT LUẬN 42 TÀI LIỆU THAM KHẢO 43 MỞ ĐẦU 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. Thái Nguyên, năm 2010 Nguyễn Thị Dung CHƯƠ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 nay là: 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áy khác so với máy chứa ứng dụng trong khi vẫn được tham chiếu sử dụng như một phần của ứng dụng. RMI (Remote Method Invocation): RMI là một phần của bộ J2SDK (Java 2 Platform Standard Development Kit) 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ượng chạ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ương thức trên client và server. RMI cung cấp cho việc trao đổi truyền thông giữa các chươ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ần lậ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ên ngô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 Management Group), cho phép gọi các phương thức từ xa và nhận kết quả trả về, nhưng không giống như RMI, nó có thể được sử dụng khi bên phía gọi và bên phía phương thức được gọi có thể sử dụng ngôn ngữ lập trình khác nhau, bao gồm cả trường hợp cả 2 bên không sử dụng ngôn ngữ Java. CORBA được định nghĩa từ 2 thứ: 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ập trình, nền tảng phần cứng, giao thức mạng và công nghệ để phát triển mà vẫn thỏ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ụng dự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ành phầ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ới cá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 trong cá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. Tuy nhiê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êu cầ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… Xâ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ìm kiế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ủa cá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 nhanh chó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ều nhữ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 kinh nghiệ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 ứng dụ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ác phươ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ềm thươ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ải chấ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ông phù 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ó mộ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 Oriented Architecture - SOA) là cách tiếp cận để xây dựng hệ thống công nghệ thông tin cho phép các doanh nghiệp tận dụng những gì đang có và dễ dàng thay đổi theo yê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ành phầ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ềm hướng đối tượng gồm nhiều module. Tuy nhiên khái niệm module trong SOA khô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ột cá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ấp trê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ông nghệ. Mặc dù SOA hoạt động được là nhờ công nghệ, nhưng khách hàng cần phải chuyển đổi từ chỗ chỉ việc tích hợp công nghệ SOA sang việc phải điều chỉ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ông cần biết các chi tiết kỹ thuật bên trong. Để thực hiện điều đó SOA định ra một chuẩn giao tiếp (dùng để gọi hàm dịch vụ) được định nghĩa rõ ràng và độc lập vớ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ơn của phát triển ứng dụng, chú trọng đến quy 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. Sự trừu tượng là cốt lõi của khá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ần hiệ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ỉnh sử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ện thự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ác yê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ào cá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ựa trên các đặc tả hình thức bao gồm contract (dựa trên Web Service Description Language (WSDL) hoặc Business Process Execution Language for Web Services (BPEL4WS)) và schema (XSD). Sự tương thí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 giao thứ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ơi nà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ành phầ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ác Web Service trong các phần tiếp theo.  Hình 1.2: Mô hình cơ bản của SOA. 1.2.2. Nguyên lý SOA SOA tìm cách giải quyết một số vấn đề theo cách nhìn lấy ứng dụng làm trung tâm. Có thể tóm gọn những phát biểu đó theo các nguyên lý như sau: Ứng dụng phải mở ra khả năng cho phép các ứng dụng mới hoặc ứng dụng đang tồn tại có thể sử dụng được. Nó cũng phải có khả năng kết nối tới các dịch vụ được đưa ra bởi các ứng dụng khác để tạo thành các dịch 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 doanh nghiệp. Phối hợp tiến trình nghiệp vụ giữa nhiều nhà cung cấp, nhiều đối tá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áo trộ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ới khả 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ần mề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. 1.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 bao nhiê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ủa bê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ần biế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 động khi 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ống linh 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 được che 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ành phầ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ột dị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ều mụ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ành phầ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óa việ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ố hay 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ần trong 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ùy theo 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ính sá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ên phá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 nhau trong suốt thời gian phát triển để cài đặt và kiểm tra những chính sách. Ngược lạ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ần tập trung vào quy trình nghiệp vụ trong khi nhóm điều hành và nhóm hỗ trợ tập trung 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êu chuẩ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ỏa yê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ột registry 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ịch thấ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ín dụ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ột thông điếp có định dạng đúng như trong phần mô tả dịch vụ. Mối ràng buộc duy nhấ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ởi registry 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 SOA, 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