xây dựng hệ thống kiểm tra kết quả xổ số bằng java corba middleware
Học Viện Công Nghệ Bưu Chính Viễn Thông Cơ sở Thành phố Hồ Chí Minh Xây dựng hệ thống kiểm tra kết quả xổ số bằng Java Corba Middleware Giảng viên : TS. Tân Hạnh Sinh viên : Trần Tuấn Vũ Lớp : D07THM1 MSSV : 407170078 Báo cáo đề tài môn Hệ Thống Phân Tán – Java Corba Middleware Chương I : TÓM TẮT VÀ GIỚI THIỆU I. Tóm tắt: Nếu bạn là một lập trình viên, bạn sẽ hiểu được công việc nặng nhọc khi phải viết mã lệnh cho chương trình. Cách thiết kế chương trình theo mô hình thủ tục ( top- down procedural hay thủ tục trên-xuống) dần dần được thay thế bằng mô hình hướng đối tượng khoa học và hiệu quả hơn. Lập trình hướng đối tượng đã chứng minh tính đúng đắn và sức mạnh của nó trong việc thiết kế các hệ thống lớn cũng như dễ dàng trong việc nâng cấp và bảo trì mã lệnh. Ngày nay, hầu như mọi ngôn ngữ lập trình đều hỗ trợ và thấm nhuần tư tưởng đối tượng. Mở đầu là Smalltalk, C++, Object Pascal, Delphi, Visual Basic tiếp đến là các hệ quản trị cơ sở dữ liệu Visual Foxpro, Access, SQLserver, Oracle… và như bạn đã thấy Java là ngôn ngữ ra đời sau nhưng lại thuần đối tượng nhất. Trong Java mọi thứ, mọi nơi, mọi khái niệm đều qui về đối tượng. Tuy nhiên lại nảy sinh một bất đồng lớn giữa các ngôn ngữ lập trình. Đó là các đối tượng thiết kế bằng ngôn ngữ nào thì sau khi biên dịch ra mã nhị phân (binary) chỉ có mã lệnh tương ứng của ngôn ngữ đó mới có khả năng truy xuất được đối tượng. Đối tượng viết bằng C++ không dễ dàng truy xuất được từ mã lệnh Delphi hay Visual Basic một cách tự nhiên. Ngay cả đối tượng viết bằng Java cũng khó lòng gọi được từ các ngôn ngữ lập trình khác (mặc dù đã có một số kỹ thuật như sử dụng thư viện liên kết động DLL, gọi các hàm thư viện native… nhưng đó không phải là giải pháp toàn vẹn). Java ra đời với mong muốn các ứng dụng hay đối tượng viết bằng Java có thể chạy được mọi lúc mọi nơi trên mọi hệ điều hành (và cho đến nay có thể nói Sun Microsystem hầu như đã thực hiện được mong ước của mình với sự nổi tiếng của Java). Tuy nhiên, Java không thể thay thế các ngôn ngữ lập trình khác được. Không thể bắt mọi lập trình viên trên thế giới đều chuyển sang viết Java trong khi có hàng trăm triệu dòng mã lệnh của chương trình cũng như thư viện đã được thiết kế và xây dựng từ các ngôn ngữ “tiền bối” khác (điển hình là C/C++ hay Pascal) đang hoạt động rất hiệu quả. Tuy nhiên các nhà lập trình luôn mong muốn tìm được tiếng nói chung cho tất cả các ngôn ngữ lập trình hiện có. Và thế là Corba ra đời. 2 Báo cáo đề tài môn Hệ Thống Phân Tán – Java Corba Middleware Corba đã được coi như là “quốc tế ngữ” trong giới ngôn ngữ lập trình. II. Giới thiệu: Chuẩn CORBA do tổ chức OMG (Object Management Group) quản lý và phát triển. Đây là hiệp hội lớn nhất của các nhà phát triển, sản xuất và ứng dụng phần mềm trên thế giới, hiện nay có gần 1.000 thành viên. Chuẩn CORBA đưa ra một kiến trúc đối tượng phân tán cùng với các đặc tả ứng dụng cho nhiều lĩnh vực khác nhau, nhiều nền khác nhau và nhiều ngôn ngữ lập trình khác nhau. Vì tính trung lập của nó, CORBA được hỗ trợ rất rộng rãi, đặc biệt trong các hệ thống thông tin thương mại, phần mềm giao dịch kinh doanh và dịch vụ viễn thông. Tuy nhiên, cũng do tính độc lập của nó dẫn đến nhiều lý do mà CORBA không thực sự mạnh ở các hệ thống ứng qui mô vừa và nhỏ. CORBA (Common Object Request Broker Architecture) (tạm dịch là Kiến trúc môi giới gọi các đối tượng thông dụng) là một kiến trúc chuẩn cho các hệ đối tượng phân tán. Nó cho phép một tập các đối tượng hỗn hợp, phân tán siêu tương tác với nhau. là một chuẩn hết sức quan trọng ra nhằm cho phép thực hiện kiến trúc "client – sever" theo phương pháp tiếp cận hướng sự vật, trên những hệ thống máy khác nhau và phân tán, để cho phép nhiều nhóm sản xuất phần mềm khác nhau cùng cộng tác. Chuẩn CORBA khi đầu chỉ được quan niệm với các phần mềm 'cố định' và hoạt động phân tán trong một mạng cục bộ. Chuẩn này vừa ra đời thì cũng cùng lúc đó xuất hiện ngôn ngữ Java và công nghệ tác tử, cho phép mỗi khi cần dùng thì bản thân trạm phục vụ thông qua mạng nạp xuống vào máy khách những tác tử ‘Client’, do đó việc chuẩn hoá giao diện "client-sever" ở mức độ ứng dụng trở nên đơn giản hơn. Thêm nữa, với sự bùng nổ Internet thì mở rộng CORBA để xử lý phân tán ở mạng tầm rộng qua Internet trở thành quan trọng, và khi đó phải kết hợp CORBA với ngôn ngữ giao diện XML của Internet, XML đang được triển khai để mở rộng HTML mà chúng ta quen thuộc, vì cái áo HTML đã quá chật. 3 Báo cáo đề tài môn Hệ Thống Phân Tán – Java Corba Middleware Hình 1: Cấu trúc mô hình Corba Hình trên minh họa cấu trúc mô hình CORBA, trong đó bộ phận trừu tượng trung gian mang tên Object Request Broker (ORB) giữ vai trò quan trọng nhất (broker). ORB cho phép khách hàng (client) sử dụng dịch vụ của đối tượng phục vụ (server) mà không cần biết cụ thể dạng thực hiện, nền triển khai và vị trí cài đặt của đối tượng phục vụ. Kiến trúc ở đây được thực hiện theo các mẫu thiết kế đã trình bày trong phần trước. Ưu nhược điểm của CORBA là các lập trình viên có thể chọn bất kỳ ngôn ngữ, nền tảng phần cứng, giao tiếp mạng và các 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ó một số nhược điểm là: nó là ngôn ngữ lập trình bậc 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 cũng khó tái sử dụng. 4 Báo cáo đề tài môn Hệ Thống Phân Tán – Java Corba Middleware Chương II : CORBA I. Mục tiêu, đặc trưng thiết kế của CORBA 1. Các mục tiêu của CORBA: Khi xây dựng kiến trúc Corba, các nhà thiết kể mong đáp ứng được một số những đặc điểm sau: ♦ Khả năng độc lập về: - Nền phần cứng (hardware platform). - Ngôn ngữ lập trình. - Hệ điều hành. - Môi giới yêu cầu đối tượng cụ thể. - Thứ bậc của phân tán đối tượng. ♦ Tính trong suốt trong liên kết của Corba: - Định vị đối tượng trong suốt. - Cho phép các đối tượng tạo ra các lời triệu gọi và nhận kết quả trả lại một cách trong suốt. - Tương tác với các đối tượng từ xa giống như đối tượng cục bộ: + Giữa các host khác nhau. + Các môi trường phân tán không đồng bộ. - Corba sử dụng cơ chế môi giới yêu cầu đối tượng ORB để định vị các đối tượng. ♦ Corba kiến trúc mở: Tại sao? - IDL – Ngôn ngữ định nghĩa giao diện hạt nhân ngôn ngữ trong CORBA. - Định nghĩa giao diện IDL được các ngôn ngữ phát triển ứng dụng như C++, Java,… sử dụng để triệu gọi các đối tượng từ xa như ngôn ngữ, nền – platform và trong suốt trong định vị đối tượng. ( Các ngôn ngữ từ xa có thể không được cài đặt ngôn ngữ giống như các đối tượng cục bộ). ♦ Tính đồng nhất: Các đối tượng của Corba có tính đồng nhất: - Server Corba có thể chứa nhiều giao diện với nhiều trường hợp. - Tham chiếu đối tượng xác định một trường hợp cụ thế. Tham chiếu đối tượng Corba có thể thực hiện liên tục: 5 Báo cáo đề tài môn Hệ Thống Phân Tán – Java Corba Middleware - Một số đối tượng Corba chỉ tồn tại nhất thời và chỉ được sử dụng bởi một Client. - Một số đối tượng Corba có thể được chia sẻ và tồn tại lâu dài theo quy trình nghiệp vụ và chính sách được quyết định khi đóng gói “destroy” đối tượng. Các đối tượng của Corba có thể định vị (cấp phát) lại: - Tham chiếu đối tượng không quan tâm đến vị trí của đối tượng. - Đối tượng Corba có thể được định vị lại bởi Amid hoặc chạy lại chương trình. - Thực thi Corba có thể hỗ trợ giao dịch được định vị lại. Corba hỗ trợ để các đối tượng phục hồi, sao chép lại khi cùng tham chiếu đối tượng giống nhau trên các vùng nhớ khác nhau. 2. Đặc trưng thiết kế của CORBA: ♦ CORBA làm việc với giao diện: - Tất cả các đối tượng Client chỉ có thể truy cập đối tượng CORBA thông qua giao diện. - Sự phân chia giữa các Interface và các implementation cho phép tạo ra đa các thực thi –implementations cho một giao diện. ♦ Đặc trưng Server CORBA: - Khi nói đến server ta phải rằng đang nói đến quy trình trên server chứ không phải máy server. - Một hoặc nhiều quá trình server CORBA có thể chạy trên cùng một máy. - Mỗi quá trình server CORBA chứa một hoặc nhiều trường hợp về đối tượng CORBA, một hoặc nhiều giao diện CORBA. 6 Object IDL-interface Báo cáo đề tài môn Hệ Thống Phân Tán – Java Corba Middleware Đối tượng Corba có thể định vị đến các quá trình, trong quá trình khác nhau trên cùng một máy hoặc các quá trình khác nhau trên những máy khác nhau. II. Kiến trúc CORBA: Mô hình kiến trúc CORBA CORBA còn được gọi là ngôn ngữ đặc tả giao tiếp (IDL – Interface Description Language). Mô tả chức năng của đối tượng thông qua hàm, phương thức, thuộc tính… Không chứa bất kỳ cài đặt mã lệnh nào. Đặc tả đối tượng dựa trên khái niệm interface trong Java. Trong kiến trúc chung Corba thì ORB (Object Request Broker) là thành phần trọng tâm và hạt nhân. ORB được coi là highway ( xa lộ hay còn gọi là băng thông) thực thi tất cả các vấn đề truyền thông của CORBA. Khi một ứng dụng Client muốn sử dụng dịch vụ do Server cung cấp cần: 7 Machine X Machine Y Process A Process CProcess B Báo cáo đề tài môn Hệ Thống Phân Tán – Java Corba Middleware - Thứ nhất: thực hiện được tham chiếu đến đối tượng trên Server cung cấp. - Thứ hai: xử lý các yêu cầu tham chiếu đối tượng, cho phép các thành phần ứng dụng kết nối lẫn nhau. Nói chung nhiệm vụ của ORB là: - Sắp xếp thứ tự dữ liệu. - Quản lý định vị đối tượng. - Truyền tải yêu cầu đến đối tượng trên Server. - Trả lại kết quả cho Client. 8 Báo cáo đề tài môn Hệ Thống Phân Tán – Java Corba Middleware Hình trên biểu diễn một yêu cầu. Một client giữ một tham chiếu đối tượng đến một đối tượng phân tán. Tham chiếu đối tượng được định kiểu bởi một giao tiếp. Trong hình dưới thì tham chiếu đối tượng được định kiểu bởi giao tiếp Rabbit. Object Request Broker (ORB), đưa yêu cầu đến đối tượng và trả về một số kết quả cho client. Trong hình yêu cầu jump trả về một tham chiếu đối tượng được định kiểu bởi giao tiếp AnotherObject. III. IDL (Interface definition language - Ngôn ngữ định nghĩa giao diện). 1. Sơ lược về IDL : + IDL(Interface Definition Language) là ngôn ngữ đặc tả interface. IDL không có lệnh, chỉ có các mô tả hàm, kiểu dữ liệu, các khai báo để đặc tả đối tượng. CORBA dùng IDL để có thể cài đặt client/server bằng các ngôn ngữ khác nhau có hỗ trợ CORBA như là C, C++, COBOL, Ada, Java. Mỗi ngôn ngữ hỗ trợ CORBA đều có trình chuyển đổi IDL sang ngôn ngữ đó. + CORBA dùng IDL để viết Interface, sau đó dùng các trình biên dịch để dịch sang ngôn ngữ cụ thể, đồng thời tạo lớp stub, skel và một số lớp hỗ trợ CORBA. Chúng ta sẽ xem xét một ví dụ sử dụng CORBA. Đầu tiên chúng ta định nghĩa IDL cho đối tượng từ xa: interface ExampleCORBA { attribute string s; }; Bây giờ chúng ta có thể biên dịch IDL dùng lệnh idlj. Tham số -fall phát sinh mã cả 2 phía máy client và server idlj -fall ExampleCORBA.idl 9 Báo cáo đề tài môn Hệ Thống Phân Tán – Java Corba Middleware Sau khi biên dịch IDL, sẽ phát sinh một số tập tin sau: - ExampleCORBAStub.java là mã stub. - ExampleCORBA.java là giao diện từ xa - ExampleCORBAHolder.java là mã hỗ trợ. - ExampleCORBAHelper.java là mã hỗ trợ. - ExampleCORBAOperations.java là mã hỗ trợ. - ExampleCORBAPOA.java là mã skeleton và là lớp cha chúng ta thừa kế khi cài đặt mã bến phía máy chủ. Một ví dụ khác về IDL: Đặ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. 10 [...]... suốt(Transparency) Khả năng che dấu sự rời rạc của hệ thống Hệ thống ISO chỉ ra có 8 loại trong suốt: - Trong suốt lỗi (Failure Transparency) - Trong suốt vị trí (Location transparency) - Trong suốt truy cập (Access Transparency) - Trong suốt sự chia sẻ tài nguyên (Concurency transparency) - Trong suốt dịnh vị lại ( Relocation transparency) 16 Báo cáo đề tài môn Hệ Thống Phân Tán – Java Corba Middleware. .. tạo trình quản lý môi giới đối tượng ORB: 23 Báo cáo đề tài môn Hệ Thống Phân Tán – Java Corba Middleware Khởi tạo trình trung gian ORB Chạy chương trình server: Giao diện chương trình Server Chạy chương trình Client: 24 Báo cáo đề tài môn Hệ Thống Phân Tán – Java Corba Middleware Giao diện chương trình Button Check: Kiểm tra kết quả xem số có trúng thưởng hay không Button exit: thoát khỏi chương trình... tượng remote và lớp server bằng Java II Viết chương trình dò kết quả xổ số dựa trên công nghệ CORBA: Trong bài báo cáo sử dụng Microsoft SQL Server 2008 R2 và thông qua ODBC có tên là Lottery 22 Báo cáo đề tài môn Hệ Thống Phân Tán – Java Corba Middleware Tạo ODBC cho SQL Server Cơ sở dữ liệu được lưu vào bảng như sau: Bảng CSDL Đầu tiên muốn chạy chương trình cần khởi tạo trình quản lý môi giới đối tượng... (Replication Transparency) - Trong suốt di trú (Migration Transparency) - Trong suốt khả năng di chuyển tài nguyên (Persistence Transparency) Nhược điểm của hệ phân tán • Tính phức tạp: Hệ phân tán phức tạp hơn hệ tập trung • Tính bảo mật: Hệ phân tán dễ bị tấn công từ bên ngoài • Khả năng quản lý: Hệ phân tán đòi hỏi hệ quản lý hiệu quả Không dự đoán trước: Không thể biết được những phản hồi do tổ chức hệ thống. .. đối tượng ở client bằng Java, đối tượng ở server là Java - Viết interface bằng ngôn ngữ IDL (Idl_Inter.idl) - Ở máy client dùng idlj.exe dịch IDL Interface sang Java Interface, đồng thời tạo lớp Java- Stub (stub viết bằng Java) idljava –fclient Idl_Inter.idl (enter) - Viết lớp client bằng Java - Ở máy server dùng idlj.exe dịch IDL Interface sang Java Interface, đồng thời tạo lớp Java- Skel idlj –fserver... Tham số -fall phát sinh mã cả 2 phía máy khách và máy chủ idlj -fall CurrencyConverter.idl Sau khi biên dịch IDL, sẽ phát sinh một số tập tin sau: • _LotteryStub .java là mã stub • Lottery .java là giao diện từ xa 25 Báo cáo đề tài môn Hệ Thống Phân Tán – Java Corba Middleware • LotteryHolder .java là mã hỗ trợ • LotteryHelper .java là mã hỗ trợ • LotteryOperations .java là mã hỗ trợ • LotteryPOA .java là... hình CORBA gần giống với ngôn ngữ C CORBA đưa ra từ khóa in cho các biến truyền vào theo trị và từ khóa out để lấy trị trả về Sau đây là một ví dụ ánh xạ giữa CORBA và Java: 11 Báo cáo đề tài môn Hệ Thống Phân Tán – Java Corba Middleware CORBA IDL JAVA Module { Package Math; interface Mathlibrary { Public interfaces long add ( MathLibrary { in long x, Int add ( int x, in long y ); Int y ); long subtract... chú ý một số điểm khi gọi phương thức từ xa : - Thời gian gọi ( tính theo ms, 1000 lần chậm hơn khi gọi cục bộ) - Việc giao tiếp giữa client và server sẽ phải tính đến các exception ( Các exception này phải được phía client chấp nhận và xử lý) 20 Báo cáo đề tài môn Hệ Thống Phân Tán – Java Corba Middleware Quá trình phát triển ứng dụng Corba 21 Báo cáo đề tài môn Hệ Thống Phân Tán – Java Corba Middleware. .. đề tài môn Hệ Thống Phân Tán – Java Corba Middleware 2 Ánh xạ giữa ngôn ngữ IDL và Java (IDL mapping to Java) Dưới đây là tập các ánh xạ của ngôn ngữ IDL trong CORBA tương đương với các kiểu dữ liệu và từ khoá có trong Java IDL CORBA JAVA Module Package Interface Interface, helper class, holder class Constant Public static final Boolean Boolean Char, wchar Char Octet Byte String, wstring Java. lang.string... List(NameContext nc, BindingList bl, BindingIterator bt) 14 Báo cáo đề tài môn Hệ Thống Phân Tán – Java Corba Middleware Chương III: CORBA VÀ CÔNG NGHỆ PHÂN TÁN I Tổng quan về hệ phân tán: Hệ phân tán trong đó các chức năng và dữ liệu được phân tán trên nhiều trạm, được kết nối với nhau thông qua một mạng máy tính Hoặc có thể nói: Hệ phân tán bao gồm tập các máy tính tự trị được nối với nhau bởi mạng máy . Học Viện Công Nghệ Bưu Chính Viễn Thông Cơ sở Thành phố Hồ Chí Minh Xây dựng hệ thống kiểm tra kết quả xổ số bằng Java Corba Middleware Giảng viên : TS. Tân Hạnh Sinh. tượng CORBA cũng khó tái sử dụng. 4 Báo cáo đề tài môn Hệ Thống Phân Tán – Java Corba Middleware Chương II : CORBA I. Mục tiêu, đặc trưng thiết kế của CORBA 1. Các mục tiêu của CORBA: Khi xây dựng. ExampleCORBA.idl 9 Báo cáo đề tài môn Hệ Thống Phân Tán – Java Corba Middleware Sau khi biên dịch IDL, sẽ phát sinh một số tập tin sau: - ExampleCORBAStub .java là mã stub. - ExampleCORBA .java là