Giới thiệu về Corba
Như chúng ta đã biết, Java là ngôn ngữ thuần đối tưọng nhất trong các ngôn ngữ lập trình, mọi khái niệm, mọi thứ, mọi nơi đều quy về đối tượng. Các đối tượng trong ngôn ngữ lập trình hướng đối tượng được thiết kế bằng ngôn ngữ nào thì chỉ có mã lệnh tương ...
Như chúng ta đã biết, Java là ngôn ngữ thuần đối tưọng nhất trong các ngôn ngữ lập trình, mọi khái niệm, mọi thứ, mọi nơi đều quy về đối tượng. Các đối tượng trong ngôn ngữ lập trình hướng đối tượng được thiết kế bằng ngôn ngữ nào thì chỉ có mã lệnh tương ứng của ngôn ngữ đó mới truy xuất được chúng. Vấn đề, làm thế nào để các đối tượng được thiết kế bằng các ngôn ngữ lập trình khác nhau có thể triệu gọi và sử dụng lẫn nhau?
Sự ra đời của Java đã giúp cho mọi ứng dụng và đối tượng của nó có thể chạy mọi lúc mọi nơi trên nhiều hệ điều hành. Tuy nhiên, thế giới lập trình là vô cùng đa dạng và phong phú, có rất nhiều ngôn ngữ lập trình “tiền bối” chứa các thư viện đã được thiết kế xây dựng công phu đang hoạt động rất hiệu quả. Vì thế mà ta không thể bắt tất cả các lập trình viên chuyển hết sang dùng java. Yêu cầu đặt ra là cần có một “tiếng nói” chung cho tất cả các ngôn ngữ lập trình. Và Corba ra đời nhằm đáp ứng yêu cầu đó.
Corba (Common Object Request Broker Architecture) – tạm dịch là kiến trúc môi giới các đối tượng. Corba được xây dựng bởi một tổ chức nghiên cứu OMG (Object Manager Group) với sự hợp tác của hơn 800 công ty.
Các ngôn ngữ lập trình đều có các điểm chung là các lời gọi hàm, thủ tục, tham số truyền, trị trả về… Ngôn ngữ đặc tả ánh xạ các điểm chung đó thành những ngôn ngữ lập trình khác nhau. Corba là ngôn ngữ đặc tả giao tiếp, nó định nghĩa nhiều dịch vụ Corba họat động với nhiều ngôn ngữ lập trình khác nhau và không chỉ với nền java.
Corba xác định hai vấn đề cơ bản:
+ Thực thể mà cho phép liên lạc giữa 2 tiến trình được gọi là một trình môi 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). Corba quy định một tập các mô tả hàm kiểu dữ liệu cách khai báo để bạn đặc tả đối tượng.
Corba còn được gọi là ngôn ngữ đặc tả giao tiếp (IDL – Interface Description Language). Nó mô tả chức năng của đối tượng thông qua hàm, phương thức, thuộc tính…nó không chứa bất kỳ cài đặt mã lệnh nào. Và đặc tả đối tượng dựa trên khái niệm interface trong java. Trong các ngôn ngữ, điều đầu tiên khi cài đặt hàm hay thủ tục là phải khai báo. Ví dụ:
Trong C/C++:
int get_price(char * product)
Trong Pascal/Delphi:
function get_price(product : string): integer;
Trong Visual Basic:
function get_price(product as string) as integer
Trong Java:
public interface SomeLibrary{
public static int get_price (String product) ;
}
Bước đầu tiên khi thiết kế chương trình ở mức độ trừu tượng nhất có thể. Giả sử ở bước này bạn không muốn áp đặt với một ngôn ngữ nào cả. Bạn dùng một ngôn ngữ tổng quát để khai báo hàm get_price của riêng mình như sau:
thefunction theinteger get_price (product as thesting)
Tiếp theo bạn muốn cài đặt ngôn ngữ khác như Pascal. Điều này không hề khó nếu bạn biết được cách khai báo tương ứng giữa đặc tả và các từ khoá cũng như kiểu dữ liệu trong Pascal cài đặt .
Ví dụ:
Ngôn ngữ đặc tả Pascal
Thefunction function
Theinteger integer
Get_price get_price
As :
Thestring string
Quá trình trên được gọi là ánh xạ từ ngôn ngữ đặc tả sang ngôn ngữ cài đặt. Đó là ý tưởng của các nhà thiết kế và xây dựng nên kiến trúc Corba. Corba qui định về một tập mô tả hàm, kiểu dữ liệu, cách khái báo để bạn đặc tả đối tượng. Đặc tả đối tuợng cũng giống như khái niệm giao diện trong java. Chỉ là mô tả các chức năng của đối tượng thông qua hàm, phương thức, thuộc tình... Không có mã lệnh nào trong ngôn ngữ đặc tả. Chính vì vậy Corba còn gọi là ngôn ngữ đặc tả giao tiếp (Inteface Decsription Language hay IDL).
Ví dụ: Đặc tả đối tượng Calculator bằng ngôn ngữ IDL của Corba
- Tạo file Calculator.idl
interface Calculator {
long addNumber ( in long x, in long y );
};
- Để chuyển file đặc tả này sang các ngôn ngữ lập trình khác chúng ta có thể dùng như sau:
- idl2cpp Calculator.idl // chuyển sang C++
- idlj Calculator.idl // chuyển sang Java
- Kết quả là chúng ta có được tập tin CalculatorOperations.Java như sau:
public interface CalculatorOperations
{
int addNumber(int x, int y);
} // interface CalculatorOperations
Bước cài đặt hàm addNumber() là do lập trình viên thực hiện. Corba chỉ giúp triệu gọi hàm addNumber() từ đối tượng CalculatorOperations.