Phương pháp phát triển dịch vụ Web – Phát triển ứng dụng di động, Dịch vụ web, Kiến trúc - Công nghệ SOA
Chuyển đến nội dung

Phương pháp phát triển dịch vụ web – Phát triển ứng dụng di động, dịch vụ web, kiến trúc SOA

  • qua

quảng cáo

Coulouris định nghĩa hệ thống phân tán là “hệ thống trong đó các thành phần phần cứng và/hoặc phần mềm tồn tại trong mạng máy tính giao tiếp và phối hợp hành động của chúng bằng cách trao đổi tin nhắn”.

Khái niệm này đã trở nên phổ biến trong những năm gần đây do một số yếu tố. Yếu tố đầu tiên thúc đẩy sự phát triển của hệ thống phân tán là sự xuất hiện của mạng cục bộ tốc độ cao. Một yếu tố quan trọng khác là những tiến bộ công nghệ trong hoạt động của máy tính cá nhân và sự phát triển phần mềm để hỗ trợ các ứng dụng phân tán. Các hệ thống phân tán được liên kết với khái niệm Web và Internet. Với sự phát triển của Web và sự xuất hiện của các lĩnh vực, tương tác, nhu cầu và ứng dụng mới, khái niệm Web 2.0 xuất hiện. Thuật ngữ này được Tim O'Reilly đặt ra vào năm 2004 để chỉ thế hệ thứ hai trong lịch sử Web dựa trên cộng đồng người dùng và một loạt dịch vụ đặc biệt, chẳng hạn như mạng xã hội, blog, wiki hoặc các trang web dân sự, khuyến khích sự hợp tác và linh hoạt. trao đổi thông tin giữa những người dùng.

Các kiến trúc đầu tiên có thể được coi là hướng dịch vụ (SOA) dựa trên CORBA (Kiến trúc môi giới yêu cầu đối tượng chung), hoạt động như một lớp trừu tượng để kết nối các thành phần khác nhau của kiến trúc và dịch vụ xây dựng. Các công nghệ ban đầu khác là DCOM (Mô hình đối tượng thành phần phân tán) hoặc RPC (Giao thức thủ tục từ xa). Với nhu cầu thiết kế và triển khai các hệ thống phân tán trên Web một cách hiệu quả, một số thách thức nảy sinh, một số thách thức tập trung vào chính sự phát triển (hiệu suất, trải nghiệm người dùng, v.v.) và những thách thức khác bổ sung, dựa trên khả năng sử dụng lại và khả năng tương thích của các dịch vụ. Từ những nhu cầu này phát sinh Dịch vụ Web, cung cấp các cơ chế được tiêu chuẩn hóa để kết nối những người dùng khác nhau với máy chủ thông tin.

KIẾN TRÚC HƯỚNG DỊCH VỤ

Theo SOA (Kiến trúc hướng dịch vụ), chúng là các kiến trúc phần mềm xác định việc sử dụng dịch vụ để hỗ trợ các yêu cầu kinh doanh, mục tiêu của nó là đạt được sự kết hợp tối thiểu có thể có giữa các tác nhân phần mềm. Dịch vụ là một đơn vị công việc được thực hiện bởi nhà cung cấp dịch vụ để đạt được kết quả cuối cùng mà người tiêu dùng dịch vụ mong muốn. Cả nhà cung cấp dịch vụ và người tiêu dùng dịch vụ đều là vai trò của các đại lý phần mềm chứ không phải chủ sở hữu của họ. Theo nghĩa chung, kiến trúc hướng dịch vụ là một giải pháp phần mềm nhằm cho phép một công ty tổ chức và sử dụng các quy trình khác nhau. Với SOA, các ứng dụng phần mềm không còn là những khối chức năng và quy trình khổng lồ nữa. Thay vào đó, các ứng dụng này được tạo thành từ các dịch vụ mô-đun được lắp ráp. Hãy nhớ rằng dịch vụ là một chức năng phần mềm đơn giản (như hủy phát lại trên đĩa CD). Nó có thể được chạy theo yêu cầu bởi bất kỳ hệ thống nào, bất kể hệ điều hành, nền tảng, ngôn ngữ lập trình hay vị trí địa lý.

Điều mang tính cách mạng về SOA không phải là bản thân khái niệm đã có từ lâu mà là thực tế là nó có thể được triển khai thông qua WWW (World Wide Web). Giống như các trang web tải trên bất kỳ nền tảng nào, các dịch vụ web hoạt động theo cách tương tự bất kể nền tảng nào vì chúng được xây dựng bằng cách sử dụng
tiêu chuẩn phổ quát.

ảnh chụpÝ tưởng về SOA bắt nguồn trực tiếp từ lập trình hướng đối tượng, điều này gợi ý mối quan hệ giữa dữ liệu và quá trình xử lý dữ liệu. Do đó, họ chính thức xác định các dịch vụ thông qua các giao diện độc lập với nền tảng và ngôn ngữ lập trình cơ bản. Các giao diện này che giấu những đặc thù trong quá trình triển khai của chúng, khiến chúng độc lập với nhà phát triển và ngôn ngữ lập trình. Thông qua các kiến ​​trúc này, có thể thiết kế và triển khai các hệ thống có khả năng mở rộng cao, phản ánh logic nghiệp vụ, đồng thời tạo điều kiện thuận lợi cho sự tương tác giữa các hệ thống độc quyền hoặc bên thứ ba khác nhau. Lý do chúng ta muốn ai đó làm việc cho mình là vì họ là chuyên gia. Sử dụng dịch vụ thường rẻ hơn và hiệu quả hơn so với việc tự mình làm. Vì vậy, hầu hết chúng ta đều hiểu rằng chúng ta không thể là chuyên gia trong mọi lĩnh vực. Quy tắc tương tự có thể được áp dụng để xây dựng hệ thống phần mềm.

Các giao diện cực kỳ quan trọng, nếu chúng không được xác định rõ ràng hoặc không hoạt động thì hệ thống sẽ không hoạt động. Việc tích hợp nhiều giao diện tốn kém hơn và còn làm tăng khả năng xảy ra lỗi trong các ứng dụng phân tán. Giao diện từ xa là phần chậm nhất trong hầu hết các ứng dụng phân tán. Với tất cả những điều này, thay vì xây dựng giao diện mới cho từng ứng dụng, việc sử dụng lại giao diện chung cho tất cả ứng dụng sẽ hợp lý hơn.

Vì vậy, vì chúng tôi chỉ có sẵn một số giao diện chung nên chúng tôi phải đưa ngữ nghĩa dành riêng cho ứng dụng vào tin nhắn. Chúng ta có thể gửi bất kỳ loại tin nhắn nào thông qua các giao diện của mình, nhưng có một số quy tắc phải tuân theo để nói rằng kiến trúc là hướng dịch vụ.

– Thứ nhất, tin nhắn phải mang tính mô tả chứ không mang tính hướng dẫn vì nhà cung cấp dịch vụ có trách nhiệm giải quyết vấn đề. Ví dụ, nó sẽ tương tự như tình huống đi đến một nhà hàng và nói với người phục vụ bạn muốn uống gì và sở thích của bạn, nhưng chúng ta không nên giải thích cho người đầu bếp cách chế biến các món ăn của bạn từng bước một.

- Thứ hai, nhà cung cấp dịch vụ sẽ không thể hiểu được yêu cầu của bạn nếu tin nhắn của họ không được viết theo định dạng, cấu trúc và từ vựng mà mọi người liên quan đều có thể hiểu được. Vì vậy, việc hạn chế từ vựng và cấu trúc của thông điệp là một
cần thiết để giao tiếp hiệu quả. Thông điệp càng hạn chế thì càng dễ hiểu.

- Thứ ba, khả năng mở rộng có tầm quan trọng sống còn. Thế giới là một nơi luôn thay đổi và môi trường mà phần mềm tồn tại cũng vậy. Những thay đổi này đòi hỏi những thay đổi tương ứng đối với phần mềm hệ thống, người tiêu dùng dịch vụ, nhà cung cấp và tin nhắn họ trao đổi. Nếu tin nhắn không thể mở rộng, người tiêu dùng và nhà cung cấp sẽ bị khóa ở một phiên bản dịch vụ cụ thể. Ràng buộc và khả năng mở rộng có liên quan sâu sắc với nhau, bạn cần cả hai và tăng cái này đồng nghĩa với việc giảm cái kia. Lý tưởng là đạt được sự cân bằng chính xác.

– Thứ tư, SOA phải có cơ chế cho phép người tiêu dùng khám phá nhà cung cấp dịch vụ trong bối cảnh dịch vụ mà người tiêu dùng đang tìm kiếm. Cơ chế phải linh hoạt và không được đăng ký tập trung.

- Thứ năm, Dịch vụ không quốc tịch: Mỗi tin nhắn mà người tiêu dùng gửi đến nhà cung cấp phải chứa tất cả thông tin cần thiết để nhà cung cấp xử lý. Hạn chế này làm cho nhà cung cấp dịch vụ có khả năng mở rộng cao hơn vì nhà cung cấp không cần lưu trữ thông tin trạng thái giữa các yêu cầu. Đây có thể được gọi là “dịch vụ sản xuất hàng loạt” vì mỗi yêu cầu đều có thể được xử lý một cách khái quát. Hạn chế này cũng mang lại nhiều khả năng hiển thị hơn vì bất kỳ phần mềm giám sát nào cũng có thể kiểm tra một yêu cầu độc lập và rút ra ý định của nó. Điều này cũng cho phép dễ dàng phục hồi sau các lỗi từng phần vì không có trạng thái trung gian, giúp dịch vụ trở nên đáng tin cậy hơn.

- Thứ sáu, yêu cầu bình thường (không thực hiện thay đổi): các yêu cầu trùng lặp mà tác nhân phần mềm nhận được có tác dụng tương tự như một yêu cầu duy nhất. Yêu cầu này cho phép các nhà cung cấp và người tiêu dùng tăng độ tin cậy tổng thể của dịch vụ, chỉ cần lặp lại yêu cầu nếu có lỗi xảy ra.

Vì vậy có thể nói rằng SOA không phải là một công cụ mà là một bộ tiêu chuẩn để xây dựng các ứng dụng mới, năng động hơn và ít phụ thuộc hơn. SOA tạo điều kiện truy cập logic kinh doanh và thông tin giữa các dịch vụ khác nhau một cách có hệ thống và cũng có thể phối hợp một số dịch vụ từ xa để tạo thành một dịch vụ duy nhất. Đa số Các định nghĩa xác định việc sử dụng Dịch vụ Web mà chúng ta sẽ thấy trong chương tiếp theo trong việc triển khai kiến trúc hướng dịch vụ. Tuy nhiên, nó có thể được thực hiện bằng cách sử dụng bất kỳ công nghệ dựa trên dịch vụ nào khác.