Distributed Object_based systems-He Phan tan

Màu nền
Font chữ
Font size
Chiều cao dòng

9.1 Corba:

Chúng ta bắt đầu buổi học về các hệ phân tán hướng đối tượng bằng việcs nói chuyện về Common Object Request Broker Architecture (kiến trúc đối tượng chung yêu cầu trung gian), gọi tắt là CORBA. Như cái tên của nó, CORBA không phải là một hệ thống phân tán chính thống, nhưng phần nào cũng có các đặc điểm của một hệ phân tán. Các đặc điểm này được vẽ lên bởi nhóm quản lý đối tượng OMG (object management group), một tổ chức phi lợi nhuận với trên 800 thành viên, chủ yếu là từ ngành công nghiệp. Mục đích quan trọng của OMG đối với CORBA là định nghĩa một hệ phân tán có thể khắc phục nhiều vấn đề về liên thao tác hoá khi tích hợp với các ứng dụng mạng. Các chức năng đầu tiên của CORBA xuất hiện đầu tiên vào những năm 1990. Hiện nay, sự thi hành của CORBA ở phiên bản 2.4 đã được phát triển rộng rãi, trong khi CORBA phiên bản 3 đầu tiên đang sẵn sàng.

Giống như các hệ thống khác, các kết quả thu được đều phải qua quá trình làm việc trong các uỷ ban, CORBA có nhiều các đặc trưng và các tính năng. Các đặc điểm cốt lõi được nói đến phải trên 700 trang và những cái khác là 1,200 dành để nói về các dịch vụ khác nhau được xây dựng trên nền các đặc điểm cốt lõi đó. Và như một điều tự nhiên, mỗi sự thi hành của CORBA là có sự mở rộng của chính nó vì luôn có vài thứ mà mỗi một nhà cung cấp cảm thấy có thể không được bỏ lỡ nhưng lại không được bao gồm trong các đặc điểm. CORBA minh hoạ trở lại việc tạo ra một hệ phân tán đơn giản , có thể đó là một bài tập hơi khó.

Theo những dòng trang, chúng ta sẽ không thảo luận tất cả các vấn đề mà corba có, chỉ tập trung một số phần thật cần thiết như một hệ phân tán và những cái tiêu biểu đối với các hệ phân tán hướng đối tượng khác. Các đặc điểm của CORBA có thể được tìm thấy tại trang web http:// www.omg.org OMG, 2001.

9.1.1 Tổng quan về corba:

Kiến trúc bao trùm của CORBA trung thành với mô hình tham chiếu của nhóm OMG. Mô hình tham chiếu này, như hình 9.1, bao gồm 4 nhóm phần tử kiến trúc nối kết với cái gọi là ORB (Object Request Broker). ORB tạo nên cốt lõi của bất cứ hệ phân tán nào của Corba; nó chịu trách nhiệm cấp quyền liên lạc giữa các đối tượng và các máy khách của các đối tượng trong khi che giấu các vấn đề có liên quan tới sự phân tán và không đồng nhất. Trong nhiều hệ thống, ORB được thi hành như các thư viện được liên kết với một máy khách và một ứng dụng chủ, và cung cấp các dịch vụ truyền thông cơ bản. Chúng ta sẽ trở lại ORB khi thảo luận mô hình đối tượng Corba.

Hình 9-1: Kiến trúc bao trùm của Corba

Ngoài ra, các đối tượng được xây dựng nên như một phần của các ứng dụng cụ thể, mô hình tham chiếu cũng khác biệt với những gì mà ta biết về các tiện nghi của Corba. Các tiện nghi được khởi dựng như là các thành phần của các dịch vụ của Corba và được tách thành 2 nhóm khác nhau. Các tiện nghi ngang gồm có các dịch vụ cấp độ cao cho các mục đích chung mà các dịch vụ này là các vùng ứng dụng độc lập. Hiện tại, các dịch vụ như vậy bao gồm giao diện người dùng, quản lý thông tin, quản lý hệ thống, và quản lý các tác vụ (thường để định nghĩa các hệ thống dòng công việc). Các tiện nghi dọc gồm có các dịch vụ cấp cao được chèn vào cùng ứng dụng cụ thể như thương mại điện tử, ngân hàng, sản xuất, ...

Chúng ta sẽ không thảo luận các đối tượng ứng dụng và các tiện nghi của Corba một cách chi tiết, nhưng thường quan tâm hơn vào các dịch vụ cơ bản và ORB.

Mô hình đối tượng:

orba sử dụng mô hình đối tượng từ xa mà chúng ta đã mô tả trong chương 2. Trong mô hình này, sự thi hành của một đối tượng cư trú trong khoảng không gian địa chỉ của một máy chủ. Thật là thú vị khi nhận thấy rằng các chi tiết kỹ thuật của Corba không bao giờ ở trạng thái dứt khoát mà các đối tượng sẽ chỉ được thi hành như các đối tượng từ xa. Tuy nhiên, hầu như tất cả hệ thống của Corba chỉ hỗ trợ mô hình này. Thêm vào đó, các đặc điểm kỹ thuật thường đề nghị các đối tượng phân tán trong Corba phải thật sự là các đối tượng từ xa. Sau đó, khi thảo luận về mô hình đối tượng Globe, chúng ta chỉ ra cách thức một mô hình khác hoàn toàn của một đối tượng có thể, về nguyên lý, cũng được hỗ trợ tốt như Corba.

Các đối tượng và các dịch vụ được định rõ trong Ngôn ngữ định nghĩa giao diện Corba (Interface Definition Language IDL). Corba IDL tương tự như các ngôn ngữ định nghĩa giao diện khác trong đó nó cung cấp một cú pháp nghiêm ngặt cho các phương thức biểu diễn và các tham số. Không thể mô tả ngữ nghĩa trong Corba IDL. Một giao diện là một bộ các phương thức và các đối tượng định rõ các giao diện nào mà chúng thi hành.

Các chi tiết kỹ thuật giao diện chỉ có thể đựơc cung cấp bởi IDL. Như những gì mà ta sẽ thấy sau đây, trong các hệ thống như Distributed COM và Globe, các giao diện được định rõ tại mức thấp ở dạng các bảng. Chúng được gọi là giao diện nhị phân là bởi sự độc lập bản chất của bất kỳ ngôn ngữ lập trình nào. Tuy nhiên trong Corba, thật là cần thiết khi cung cấp các luật rút trích liên quan tới bản đồ các chi tiết kỹ thuật của IDL tới các ngôn ngữ lập trình có sẵn. Hiện tại, các luật như thế đã được cung cấp cho một số ngôn ngữ, bao gồm cả C, C++, Java, Smalltalk, Ada, và COBOL.

Căn cứ vào việc Corba được tổ chức như một bộ các máy khách và các đối tượng chủ, sự tổ chức tổng quát của một hệ thống Corba được trình bày trong hình 9-2.

Hình 9 - 2: tổ chức tổng quát của một hệ thống Corba

Dưới bất kỳ quy trình nào trong Corba, có là khách hay chủ đều là ORB. ORB có thể được xem tốt nhất trong hệ thống thời gian thực mà ở đó việc điều khiển truyền thông cơ bản giữa một khách và một đối tượng là đáng tin cậy. Việc truyền thông cơ bản này đảm bảo rằng một lời gọi được gửi đến chủ của các đối tượng và sự trả lời được thông qua quay trở lại khách.

Từ hình phối cảnh của một quá trình, ORB chỉ cung cấp một vài các dịch vụ. Một trong các dịch vụ này đang điều khiển các đối tượng tham chiếu. Các tham chiếu như thế thường phụ thuộc một phần vào ORB. Một ORB vì thế sẽ cung cấp các thao tác để kiểm soát hay không kiểm soát các đối tượng tham chiếu, cũng như các thao tác cho việc so sánh các tham chiếu. Các đối tượng tham chiếu được thảo luận chi tiết hơn phần sau.

ORB còn cung cấp các thao tác khác để xử lý việc tìm kiếm các dịch vụ có ảnh hưởng đến quá trình lúc khởi đầu. Tổng thể, nó cung cấp một cách thức để thu được một tham chiếu ban đầu tới một đối tượng đang thi hành một dịch vụ cụ thể của Corba. Ví dụ, để sử dụng dịch vụ đặt tên, một quá trình cần biết cách thức để tham chiếu tới dịch vụ đó. Các mặt khởi tạo đó áp dụng tốt tương tự cho các dịch vụ khác.

Ngoài giao diện ORB ra, các máy khách và máy chủ nhận ra rằng mọi thứ của ORB thật là cứng nhắc. Thay vào đó chúng chỉ thường thấy các mẩu cho việc điều khiển các lời gọi phương thức cho các đối tượng cụ thể. Một ứng dụng khách thường có một sự uỷ quyền có sẵn để thi hành một giao diện giống nhau cho mọi đối tượng mà nó đang sử dụng. Như những gì mà chúng ta đã thảo luận ở chương 2, một sự uỷ quyền là một mẩu client - side chỉ đơn thuần kiểm soát một lời gọi yêu cầu và gửi các yêu cầu đó tới máy chủ. Một sự đáp trả từ máy chủ là không bị kiểm soát và quay lại máy khách.

Chú ý rằng giao diện giữa một sự uỷ quyền và ORB không phải chuẩn hoá. Vì Corba thừa nhận tất cả các giao diện được đưa ra bởi IDL, sự thi hành của Corba cung cấp một trình biên dịch IDL tới các bộ phát triển để tạo ra các mã cần thiết điều khiển quá trình liên lạc giữa máy khách và máy chủ ORB.

Tuy nhiên, có các lý do mà các giao diện được định nghĩa tĩnh, đơn giản là nó không ảnh hưởng tới máy khách. Thay vào đó, trong suốt quá trình chạy, điều cần thiết là tìm ra giao diện cho một đối tượng cụ thể trông như thế nào và sau đó đưa ra lời gọi yêu cầu cho đối tượng đó. Vì mục đích này, Corba cung cấp một giao diện lời gọi động (Dynamic Invocation interface DII) cho các máy khách để cho phép chúng khởi dựng một lời gọi yêu cầu tại thời gian chạy. Về thực chất, DII cung cấp một lời gọi thao tác chung để lấy được một đối tượng tham chiếu, một phương thức định danh và một danh sách các giá trị vào đóng vai trò là các tham số và trả về kết quả là một danh sách các biến xuất được cung cấp bởi người gọi.

Các đối tượng chủ được tổ chức theo cách thức mà chúng ta đã thảo luận ở chương 3. Như đã chỉ ra ở hình 9-2, một hệ thống Corba cung cấp một bộ điều hợp đối tượng để quản lý việc xúc tiến các yêu cầu đến đúng đối tượng. Việc không kiểm soát trong thực tế tại server side được thực hiện bằng các mẩu, được gọi là bộ khung trong Corba, nhưng cũng là hợp lý khi đối tượng thi hành không cần quan tâm đến việc kiểm soát. Trong trường hợp các client, các mẩu server - side có thể cũng được dịch tĩnh từ kỹ thuật IDL hay sẵn có trong bộ khung động chung. Khi sử dụng bộ khung động, một đối tượng sẽ phải cung cấp một sự thi hành đúng lời gọi hàm như được cung cấp tới một client. Chúng ta sẽ trở lại các đối tượng chủ phần sau.

Kho giao diện và kho thi hành:

Để cho phép các khởi dựng động của các lời gọi yêu cầu, quan trọng là một quá trình trong suốt thời gian chạy có thể tìm ra một giao diện trông như thế nào. Corba cung cấp một kho giao diện, là nơi lưu trữ các định nghĩa giao diện. Trong nhiều hệ thống, kho giao diện được thi hành bằng cách một quá trình riêng biệt cung cấp một chuẩn giao diện để lưu trữ và truy lục các định nghĩa giao diện. Một kho giao diện có thể cũng được xem xét như là một bộ phận của Corba để trợ giúp trong thời gian chạy và thuộc loại các tiện ích kiểm tra.

Bất cứ khi nào một định nghĩa giao diện được dịch, trình biên dịch IDL gán một định danh kho cho giao diện đó. Định danh kho này là một phương tiện cơ bản để truy lục một định nghĩa giao diện từ trong kho. Mặc định, định danh được lấy từ tên của giao diện và phương thức của nó, ngụ ý rằng không có sự đảm bảo nào được đưa ra đối với tính độc nhất của nó. Nếu tính duy nhất được yêu cầu, mặc định có thể bị xoá bỏ.

Dựa trên việc tất cả các định nghĩa giao diện đều được lưu trữ trong một kho giao diện trung thành với cấu trúc IDL, mỗi định nghĩa có thể được tổ chức theo một cách chuẩn. (Trong thuật ngữ cơ sở dữ liệu, điều đó có nghĩa là giản đồ khái niệm kết hợp với một kho giao diện là như nhau cho mọi kho). Như một hệ quả, các kho giao diện trong các hệ thống Corba đều cung cấp các thao tác như nhau cho công việc tìm ra các định nghĩa giao diện.

Ngoài kho giao diện ra, hệ thống Corba cũng cung cấp một kho thi hành. Một kho thi hành hàm chứa tất cả những gì cần thiết cho việc thi hành và kích hoạt các đối tượng. Vì tính năng như thế có quan hệ mật thiết với chính ORB và với hệ điều hành, do vậy thật là khó để cung cấp một chuẩn thi hành.

Một kho thi hành kết hợp chặt chẽ với việc tổ chức và thi hành của các đối tượng chủ. Như những gì mà chúng ta đã thảo luận ở chương 3, một bộ điều hợp đối tượng có trách nhiệm kích hoạt một đối tượng bằng cách bảo đảm rằng nó đang chạy trong không gian địa chỉ của một máy chủ để các các phương thức của nó có thể được gọi. Dựa trên một đối tượng tham chiếu, một bộ điều hợp có thể liên hệ với một kho thi hành để tìm ra một cách chính xác những gì cần được làm.

Ví dụ, một kho thi hành có thể duy trì một bảng cụ thể mà một máy chủ mới sẽ được bắt đầu và số cổng mà nó sẽ được lắng nghe cho đối tượng cụ thể. Hơn nữa, kho sẽ có thông tin về tập tin thực thi (nghĩa là chương trình nhị phân) mà máy chủ sẽ tải và thực hiện.

Luân phiên nhau, có lẽ là không cần thiết để bắt đầu một máy chủ khác riêng biệt, nhưng máy chủ hiện tại cần liên kết tới một thư viện cụ thể chứa phương thức và đối tượng được yêu cầu. Một lần nữa, các thông tin như trên thông thường sẽ được lưu trữ trong kho thi hành. Đó là hai ví dụ minh hoạ mà một kho thật sự được liên kết chặt chẽ với một ORB và platform khi nó đang thi hành.

Các dịch vụ của CORBA:

Một phần quan trọng của mô hình tham chiếu CORBA là do bộ các dịch vụ CORBA. Dịch vụ CORBA là một ý định tốt nhằm tạo ra các ứng dụng độc lập và cho các mục đích chung đối với những cái mà CORBA đang được sử dụng. Như vậy, các dịch vụ CORBA mạnh như các loại dịch vụ thông thường được cung cấp bởi các hệ điều hành. Có cả một danh sách các dịch vụ định rõ cho CORBA (hình 9-3). Không may là không phải lúc nào cũng có ranh giới rõ ràng giữa các dịch vụ khác nhau, chúng thường có các hàm chức năng chồng lên nhau. Bằng vài từ ngắn gọn, chúng ta hãy mô tả từng dịch vụ để sau đó chúng ta có thể so sánh các dịch vụ được cung cấp bởi Dcom và Globe.

Bộ dịch vụ cung cấp các phương tiện cho các nhóm đối tượng trong các danh sách, các hàng đợi, các ngăn xếp, các tập hợp, ... Phụ thuộc vào đặc điểm của nhóm mà có các cơ chế truy cập khác nhau. Ví dụ các danh sách có thể được duyệt elementwise thông qua việc tham chiếu tới một bộ lặp. Cũng có các tiện ích để chọn các đối tượng bằng cách chỉ rõ giá trị khoá. Theo cảm giác, bộ dịch vụ có thể sẽ đến gần với những gì được cung cấp bởi các lớp thư viện trong các ngôn ngữ lập trình hướng đối tượng.

Cũng có một dịch vụ truy vấn tách biệt cung cấp các phương tiện để khởi dựng các bộ đối tượng có thể được truy vấn bằng cách sử dụng một ngôn ngữ truy vấn khai báo. Một truy vấn có thể trả về một tham chiếu tới một đối tượng hay tới bộ các đối tượng. Dịch vụ truy vấn làm tăng thêm bộ dịch vụ với các câu truy vấn cao cấp. Nó khác so với bộ dịch vụ mà trong đó cái sau cung cấp nhiều loại các bộ.

Cũng có một dịch vụ kiểm soát trùng hợp. Nó cung cấp các cơ chế khoá cao cấp bằng cách mỗi máy khách có thể truy cập các đối tượng chia sẻ. Dịch vụ này có thể được sử dụng cho các giao tác thi hành được cung cấp bởi một dịch vụ riêng biệt. Dịch vụ giao tác cho phép một client định nghĩa một chuỗi các lời gọi phương thức thông qua các đối tượng bội trong một giao tác đơn. Dịch vụ hỗ trợ các giao tác phẳng và lồng nhau.

Thông thường, các máy khách gọi các phương thức trên các đối tượng và chờ kết quả của lời gọi đó. Để hỗ trợ việc truyền không đồng bộ, CORBA hỗ trợ dịch vụ sự kiện bằng cách mỗi máy khách và mỗi đối tượng có thể bị ngắt vào lúc xảy ra một sự kiện cụ thể. Các tiện ích cấp cao cho việc truyền không đồng bộ được cung cấp bởi dịch vụ khai báo riêng biệt. Chúng ta sẽ mô tả các dịch vụ này chi tiết hơn trong phần sau.

Sự ngoại hiện xử lý các đối tượng được kiểm soát theo cách mà chúng có thể được lưu trữ trên đĩa hay gửi qua một mạng. Nó có thể so sánh với các tiện ích dòng nối tiếp được cung cấp bởi Java, cho phép các đối tượn được ghi theo luồng dữ liệu như một chuỗi các byte.

Dịch vụ life cycle (chu trình sống) cung cấp các phương tiện để tạo ra, xoá bỏ, sao chép, và di chuyển các đối tượng. Khái niệm khoá là của một đối tượng factory (hãng) là một đối tượng đặc biệt được sử dụng để tạo ra các đối tượng khác. Thực tiễn đã chỉ ra rằng chỉ có sự tạo ra các đối tượng mới cần được điều khiển bởi một dịch vụ riêng biệt. Tuy nhiên, xoá bỏ, sao chép và di chuyển các đối tượng thường được định nghĩa rất tiện lợi bởi chính các đối tượng. Lý do là các thao tác này thường ảnh hưởng tới trạng thái của đối tượng khác.

Dịch vụ bản quyền cho phép các nhà phát triển các đối tượng gắn bản quyền tới các đối tượng và phải tuân theo các chính sách bản quyền cụ thể. bản quyền mô tả các quyền của một client có đối với việc sử dụng đối tượng. Ví dụ, bản quyền gắn trên một đối tượng đòi hỏi đối tượng đó chỉ có thể được sử dụng bởi một client đơn tại một thời điểm. Bản quyền có thể bảo đảm rằng một đối tượng là tự động biến mất sau khoảng thời gian chết nào đó.

CORBA cung cấp một dịch vụ đặt tên riêng mà mỗi đối tượng có thể được cho một cái tên mang tính người cho dễ đọc và được xếp vào trong bảng định danh các đối tượng. Các tiện ích cơ bản cho việc mô tả các đối tượng được cung cấp bởi dịch vụ thuộc tính riêng. Dịch vụ này cho phép các client kết hợp đôi (thuộc tính - giá trị) với các đối tượng. Lưu ý rằng các thuộc tính này không phải là một phần của trạng thái của đối tượng, nhưng thay vào đó được sử dụng để mô tả các phần đó. Có quan hệ tới 2 dịch vụ trên là dịch vụ giao dịch. Dịch vụ này cho phép các đối tượng quảng bá những gì mà chúng phải cung cấp (bằng các giao diện của chúng) và cho phép các client tìm kiếm các dịch vụ sử dụng ngôn ngữ riêng hỗ trợ việc mô tả các ràng buộc.

Dịch vụ lưu trữ riêng biệt cung cấp các tiện ích cho công việc lưu trữ thông tin trên đĩa ở dạng các đối tượng lưu trữ. Vấn đề quan trọng là sự cung cấp tính trong suốt trong quá trình lưu trữ. Một client không cần chuyển giao rõ ràng dữ liệu ở đối tượng lưu trữ giữa đĩa và bộ nhớ chính.

Không có các dịch vụ nào trong phạm vi này cung cấp các tiện ích cho mối liên hệ rõ ràng giữa 2 hay nhiều đối tượng. Các tiện ích này được cung cấp bởi một dịch vụ quan hệ mà bản chất của dịch vụ này là cung cấp sự hỗ trợ cho công việc tổ chức các đối tượng theo giản đồ khái niệm giống dịch vụ quan hệ trong các cơ sở dữ liệu.

Bảo mật được cung cấp bởi dịch vụ bảo mật. Sự thi hành của dịch vụ này có thể so sánh với các hệ thống bảo mật như SESAME và Kerberos. Dịch vụ bảo mật của CORBA cung cấp các tiện ích cho sự thẩm định quyền, quyền hạn, kiểm định, truyền an toàn, không từ chối thực hiện, và sự quản trị. Chúng ta sẽ trở lại vấn đề này một cách chi tiết trong phần sau.

Cuối cùng, CORBA cung cấp dịch vụ thời gian trả về thời gian hiện tại với các loại lỗi cụ thể.

Như Pope đã giải thích (1998), các dịch vụ CORBA đã được thiết kế với mô hình đối tượng CORBA là điều căn bản của chúng. Điều đó có nghĩa là tất cả các dịch vụ được chỉ rõ trong CORBA IDL và có sự tách biệt giữa kỹ thuật giao diện và sự thi hành. Nguyên tắc thiết kế khác là các dịch vụ được thu gọn và đơn giản hoá. Trong phần sau chúng ta sẽ thảo luận một số các dịch vụ này chi tiết hơn. Từ các định nghĩa ngắn này đã có thể trao đổi trong phạm vi nhất định nguyên tắc cuối để tiếp thu một cách thành công.

Dịch vụ Mô tả

Tập hợp Các tiện ích cho việc gộp nhóm các đối tượng vào trong danh sách, hàng đợi, tập hợp, ...

Truy vấn Các tiện ích cho việc truy vấn các tập hợp của các đối tượng trong một kiểu khai báo.

Trùng lặp Các tiện ích cho phép việc cùng truy cập vào các đối tượng chia sẻ.

Giao tác Các giao tác phẳng và lồng nhau trong các phương pháp gọi các đối tượng bội.

Sự kiện Các tiện ích cho việc truyền thông không đồng bộ thông qua các sự kiện

Thông báo Các tiện ích cấp cao cho việc truyền không đồng bộ trên cơ sở các sự kiện.

Sự ngoại hiện Các tiện ích cho việc kiểm soát hay không kiểm soát của các đối tượng.

Chu trình sống Các tiện ích cho công việc tạo ra, xác định, sao chép, và di chuyển các đối tượng.

Bản quyền Các tiện ích cho việc gắn bản quyền lên một đối tượng.

Đặt tên Các tiện ích cho việc đặt tên các đối tượng systemwide.

Thuộc tính Các tiện ích cho việc kết hợp đôi (thuộc tính - giá trị) với các đối tượng.

Giao dịch Các tiện ích cho việc công bố và tìm kiếm các dịch vụ mà một đối tượng phải cung cấp.

Lưu trữ Các tiện ích cho công việc lưu trữ lâu dài các đối tượng.

Quan hệ Các tiện ích cho việc mô tả các mối quan hệ giữa các đối tượng.

Bảo mật Các cơ chế cho các kênh bảo mật, sự thẩm định quyền và kiểm định.

Thời gian Cung cấp thời gian hiện tại với các loại lỗi cụ thể.

9.1.2 Truyền thông:

CORBA có một mô hình truyền thông đơn giản: một client gọi một phương thức trong một đối tượng và đợi câu trả lời. Mô hình này là quá đơn giản và các tiện ích truyền thông đã được thêm vào từ rất sớm. Sau đây, chúng ta sẽ xem xét lời gọi các tiện ích trong CORBA và cũng quan tâm đến sự lựa chọn các lời gọi đối tượng này. Như chúng ta đã thấy, sự mở rộng tới mô hình lời gọi đối tượng cơ bản được thúc đẩy bởi nhu cầu cho việc truyền không đồng

Bạn đang đọc truyện trên: Truyen2U.Net

#phần #tan