Mô hình Middleware & ứng dụng vào Virtual NeTrung ươngork Computing

MỤC LỤC MỤC LỤC HÌNH VẼ Hình 1.1: Mô hình Peer-to-Peer 10 Hình 1.2: Mô hình Client/Server 11 Hình 1.3: Tiến trình giao tiếp ứng dụng 13 Hình 1.4: Mô hình tham chiếu OSI 14 Hình 1.5. Mô hình middleware 15 Hình 1.6: Mô hình giao tiếp giữa VNC Server và VNC Client 16 Hình 2.1: Giao diện middleware 22 Hình 2.2: Sơ đồ chung về dịch vụ trình diễn 28 Hình 2.3: Kiến trúc dịch vụ giao tiếp. 31 Hình 2.4: Kiến trúc chung của dịch vụ hàng đợi thông điệp 34 Hình 2.6: Kiến trúc dịch vụ điều khiển

doc87 trang | Chia sẻ: huyen82 | Lượt xem: 2912 | Lượt tải: 1download
Tóm tắt tài liệu Mô hình Middleware & ứng dụng vào Virtual NeTrung ươngork Computing, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
36 Hình 2.7: Kiến trúc dịch vụ thông tin 38 Hình 2.8: Kiến trúc chung của dịch vụ quản lý 41 Hình 2.9: Kiến trúc chung về dịch vụ bảo mật 44 Hình 3.1: VNC Viewer trên các máy khác nhau 49 Hình 3.2: Kiến trúc thin client 52 Hình 3.3: Giao thức RFB 53 Hình 4.1: Mô hình chung của ứng dụng VNC 67 Hình 4.2: Biểu đồ diễn tiến của một phiên làm việc. 68 Hình 4.3: Biểu đồ chức năng của VNC Server 69 Hình 4.4: Mô hình giao tiếp trong hệ VNC 70 Hình 4.5: Mô hình giao tiếp người dùng trong hệ VNC 71 Hình 4.6: Biểu đồ chức năng của VNC Viewer 71 Hình 4.7: Các giao diện sử dụng trong hệ thống 72 Hình 4.8: Giao tiếp trong hệ thống VNC khi không có middleware 73 Hình 4.9: Mô hình middleware trong VNC 74 Hình 4.10: Mô hình phần mềm BKEC phân cấp theo chức năng 76 Hình 4.11: Mô hình middleware sử dụng Direct Play 9.0 77 Hình 4.12: Biểu đồ lớp quan hệ lớp System Server 78 Hình 4.13: Lớp System Server 79 Hình 4.14: Biểu đồ quan hệ lớp SystemClient 80 Hình 4.15: Mô hình trao đổi thông tin giữa BKEC Server và BKEC Client 81 Hình 4.16: Mô hình middleware sử dụng VNC 82 MỤC LỤC TỪ VIẾT TẮT 1 API Application Programming Interface 2 CI Communication Interface 3 COM Component Object Model 4 DCE Distributed Computing Environment 5 DI Data Interface 6 EOS Enterprise Object Software 7 GUI Graphical User Interface 8 MI Manager Interface 9 ORB Object Request Broker 10 OSF Open Software Foundation 11 RFB Remote Frame Buffer 12 RPC Remote Procedure Call 13 SPI System Programming Interface 14 UI User Interface 15 VNC Virtual Network Computing LỜI NÓI ĐẦU Ngày nay công nghệ thông tin đã phát triển và lớn mạnh trở thành một trong những ngành mũi nhọn của mọi quốc gia trên thế giới. Công nghệ thông tin được ứng dụng vào mọi ngành kinh tế, mọi lĩnh vực của đời sống, cùng với sự phát triển của cơ sở hạ tầng, internet và đặc biệt là sự phát triển không ngừng của khoa học kỹ thuật đã giúp cho mọi người làm việc hiệu quả hơn, mọi hoạt động mua bán, giải trí trở nên đơn giản và ranh giới giữa các quốc gia, khu vực dần biến mất. Hiện nay chúng ta có thể làm việc, mua sắm và nói chuyện với tất cả mọi người trên thế giới mà không cần thiết phải gặp mặt nhau chỉ đơn giản thông qua một cái nhấp chuột nhờ sử dụng các phần mềm và hệ thống internet toàn cầu. Xây dựng và triển khai các phần mềm sử dụng trên mạng là một trong những ưu tiên hàng đầu của những nhà phát triển phần mềm hiện nay. Nhưng có một vấn đề đặt ra là sự không tương thích giữa các hệ điều hành, giữa các thiết bị và giữa các giao thức và mạng khác nhau. Đây thực sự là một vấn đề nan giải và cực kỳ khó khăn đối với nhóm hay công ty nhỏ muốn xây dựng những phần mềm kiểu này cả về chi phí tiền bạc, nhân lực cũng như thời gian. Nhưng thật may mắn, vấn đề này các nhà phát triển thường không phải giải quyết do có các phần mềm trung gian (middleware) đảm nhiệm. Middleware có vai trò rất quan trọng trong những phần mềm hoạt động trên mạng, cho các hệ làm việc cộng tác (collaboration) nhằm giải quyết các vấn đề liên quan đến nhiều lĩnh vực khác nhau cần nhiều các chuyên gia trong các ngành khác nhau tham gia xây dựng,… Các phần mềm này thường do các tổ chức và các công ty lớn đưa ra nhằm giúp đỡ xóa bỏ những chướng ngại gặp phải do môi trường phân tán và sự không đồng nhất của mạng và các nền khác nhau đưa đến và thường được bán. Nội dung chính của đồ án em xin trình bày về ba vấn đề chính: Middleware: đây là phần quan trọng nhất sẽ trình bày toàn bộ những nghiên cứu về middleware, kiến trúc chung, mô hình cũng như các dịch vụ được cung cấp bởi các middleware. Qua đó để thấy rõ tầm quan trọng và tính ứng dụng rộng lớn của middleware bởi vì hiện nay tuy có rất nhiều các sản phẩm của nhiều các công ty khác nhau nhưng chúng chỉ có tầm ứng dụng hạn chế và ứng dụng trong phạm vi cụ thể. Hiểu rõ về middleware chúng ta có thể đưa ra những giải pháp một cách tối ưu để xây dựng được những ứng dụng một cách tốt nhất, hiệu quả nhất. VNC (Virtual Network computing): đây là phần thứ hai giới thiệu về mô hình tính toán mạng ảo được sử dụng rất rộng rãi hiện nay để xây dựng các ứng dụng quản lý trên mạng. Trong phần này em đưa ra những tìm hiểu về mô hình tính toán mạng ảo, công nghệ thin-client và giao thức remote frame buffer-những công nghệ làm nên sức mạnh của VNC-qua đó cũng đưa ra những ứng dụng của middleware vào VNC. Ứng dụng của middleware vào hệ thống tính toán mạng ảo: phần này là những nghiên cứu về những gì đã và nên áp dụng vào VNC để cải thiện hiệu quả của hệ thống này. Trong phần ứng dụng em xin trình bày về những ứng dụng của middleware và VNC trong chương trình hỗ trợ giảng dạy trên mạng LAN (BKEC-Eclass) - do nhóm chúng em xây dựng - những điểm đã và chưa làm được và hướng phát triển tiếp theo để có thể sử dụng một hiệu quả hơn các middleware nhằm xây dựng phần mềm một cách tốt nhất, hiệu quả nhất. Đồ án được chia thành 5 chương như sau: Chương I: Đặt vấn đề. Trong chương đầu tiên này em sẽ giới thiệu chung các mô hình phát triển phần mềm trong môi trường phân tán, mô hình phần mềm trung gian (Middleware) và hệ thống tính toán mạng ảo (Virtual Network Computing). Chương II: Mô hình phần mềm trung gian middleware. Chương thứ hai này cũng là chương chính của đồ án em giới thiệu về toàn bộ các dịch vụ, giao diện và ứng dụng của middleware trong các ứng dụng phân tán. Chương III: Virtual Network Computing. Trong chương ba này em tập trung giới thiệu thế nào là hệ thống tính toán mạng ảo, ứng dụng cũng như những công nghệ thin-client, giao thức remote frame buffer sử dụng trong hệ thống VNC. Chương IV: Middleware và Virtual Network Computing. Chương này tập trung đi vào phân tích chức năng của hệ VNC Server và VNC Viewer, các dịch vụ, đặc điểm và tính chất của middleware trong hệ thống. Cuối cùng của chương là phần phân tích ứng dụng sử dụng VNC và Direct X Play 9.0 để xây dựng hệ thống hỗ trợ giảng dạy BKEC (Có tài liệu kỹ thuật kèm theo). Chương V: Kết luận. Chương cuối cùng là phần tổng kết kinh nghiệm thu được sau khi hoàn thành đồ án, có đưa ra những điểm đã làm được, những điểm còn thiếu sót và đưa ra một số hướng phát triển của đề tài. Đây là một đề tài không thật sự là mới nhưng là một đề tài rất bổ ích và khó vì hạn chế về tài liệu, thời gian cũng như kinh nghiệm nên chắc chắn còn nhiều thiết sót. Em rất mong quí thầy cô xem xét và cho những nhận xét và hướng dẫn để em có thể tiếp tục nghiên cứu xây dựng và hoàn thiện trong thời gian tới. Em xin chân thành cảm ơn các thầy cô trong bộ môn công nghệ phần mềm đã giúp đỡ chúng em rất nhiều trong thời gian xây dựng và triển khai phần mềm BKEC cũng như hoàn thành đồ án này. Em xin bày tỏ lòng biết ơn sâu sắc đến Ths Đinh Hùng, giám đốc Trung tâm máy tính trường Đại học Bách Khoa Hà Nội. Người đã tạo mọi điều kiện về cơ sở vật chất và tinh thần, cung cấp các tài liệu tham khảo và cho em những lời khuyên quý báu để có thể hoàn thành đồ án này. Hà Nội, Ngày 20 tháng 5 năm 2005 Sinh viên: Vũ Đức Chính Lớp: Tin Pháp K45 CHƯƠNG I: ĐẶT VẤN ĐỀ 1.1. Các vấn đề chung về thiết kế phần mềm trong môi trường phân tán Để xây dựng các ứng dụng phân tán chúng ta thường hay sử dụng hai mô hình thông dụng nhất đó là peer-to-peer và client/server. Mỗi mô hình đều có ưu và nhược điểm riêng đối với các ứng dụng trong những môi trường cụ thể. Trong phần đầu tiên của đồ án em xin giới thiệu sơ qua về hai mô hình này nhằm giúp cho mọi người có thể dễ dàng tiếp cận mô hình phần mềm trung gian (middleware) và hệ thống tính toán mạng ảo được xây dựng trong môi trường phân tán sử dụng các mô hình này. 1.1.1. Mô hình peer-to-peer Một ứng dụng peer-to-peer bao gồm các máy tính của người sử dụng kết nối với nhau thông qua liên kết mạng. Dưới đây là mô hình topology của ứng dụng gồm bốn người dùng trong mô hình peer-to-peer. Hình 1.1: Mô hình Peer-to-Peer Một đặc điểm quan trọng của mô hình peer-to-peer là thông tin từ một máy gửi đi cần phải đến tất cả các máy khác nên băng thông đường truyền, cũng như thời gian xử ở tất cả các máy là như nhau và tương đối lớn (do vai trò của các máy là bình đẳng như nhau trong môi trường mạng). Vì vậy nếu phát triển trên mạng Internet thì nên sử dụng mô hình Client-Server nhưng mô hình peer-to-peer lại thích hợp trong các ứng dụng phát triển trên mạng LAN. Trong mô hình này mọi người dùng có thể trao đổi thông tin trực tiếp với nhau thông qua liên kết mạng. Ví dụ, khi một ứng dụng phía user (người dùng) bị thay đổi thì ứng dụng sẽ phải gửi 3 message (thông điệp) để cập nhật lại thông tin cho các máy khác. Bởi vì trong mô hình này không tồn tại server do nên chúng ta cần một máy đứng ra làm máy chủ (host). Sau đó các client sẽ truy vấn để tìm session (phiên) trên host. Khi tìm được máy chủ, các client sẽ gia nhập session nên từ địa chỉ máy (client và host) đều có quyền thực hiện như nhau trong môi trường mạng. Nếu máy host gặp sự cố thì hệ thống sẽ chọn một máy trạm (client) làm host do đó không ảnh hưởng đến các client còn lại. Ưu điểm của mô hình peer-to-peer có ưu điểm khá đơn giản. Nhưng nhược điểm của mô hình này là khi số lượng user tăng lên thì thì số lượng message cũng tăng lên. Vì vậy số lượng client trong các ứng dụng nên hạn chế trong mức cho phép. 1.1.2. Mô hình client/server Thuật ngữ client/server đã được sử dụng lần đầu tiên vào những năm 1980 khi mà sự phát triển của máy tính và hệ thống mạng đang tăng lên không ngừng. Kiến trúc các phần mềm client/server được đưa và sử dụng cuối những năm 1980 và tỏ ra rất linh hoạt. Trên Internet, một trình duyệt Web là một chương trình client mà những yêu cầu dịch vụ được gửi đến Web server thông qua giao thức HTTP từ một máy tính bất kì nơi nào trên thế giới có kết nối Internet. Kiến trúc client/server là một dạng chung trong hệ thống tính toán phân tán. Một hệ thống phân tán là một tập hợp rất nhiều máy tính, sự phân tán này là trong suốt hay không quan trọng đối với người sử dụng. Hệ thống chỉ xuất hiện trên các máy trạm hay các máy cục bộ, cho nên đối với những chuyên gia, những người có những hiểu biết nhất định thì các hệ thống máy tính của họ, việc sao lưu giữ liệu, cân bằng tải và các chức năng của hệ thống có tầm quan trọng rất lớn. Một ứng dụng client/server bao gồm các máy tính của người sử dụng có thể kết nối với nhau thông qua một máy server trung tâm. Mô hình client/server có thể được mô tả một các đơn giản dưới đây: Mạng Terminal PC Client . Data . server Hình 1.2: Mô hình Client/Server Các client (có thể là các PC, các terminal, laptop…) không được phép trao đổi thông tin trực tiếp lẫn nhau mà phải gián tiếp qua Server. Như vậy có thể thấy băng thông đường truyền cũng như thời gian xử lý của máy chủ là rất lớn còn các máy khác lại nhỏ. Việc tăng số lượng máy client đòi hỏi chủ yếu phải nâng cấp phía server. Điều này rất được khuyến khích phát triển trên mạng Internet. Các máy tính của user có thể giao tiếp với nhau thông qua server. Server có nhiệm vụ truyền thông tin tới các user khác. Ví dụ, khi một user thay đổi thì máy tính của user này sẽ gửi message tới server. Server sẽ gửi message này tới toàn bộ các user khác trong session. Server có một số nhiệm vụ sau: Hoạt động như một hub/switch để phân chia các message trong session. Mọi máy tính chỉ cần gửi message cho server. Server điều khiển logic đồng bộ tất cả các user. Việc sắp xếp như vậy có thể giảm nguy cơ ách tắc thông điệp (message) đặc biệt trong các ứng dụng lớn gồm nhiều user tham gia. Đóng vai trò máy chủ trong ứng dụng. Server sẽ thực hiện các nhiệm vụ điều khiển phiên làm việc. Hỗ trợ các phần trong ứng dụng, với nhiều ứng dụng đặc biệt với các ứng dụng lớn nhiều quá trình xử lý được thực hiện trên server, còn client chỉ điều khiển giao diện người dùng (UI). Mô hình client/server có rất nhiều ưu điểm: Chúng khá hiệu quả nhất là những ứng dụng lớn nhiều user tham gia, thực tế cho thấy chúng tốt hơn nhiều so với mô hình peer-to-peer bởi vì sự gia tăng của các user là tuyến tính với sự gia tăng số lượng message. Mô hình client/server là cần thiết đối với các ứng dụng đa người dùng. Chúng ta có thể xử lý phức tạp trên máy chủ còn các máy user thì chì cần điều khiển UI. Do đó, các máy chủ thường rất mạnh còn các máy user chỉ cần cấu hình bình thường. Chúng ta có thể điều khiển các ứng dụng một cách tập trung. Ví dụ, bạn có thể thường xuyên cập nhật hay sửa lỗi với việc sửa đổi lại ứng dụng server. 1.2. Một số vấn đề liên quan đến các ứng dụng phân tán theo mô hình client/server 1.2.1 Tiến trình giao tiếp Khi một ứng dụng bao gồm hai hay nhiều tiến trình chạy trên các máy khác nhau, những tiến trình này cần phải giao tiếp được với nhau. Hình 1.3 biểu diễn sự phức tạp của giao tiếp giữa các thành phần, giống như trên hình 1.3 thì giao tiếp trên thực tế bao gồm nhiều hơn một mức: Tiến trình gửi Tiến trình nhận Tầng ứng dụng Tầng trình diễn Tầng phiên Tầng truyền thông Tầng mạng Tầng liên kết dữ liệu Tầng vật lý Tầng ứng dụng Tầng trình diễn Tầng phiên Tầng truyền thông Tầng mạng Tầng liên kết dữ liệu Tầng vật lý Data Data Data Data Data Data Data Data Gói tin Giao thức mạng Giao thức ứng dụng Hình 1.3: Tiến trình giao tiếp ứng dụng Phần mềm mạng và phần cứng tạo nên các giao tiếp ở mức thấp. Kiến trúc ứng dụng và thiết kế xác định nội dung và mục đích của giao tiếp ở tầng cao nhất. Middleware xác định cách thức các thành phần trong ứng dụng phân tán sử dụng phần mềm mạng và phần cứng để giao tiếp. 1.2.2 Truyền thông mạng Một số chuẩn về cách truyền thông trên mạng thường dùng được biểu diễn ở hình 1.4. Đây là mô hình OSI, chúng ta không cần phải xem xét lại một cách chi tiết nhưng em đưa ra đây do hai lí do: Tầng 7 Tầng 6 Tầng 5 Tầng 4 Tầng 3 Tầng 2 Tầng 1 Ứng dụng Trình diễn Phiên Truyền thông Mạng Liên kết vật lý Media Access Control (MAC) Vật lý Mô hình tham chiếu OSI Các giao thức phổ biến NetBIOS Socket TLI APPC SUN DCE NDA RPC Messaging Peer-to-peer XDR NetBEUI TCP/IP IPX LUC6.2 Cáp quang Cáp xoắn đơn Cáp xoắn đôi IEEE 802.2 ISDN SDLC Enthernet Hình 1.4: Mô hình tham chiếu OSI Lí do đầu tiên là mô hình này cung cấp một sơ đồ biểu diễn quan hệ giữa các giao thức trung gian (ví dụ như RPC) và những giao thức mạng thông dụng nhất như TPC/IP, LU6.2, Ethernet, và ISDN. Lí do thứ hai nó làm nổi bật những tranh cãi về giao thức thông điệp được sử dụng cho các giao diện ứng dụng mức cao (tầng 7 của OSI) và không thuộc về tầng thấp hơn tầng mạng, và các giao thức truyền thông được sử dụng để cài đặt thông điệp (từ tầng 2 đến tầng 5 của mô hình OSI). Giao tiếp trên mạng tại những tầng thấp sử dụng các giao thức và các định dạng khác nhau, hoặc FAP, việc cài đặt sử dụng một số kiểu thông điệp, gói dữ liệu khác nhau và những hiểu biết về ứng dụng không thể nhìn thấy. 1.3. Mô hình phần mềm trung gian middleware Ngày nay hệ thống thông tin đóng vai trò rất quan trọng giúp mọi người có các điều kiện tốt nhất để giao tiếp, mua bán và kinh doanh. Hệ thống thông tin mang đến mọi thông tin về mọi mặt cả về hình dạng, tính chất giúp giảm thiểu đáng kể những khó khăn cũng như bất cập về khoảng cách hay bất đồng ngôn ngữ. Việc xây dựng những ứng dụng để thỏa mãn điều này là ưu tiên hàng đầu của các xí nghiệp, công ty lớn ở mọi quốc gia. Nhưng khi xây dựng những ứng dụng này các nhà phát triển thường vấp phải những khó khăn về sự không tương thích về phần cứng, phần mềm hệ điều hành do các nhà cung cấp khác nhau. Để có thể xây dựng được các ứng dụng tương thích cần rất nhiều công sức tiền của và cũng không phải hoàn toàn đạt được kết quả như mong muốn. Thật may mắn để giải quyết vấn đề này đã có các phần mềm trung gian middleware. Bằng việc cung cấp tập các chuẩn cho việc xử lý phân tán, middleware giúp loại bỏ những khó khăn về sự không tương thích phần cứng, phần mềm cũng như hệ điều hành giúp các nhà phát triển thực sự không cần lo lắng về những khó khăn này nữa. Chúng ta cứ tạm hiểu middleware như một tầng trung gian đặt giữa tầng mạng và tầng ứng dụng, giúp các ứng dụng giao tiếp với nhau mà không cần chú ý đến các tầng thấp hơn. Chúng ta có thể dễ dàng nhìn thấy điều này như trên hình 1.5. Ứng dụng Middleware Hệ điều hành Ứng dụng Middleware Hệ điều hành Mạng Hình 1.5. Mô hình middleware Trong đồ án này em chỉ xin đưa ra một số cách nhìn nhận về middleware, kiến trúc, dịch vụ và một số ứng dụng phổ biến của nó. Em không thật sự đi vào xây dựng một middleware vì công việc này quá khó đòi hỏi rất nhiều công sức và tiền của, mà thực sự là không cần thiết vì khi xây dựng các ứng dụng phân tán, chúng ta nên tìm các sản phẩm middleware có sẵn sẽ giúp chúng ta giảm thiểu giá thành và thời gian hoàn thành của ứng dụng. Phần tiếp theo em xin giới thiệu về Virtual Network Computing, một hệ thống được sử dụng rất nhiều trong các ứng dụng quản lý trên mạng hiện này. Ở phần này chúng ta sẽ tìm hiểu xem hệ thống đã sử dụng các sản phẩm middleware chưa và nếu chưa thì chúng ta có thể sử dụng như thế nào để hệ thống có thể đạt được những kết quả tốt hơn nữa. 1.4. Hệ thống tính toán mạng ảo (Virtual Network Computing) Khái niệm network computer (mạng máy tính) là hướng tới người dùng để có thể truy cập tài nguyên một cách tập trung, đơn giản từ các thiết bị rẻ tiền. Hoạt động của các thiết bị này giống như một client kết nối đến máy server rất mạnh và được cung cấp các ứng dụng, dữ liệu, hay lưu trữ các thông tin cá nhân. Ý tưởng này còn vươn xa hơn nữa. Trong hệ thống VNC, máy server không chỉ hỗ trợ các ứng dụng và dữ liệu mà nó còn hỗ trợ các thành phần trên màn hình để có thể được truy nhập từ nhiều máy client có sử dụng phần mềm network computer. Bất cứ khi nào màn hình của VNC được truy cập thì trạng thái và cấu hình của nó sẽ là như nhau cho tới lần truy nhập cuối cùng. VNC là một hệ thống điều khiển từ xa mà cho phép bạn có thể nhìn và tương tác với một máy tính khác (được gọi là server) sử dụng một chương trình đơn giản (được gọi là viewer) trên một máy khác từ bất cứ nơi đâu trên mạng. Hai máy tính không cần cùng một kiểu ví dụ bạn có thể quan sát một máy văn phòng Linux từ một máy tính Windows PC từ nhà. Hình 1.6: Mô hình giao tiếp giữa VNC Server và VNC Client VNC có tầm ứng dụng rất rộng rãi. Nó cho phép một người tại một máy tính từ xa có thể nắm giữ quyền điều khiển của một máy khác trên mạng, như thể là bạn đang ngồi trên máy mà bạn điều khiển vậy. Đối với người dùng cá nhân, một kịch bản chung là sử dụng VNC để giải quyết vấn đề về khoảng cách. Nói theo một cách khác ngồi trên một máy ở Hà Nội bạn có thể điều khiển một máy khác ở London và sử dụng nó như đang sử dụng máy ở Hà Nội vậy. Đối với các nhà doanh nghiệp, VNC có thể được sử dụng để cung cấp giải pháp màn hình mềm dẻo theo cách cho phép các cán bộ trong công ty truy cập tới các màn hình ở văn phòng và máy chủ từ bất kỳ máy nào trong công ty hoặc một điểm từ xa, không quan tâm đến kiểu máy được sử dụng. VNC cũng có thể được sử dụng để quản trị hệ thống từ xa bao gồm điều khiển, sửa lỗi… VNC cũng được sử dụng trong môi trường giáo dục, ví dụ cho phép một nhóm các học viên phân tán có thể đồng thời quan sát một màn hình đang hướng dẫn và thao tác, hoặc cho phép giáo viên có thể điều khiển máy học viên để cung cấp các trợ giúp cần thiết. Hệ thống VNC là một hệ thin-client. Cũng giống như các hệ thống khác nó giảm thiểu tối đa trạng thái duy trì hoạt động ở thiết bị đầu cuối của người dùng, không đòi hỏi hay có yêu cầu cao về tài nguyên sử dụng đặc biệt là phần cứng. Tuy nhiên hệ thống VNC không chỉ là một hệ thin-client mà nó là sự tổng hợp khác nhau từ các hệ thống khác nhau như giao thức Citrix ICA, SCO’s Tarantella, Graphon’s RapidX, và của Microsoft’s Win-dows-based Terminal Server. Một vấn đề đối với tất cả ngoại trừ Microsoft đó là không như hệ thống X Windows, các hệ thống đó sử dụng các giao thức riêng. Giao thức Citrix’s ICA là một cơ chế phổ biến cho tất cả các tương tác từ xa giữa các PC, tuy giao thức này khá gần với GUI (Graphic User Interface) của Microsoft Windows GUI, nhưng không phải là một ý tưởng mang tính phổ biến dành cho giao thức hiển thị. Microsoft đã phát triển giao thức T.Share của họ dựa trên giao thức ITU T.120. Giao thức này đã được sử dụng trong một phần mềm khá nổi tiếng về hội thảo trực tuyến đó là NetMeeting của Microsoft (đi kèm trong windows). Công nghệ ẩn trong VNC là một giao thức hiển thị đơn giản. Giao thức này làm cho VNC hoạt động rất mạnh mẽ và có nhiều ứng dụng trong các ứng dụng dạy học trực tuyến, quản lý màn hình... Không như các hệ thống và các giao thức hiển thị khác như X Window System và Citrix’s ICA, Giao thức của VNC độc lập hoàn toàn với hệ điều hành và các ứng dụng. Trong đồ án này em sẽ trình bày về hệ thống VNC thông qua công nghệ sử dụng chính của nó là thin-client, giao thức RFB và phần cuối là ứng dụng middleware vào hệ thống này. CHƯƠNG II: MÔ HÌNH PHẦN MỀM TRUNG GIAN MIDDLEWARE 2.1. Mô hình Middleware Trong phần này em sẽ đưa ra khái niệm, kiến trúc và các dịch vụ của các phần mềm trung gian (middleware). Nó không đi vào một phần mềm cụ thể mà đưa những giao diện chính, dịch vụ mà middleware cung cấp để phát triển ứng dụng. Đầu tiên là một số khái niệm chung về middleware của một số tổ chức xây dựng và tìm hiểu về middleware. 2.1.1. Các khái niệm về Middleware Rất khó để đưa ra một định nghĩa tổng quát về Middleware vì đây là một trong những hướng nghiên cứu được rất nhiều tổ chức và cá nhân tham gia và đưa ra các sản phẩm phục vụ cho mục đích riêng của họ. Ở đây em chỉ xin đưa ra một số khái niệm thông dụng và hay được sử dụng nhất hiện nay. 2.1.1.1. Khái niệm theo internet2 Middleware hoặc “glue” là một lớp của phần mềm nằm giữa tầng mạng và tầng ứng dụng. Phần mềm này cung cấp những dịch vụ giống như là định danh, xác thực, quyền hạn, thư mục và bảo mật. Trong tình hình Internet hiện nay, ứng dụng thường cung cấp các dịch vụ cho chính mình, nó điều khiển tính cạnh tranh và không tương thích chuẩn. Cùng với sự chuẩn hóa và tương thích ngày một tăng, middle sẽ tạo nên những ứng dụng mạng dễ sử dụng. 2.1.1.2. Khái niệm theo JISC Core Middleware Programme Theo JISC (tổ chức về các chương trình dựa trên middleware) thì middleware được miêu tả giống như tiến trình của tập các trợ giúp nhằm kết nối con người với tài nguyên cần thiết. Middleware có thể cài đặt ở tất cả các mức và không chỉ ở là một phần của phần mềm hoặc chỉ là một dịch vụ nằm tại desktop (màn hình) của người sử dụng. Về kỹ thuật, nó có thể được xem như là một lớp phần mềm hoặc “glue” nằm giữa tầng mạng và tầng ứng dụng. Middleware có thể được dùng chung bởi nhiều ứng dụng, phục vụ nhiều mục đích trong các môi trường khác nhau. Nhân của Middleware được định nghĩa giống như tập các dịch vụ quan trọng chủ chốt, có thể đưa ra như: thẩm định, cấp phép, dịch vụ thư mục và nhận dạng. 2.1.1.3. Khái niệm theo Searchbites.com Middleware có thể được xem xét giống như là “glue” là một lớp phần mềm tồn tại giữa tầng mạng và tầng ứng dụng. Các dịch vụ của nó bao gồm bảo mật, thư mục, thẩm định, xác nhận, cấp phép… Ngày này thì các ứng dụng sử dụng trên mạng một cách đơn giản là cung cấp các dịch vụ cho từng tổ chức, đó chính là lí do dẫn đến các vấn đề về tiêu chuẩn tương tranh và không tương thích. Tuy nhiên khi đòi hỏi kết hợp và chuẩn hóa giữa các phần được đẩy mạnh, middleware được thiết kế sao cho dễ dàng nâng cấp các ứng dụng mạng. 2.1.1.4. Khái niệm theo Wikipedia Entry Trong hệ tính toán sử dụng máy tính, tồn tại nhằm gắn kết giữa các thành phần ứng dụng khác nhau. Nó thường được sử dụng để hỗ trợ các ứng dụng phân tán phức tạp. Tóm lại chúng ta có thể hiểu middleware chính là lớp phần mềm trung gian nằm giữa tầng mạng và tầng ứng dụng nhằm cung cấp các dịch vụ, giúp các thành phần có thể tương tác với nhau không phụ thuộc vào thành phần xây dựng theo nền gì. Hình 1.5 biểu diễn về vị trí và vai trò của middleware trong các ứng dụng phân tán giúp kết nối các ứng dụng khác nhau trong môi trường phân tán không đồng nhất. Chúng ta có thể thấy rõ vị trí của nó tầng ứng dụng và tầng mạng sử dụng các hệ điều hành khác nhau, nhờ middleware chúng có thể giao tiếp, tương tác với nhau. 2.2. Kiến trúc, dịch vụ và thành phần middleware Có thể nói middleware là một khái niệm khá rộng để có thể đưa ra những kiến trúc chung tổng quát nhất chính vì vậy khi nói đến kiến trúc ở đây, em chỉ xin đưa ra cách tiếp cận thông qua các giao diện cung cấp cho các nhà phát triển và các dịch vụ của chúng. 2.2.1. Giao diện middleware Middleware và các hệ thống tính toán khác có thể định nghĩa theo giao diện của chúng. Giao diện middleware được phân chia dựa vào các thành phần phụ thuộc ứng dụng từ các phần độc lập. Ví dụ, một chương trình ứng dụng mà sử dụng một dịch vụ middleware phụ thuộc vào đặc tả của giao diện lập trình ứng dụng, và nó độc lập với sự thực thi của middleware như thế nào. Ở đây em xin đưa ra các kiểu giao diện chính sau. 2.2.1.1. Giao diện lập trình ứng dụng (Application Programming Interface) Giao diện lập trình ứng dụng (API) miêu tả chương trình ứng dụng tương tác như thế nào các dịch vụ của middleware. Tất cả các dịch vụ middleware đều có các API, tuy vậy trong một số trường hợp API là native (đặc trưng thuộc về nền tảng của ứng dụng). Mỗi một đặc tả API miêu tả một cú pháp và ngữ nghĩ trừu tượng của dịch vụ, bao gồm các tham số định nghĩa và vai trò sử dụng. Ngôn ngữ lập trình cung cấp các cú pháp cụ thể cho API. Trong các yếu tố đặc biệt, các đặc tả API, không mang đầy đủ thông tin cho người phát triển ứng dụng để triệu gọi một dịch vụ. Người phát triển ứng dụng đòi hỏi hai kiểu thông tin khác nhau, nó bao gồm các đặc tả sau: Đặc tả ngôn ngữ lập trình: miêu tả cú pháp và ngữ nghĩa của các thao tác chung. Những đặc tả này làm tăng các chỉ dẫn của kiểu ứng dụng nhằm giúp người lập trình viết mã và dễ dàng phân phối. Đặc tả môi trường hệ thống: bao gồm mọi thứ mà người lập trình cần để hiểu cách sử dụng hệ thống một cách đúng đắn nhất khi xây dựng chương trình ứng dụng. Có lẽ thông tin quan trọng nhất nằm trong đặc tả môi trường hệ thống là một danh sách các dịch vụ cung cấp cho các người lập trình ứng dụng. 2.2.1.2. Giao diện lập trình hệ thống (System programming interface) Giao diện lập trình hệ thống (SPI) miêu tả làm thế nào một lập trình viên hệ thống có thể mở rộng hoặc thay đổi thể hiện của các dịch vụ middleware. Không phải tất cả các dịch vụ middleware đều đưa ra SPI. Một SPI thì giống như một API, nhưng nó là một giao diện mức thấp hơn và bởi vậy các nhà lập trình ứng dụng không thường xuyên sử dụng giao diện này. Các nhà lập trình ứng dụng sử dụng các dịch vụ middleware để thực hiện các logic của ứng dụng, nhưng không nhận các thay đổi liên quan của thể hiện của dịch vụ. Chúng ta có thể đưa ra một số các dịch vụ middleware đưa ra SPI. Ví dụ như các dịch vụ thông điệp và xử lý phiên, SPI cho phép lập trình viên hệ thống có thể thêm các hỗ trợ cho phần mạng được thêm vào. 2.2.1.3. Giao diện truyền thông (Communication Interface) Giao diện truyền thông (CI) hoặc giao thức truyền thông mức ứng dụng miêu tả cách các thành phần middleware, chạy trên các hệ thống khác nhau trong một mạng, chuyển đổi dữ liệu và điều khiển thông tin, giữa chúng cũng như với các thành phần khác. Hầu hết các dịch vụ middleware đều có CI. Tuy nhiên, trong một vài trường hợp, CI là những dịch vụ riêng. Người phát triển ứng dụng hiếm khi cần các thông tin liên quan về CI bởi vì các dịch vụ middleware là của các mức cao và phân tán trong suốt. Tuy nhiên, CI thường liên quan đến hệ thống tích hợp và lập trình hệ thống bởi vì họ mới cần hiểu các giao thức của dịch vụ middleware dùng để cấp phép cho các dịch vụ và tương tác với các middleware khác, các hệ thống phân tán không middleware và các thành phần khác. CI miêu tả giao thức ứng dụng của dịch vụ có thể sử dụng cho mỗi kiểu giao thức mạng (ví dụ TCP/IP, OSI, DECnetPhase IV hoặc Phase V, PC LANs). RPC hoàn toàn định nghĩa giao thức truyền thông cho các dịch vụ dựa trên các giao diện mạng của dịch vụ. Việc sử dụng RPC cho phép các dịch vụ thực hiện các hoạt động phân tán. CI cũng bao gồm các gateway cho các middleware khác và các dịch vụ non-middleware mà có khả năng dùng được trong hệ thống. 2.2.1.4. Giao diện người dùng (User Interface) Giao diện người dùng (UI) miêu tả cách người dùng tương tác với hệ thống thông tin. Tất cả các dịch vụ đều có UI, hầu hết các dịch vụ UI đều là ở bên trái của chương trình ứng dụng. Một giao diện người dùng có thể bao gồm đầu ra, đầu vào hoặc cả hai. UI cần phải nắm giữ sự thay đổi của kiểu thiết bị và phạm vi rộng lớn của vai trò người dùng, ngôn ngữ và văn hóa. Dịch vụ middleware trình diễn quản lý UI. Dịch vụ này đơn giản là định nghĩa một cơ chế tương tác căn bản, nó thường bao gồm một kiểu. Cũng như, có những hiểu biết chung giống như tìm kiếm và sử dụng UI. Các nhà phát triển ứng dụng sử dụng cơ chế dịch vụ trình diễn và thêm vào thỏa thuận của UI, đôi khi có sự giúp đỡ của các hướng dẫn kiểu. Các thiết bị UI chung bao gồm các máy tính cá nhân (chạy hệ điều hành Windows), các trạm làm việc sử dụng Motif và hệ thống X Window, các thiết bị đầu cuối hiển thị video và máy in. Nó cũng bao gồm cả các thiết bị nhận biết tiếng nói, các máy scan ảnh và bảng đồ họa. 2.2.1.5. Giao diện dữ liệu (Data Interface) Giao diện dữ liệu (DI) miêu tả cú pháp và lược đồ của các định dạng dữ liệu hỗ trợ. Một vài dịch vụ đưa ra DI, nhưng hầu hết các dịch vụ định nghĩa truy cập dữ liệu chỉ thông qua API, nó coi DI là riêng. Ở đây cũng có thể nêu thêm một cách định nghĩa giao diện mới được thêm vào đó là giao diện quản lý (Manager Interface: MI). MI chính là người quản lý tương ứng cho mỗi loại giao diện nói trên. Ứng dụng Dịch vụ cục bộ hoặc Stub Hệ thống khách Giao diện lập trình ứng dụng Giao diện truyền thông Tập dịch vụ Hệ thống chủ Giao diện lập trình hệ thống Giao diện dữ liệu Service Internal Data Giao diện người dùng Hình 2.1: Giao diện middleware Hình 2.1 biểu diễn về sự tương tác của năm kiểu giao diện chính, nhìn trên sơ đồ chúng thấy rõ ràng sự giao tiếp giữa các giao diện cũng như ._.chức năng và công dụng của từng giao diện trong các chương trình ứng dụng. Thông qua giao diện CI các dịch vụ sẽ được cung cấp cho người dùng qua giao diện người dùng (UI) tương tác với ứng dụng thông qua giao diện lập trình (API). 2.2.2. Các tính chất của một middleware Toàn bộ các middleware đều hỗ trợ các tính chất này, những tính chất này giúp middleware ngày một trở nên quan trọng và không thể thiếu đối với những nhà phát triển ứng dụng trong môi trường phân tán. 2.2.2.1. Tính tiện dụng (Usability) Tính tiện dụng là sự mở rộng cho các hệ thống hoặc thành phần giúp người dùng thực hiện công việc ngày càng hiệu quả hơn. Tính tiện dụng có một vài ngữ cảnh khác nhau giống như nó là người dùng của hệ thống máy tính. Tính tiện dụng là khác nhau đối với nhà quản trị hệ thống, nhà phát triển, và người sử dụng. Có một số khía cạnh tạo nên một hệ thống dễ sử dụng nằm trong một số tính chất khác bởi vì tất cả chúng giúp cho việc xây dựng, sử dụng và quản lý hệ thống thông tin một cách dễ dàng nhất có thể. 2.2.2.2. Tính phân tán (Distributability) Tính phân tán cho phép các client và các thành phần của một dịch vụ, công cụ hoặc ứng dụng có thể thực hiện trên các thành phần phần cứng khác nhau trong một mạng. Tính phân tán được thể hiện từ không (tất cả các thành phần phần mềm đều chạy trên một máy tính duy nhất) và phân tán hoàn toàn (mọi thành phần có thể chạy trên mọi máy cùng với việc mã hóa tự động và di chuyển dữ liệu). Mục đích của sự phân tán của middleware hỗ trợ các khả năng sau: Làm trong suốt sự phân tán của dịch vụ nhằm làm cho việc sử dụng dễ dàng nhất. Trình khách của một dịch vụ không cần thiết phải hiểu dịch vụ là phân tán hay không. Nó có thể thiết kế, xây dựng, gỡ rối, thực hiện và quản lý ứng dụng và các thành phần theo cách không phụ thuộc vào sự định vị của các thành phần trong hệ thống. Không chỉ làm cho sự phân tán là trong suốt với chương trình ứng dụng, môi trường phát triển ứng dụng cũng tự mình trở nên trong suốt. Môi trường phát triển ứng dụng có thể trong suốt sự phân tán hơn là có thể khai thác môi trường phân tán của cấu hình phần cứng. Mô hình đa phân tán, với sự mở rộng của mô hình client/server. Phân tán dữ liệu, xử lý và hàm biểu diễn. 2.2.2.3. Tính tích hợp (Integration) Tính tích hợp là khả năng của ứng dụng nhằm làm việc cùng nhau theo một cách nhất quán để thực hiện các công việc của người sử dụng. Khả năng thao tác giữa các phần (interoperability) và khả năng đồng nhất (uniformity) là hai mặt chìa khóa của tính tích hợp. Interoperability là sự mở rộng của tập các thành phần triệu gọi và chuyển đổi thông tin một cách hiệu quả, giống như nhận dữ liệu vào và ra cũng như là chuyển đổi dữ liệu nếu cần thiết. Uniformity là sự mở rộng của tập các thành phần không đổi phụ thuộc vào tập các thuộc tính của ứng dụng. Interoperability là một điều kiện cần thiết (nhưng không hiệu quả) cho tính tích hợp. Ví dụ có hai hệ thống có thể tương tác thông qua một gateway, chúng cung cấp một tập các giao diện hoàn thiện khác nhau (UI, API, SI, CI) và do đó có sự tích hợp mức thấp. Vì lí do này sự đồng nhất cũng là một thể hiện quan trọng của sự tích hợp. Khả năng đồng nhất mức cao, sự đồng nhất đặc trưng về giao diện, làm giảm tính phức tạp của hệ thống và tạo nên hệ thống dễ sử dụng, thay đổi,…Tính đồng nhất của giao diện cũng tạo nên sự thích ứng đa dạng trong các hệ thống phân tán. 2.2.2.4. Tính mở rộng (Extensibility) Khả năng mở rộng là sự dễ dàng thích ứng trong một hệ thống khi có những yêu cầu mới. Tính mở rộng bao gồm khả năng thích hợp và thay đổi một hàm hoặc một dữ liệu (kiểu dữ liệu, định dạng file, lược đồ dữ liệu, hoặc mô hình thông tin) không có những tác động sau: Đòi hỏi thay đổi các hàm, dữ liệu và giao diện đã tồn tại. Những tác động không mong muốn (giống như là sự suy giảm về hiệu năng, tính tin cậy, tính khả chuyển). Có 3 hình thức mở rộng sau: Customization: cho phép khách hàng hoặc người sử dụng cuối có thể thay đổi một số tính chất của hệ thống (về giao diện người dùng). Configuration: cấu hình cho phép cài đặt hoặc tích hợp hệ thống nhằm thay đổi hệ thống cũng như các thành phần, ví dụ như là thay đổi các tham số hệ thống khi gặp phải những yêu cầu của thị trường, hoặc chuẩn hóa thành phần để đạt được cùng một giao diện nhằm giảm giá thành cũng như tạo nên những giải pháp dễ dàng cho mọi vấn đề. Evolution: cho phép các nhà thiết kế và phát triển thành phần thay đổi các tính chất bên trong của thành phần, ví dụ như thay đổi các sắp xếp dữ liệu. 2.2.2.5. Sự quốc tế hóa (Internationalization) Sự quốc tế hóa là sự đánh giá cho các hệ thống thông tin phù hợp với người dùng và dữ liệu từ nhiều nền văn hóa khác nhau (ví dụ như người Trung Quốc ở Trung Quốc, người Trung Quốc ở Singapore, người Trung Quốc ở Hồng Kông và người Trung Quốc ở Đài Loan có các nền văn hóa khác nhau cần thiết phải có những giao tiếp và xử lý khác nhau). Có hai khuôn khổ của sự quốc tế hóa: Đòi hỏi của người dùng. Số lượng nền văn hóa hỗ trợ. 2.2.2.6. Tính dễ quản lý (Manageability) Tính dễ quản lý là sự mở rộng cho người quản lý hệ thống có thể cấu hình, điều khiển, bắt lỗi và điều khiển tài nguyên của môi trường tính toán. Hệ thống quản lý phân tán là một vòng lặp của tiến trình phản hồi thông tin. Người quản trị hệ thống điều khiển trạng thái của tài nguyên phân tán và cung cấp các đầu vào điều khiển cho tài nguyên, đó là nguyên nhân các hệ thống phân tán có thể hoạt động thích hợp với các mục đích của xí nghiệp. Khả năng quản lý là một yếu tố quan trọng trong các hệ thống hoạt động không đồng nhất, các công ty hoạt động trên diện rộng. Mục tiêu của tính quản lý trong middleware bao gồm sự hỗ trợ khả năng đảm bảo dịch vụ, ứng dụng và là nền tảng cho sự quản lý từ xa. Quản lý tất cả tài nguyên trong môi trường hoạt động bao gồm: Thành phần hệ thống (timesharing và xử lý gói, trạm làm việc, PC, thiết bị ngoại vi và lưu trữ media). Thành phần mạng (cả vật lý và logic). Phần mềm (hoạt động hệ thống, phần mềm máy chủ, dịch vụ tầng, công cụ và ứng dụng). Cơ sở dữ liệu. Quản lý toàn bộ vòng đời của các tài nguyên, bao gồm thiết kế, phát triển, cài đặt, bảo trì… Hỗ trợ tất cả các hàm quản lý ứng dụng vào tài nguyên ví dụ như quản lý lỗi, quản lý hiệu năng, tính toán và bảo mật. 2.2.2.7. Tính hiệu năng (Performance) Hiệu năng là một phép đo các tài nguyên đòi hỏi để thực hiện một thao tác. Hầu hết các phép đo hiệu năng chung sử dụng phương pháp đo thời gian thực hiện thao tác. Hiệu năng có thể bao gồm các phép đo của việc sử dụng các tài nguyên như bộ xử lý, giao tiếp, vào ra và bộ nhớ. Hiệu suất là tỉ số giữa tài nguyên sử dụng và số lượng các thao tác thực hiện. Sự dùng được là khả năng sử dụng của tài nguyên. Thông lượng là một phép đo của số lượng các thao tác trên một đơn vị thời gian. Một cách điển hình, một công ty sẽ thay đổi cho phù hợp với hiệu năng của các thành phần trong hệ thống của mình. Kết quả sẽ đưa ra được một tỉ lệ hợp lý giữa giá thành và hiệu năng. Hiệu năng tốt phụ thuộc vào cả kiến trúc và cài đặt của hệ thống. 2.2.2.8. Tính di động (Portability)   Portability là cách đơn giản nhất giúp nhà phát triển có thể di chuyển phần mềm giữa các nền khác nhau. Ở một mức cao hơn của tính di động chính là sự cốt yếu tạo nên thành công trong môi trường tính toán không đồng nhất. Nếu không có nó, phần mềm có thể không thể hoạt động một cách chính xác trên một số nền. Để đạt được tính di động trong các ứng dụng phù hợp với các nền, middleware cần phải thực hiện những công việc sau: Hỗ trợ các ứng dụng di động dựa trên hiện trạng của phần mềm, nơi mà phần mềm chỉ phụ thuộc vào ngôn ngữ, dịch vụ API các giao thức định nghĩa bởi profile. Phần mềm là di động thì đều hỗ trợ profile này. Cung cấp giao diện di động cho các dịch vụ middleware theo các nền khác nhau. Hỗ trợ di động đa chiều, bao gồm APIs, chương trình, dữ liệu, người dụng, tài liệu và công cụ phát triển. Đảm bảo cho các dịch vụ middleware, giao thức, công cụ phát triển và các thành phần khác nếu cần thiết. 2.2.2.9. Tính tin cậy (Reliability) Tính tin cậy là liên quan đến hệ thống, hoặc một phần hệ thống. Nó được đo bằng khoảng thời gian trung bình lỗi khi mà lỗi được định nghĩa là khả năng không thể cung cấp của hệ thống.  2.2.2.10. Tính co dãn (Scalability) Scalability là sự đánh giá của các nhà phát triển có thể ứng dụng một giải pháp cho các vấn đề có nhiều kích cỡ khác nhau. Lý tưởng, một giải pháp có thể làm việc tốt trong phạm vi rộng và có độ phức tạp cao. Tuy nhiên trong thực tế, thường sử dụng giải pháp đơn giản nhất cho các vấn đề có độ phức tạp thấp. Sự khó khăn gặp phải khi vấn đề có độ phức tạp thấp lại chiếm nhiều thời gian hơn những vấn đề có độ phức tạp cao. Trong hệ thống thông tin xí nghiệp diện rộng, một số các phương pháp đo độ phức tạp quan trọng đó là số lượng các node trong hệ thống, người dùng và các tài nguyên mạng khác. 2.2.2.11. Tính bảo mật (Security) Security là sự bảo vệ thông tin từ những thay đổi không hợp pháp hoặc ngăn chặn và bảo vệ tài nguyên khỏi người dùng không được phép. Mục đích của những dịch vụ bảo mật bao gồm sự thi hành xác thực, điều khiển truy nhập và kiểm định chức năng để đảm bảo cho những trường hợp sau: Dịch vụ có thể nhận dạng tin cậy người dùng hoặc hệ thống nhân danh ai và thao tác nào đang được thực hiện. Ngữ cảnh an toàn của người dùng hoặc hệ thống là giới hạn chính xác nhằm thực thi phần mềm. Thông tin tạo ra bởi ứng dụng và dịch vụ hoặc nhân danh một người dùng hoặc hệ thống được bảo vệ thích hợp từ người dùng khác hoặc hệ thống. Các phần mềm thực thi bắt buộc phải sử dụng đối tượng và thao tác của chúng cho các người dùng triệu gọi hoặc hệ thống cấp quyền. Ứng dụng có thể quản lý các đối tượng của chúng có khả năng tăng quyền truy cập cho các đối tượng trong một phương thức nhất quán. Ứng dụng có thể ghi lại các sự kiện bảo mật có liên quan (dùng cơ chế log file). 2.2.3. Các nhóm dịch vụ middleware 2.2.3.1. Dịch vụ trình diễn (Presentation services) Presentation services cung cấp các giao diện người dùng khác nhau cho các ứng dụng cần thiết, ví dụ như windows cho các trạm làm việc (workstations), form cho dữ liệu vào, và giao diện cho các terminal, đồ họa, in ấn. a. Tương tác với người dùng Các ứng dụng và công cụ sử dụng trong dịch vụ trình diễn để hiển thị thông tin tương tác với người dùng. Những dịch vụ này hỗ trợ việc tạo giao diện người dùng và phân phát thông tin, nhưng nó không phân phối những chức năng cho những ứng dụng cụ thể, riêng biệt. Không có một dịch vụ trình diễn nào có thể áp dụng cho tất cả các ứng dụng. Tập các dịch vụ sử dụng phụ thuộc vào bản thân ứng dụng và mục đích cụ thể. Một số ứng dụng chỉ cần tối thiểu các dịch vụ và một số khác đưa ra duy nhất một mục đích của thông tin trình diễn theo một cách riêng, sử dụng môi trường trung gian. Hình 2.2 biểu diễn mức đầu tiên của dịch vụ trình diễn và những thành phần căn bản tạo nên sự quyết định khi sử dụng dịch vụ này. Other Term 3270 Term Dịch vụ Character-Cell Dịch vụ DCEwindows DCEwindows APIs Character-Call APIs Ứng dụng dựa trên ký tự Ứng dụng dựa trên bitmap Dịch vụ Print Client Printing API Hệ thống chủ Dịch vụ tương tác Terminal CI Terminal Emulator CI X Protocol Terminal Emulator Desktop App X server Native UI Service PC/Workstation X Terminal X server Blackmode UI CC UI GUI Motif UI Printing CI Print Server Services Print Device VT-Class Terminal Hình 2.2: Sơ đồ chung về dịch vụ trình diễn b. Phân lớp của dịch vụ Từ quan điểm của ứng dụng, chúng ta chia dịch vụ ra thành hai nhóm chính: * Các dịch vụ tương tác (dịch vụ character-cell và dịch vụ DECwindows) Trong nhóm dịch vụ này người sử dụng giao tiếp với ứng dụng thông qua một trong hai kiểu thiết bị sau: Các thiết bị ký tự, có thể nhập và nhận các ký tự thông qua bàn phím. Các thiết bị bitmap, có thể nhận và nhập ký tự hoặc bitmap thông qua bàn phím, chuột và các thiết bị con trỏ khác. Một ứng dụng thường xuyên làm việc với chỉ một trong hai kiểu thiết bị trên. Thông thường các dịch vụ đầu cuối thường sử dụng các dịch vụ trình diễn với cả hai thiết bị trên. Có rất nhiều kiểu tương tác cho mỗi loại thiết bị. Các ứng dụng dựa trên ký tự sử dụng các dịch vụ character-cell thông qua tập các giao diện API character-cell. Các ứng dụng bitmap sử dụng các dịch vụ DECwindows thông qua tập các DECwindows APIs. * Các dịch vụ in ấn. Các dịch vụ in ấn bao gồm các dịch vụ in ấn về phía client và dịch vụ in ấn về phía server. Các dịch vụ này, người dùng và ứng dụng đều có thể truy cập các tài nguyên in ấn phân tán thông qua mạng. Một số kiểu ứng dụng có thể truy cập dịch vụ in ấn, tương tác với gói. Dịch vụ in ấn có thể là đầu ra cho thiết bị DECwindows. c. Các kiểu truy cập người dùng Từ quan điểm của người dụng cuối, có một vài giao diện người dùng (UI) được lựa chọn: Blockmode UI: sử dụng IBM 3270-Terminal tương thích hoặc 3270 terminal emulators trên PC. Người dùng có thể truy cập giao diện IBM hoặc Digital mainframes. CC UI: Character-cell (CC) UI sử dụng Digital VT- compatible terminals hoặc terminal emulators. Kiểu giao diện này cung cấp cho tất cả nền middleware. CC UI có một số kiểu khác nhau, từ giao diện đơn câu hỏi và trả lời đến giao diện hướng thủ tục sử dụng trong windows. GUI: Graphics user interface (GUI) cung cấp cho Microsoft Windows hoặc Macintosh và chỉ giới hạn sử dụng cho các ứng dụng phát triển trên nền này. Kiểu Microsoft Windows dựa trên IBM CUA. Macintosh cũng thuộc kiểu chung này. Motif UI: sử dụng dịch vụ DECwindow và dựa trên hệ thống X Window. Nó có thể sử dụng trên một số nền: DEC OSF/1 AXP, OpenVMS VAX, OpenVMS VAX và ULTRIX RISC. Open Software Foundation (OSF) định nghĩa kiểu Motif UI này, nó dựa trên IBM CUA. Giao diện này có thể sử dụng màn hình kết nối trực tiếp tới trạm làm việc, X terminal hoặc X server trên PCs (Macintosh, Microsoft Windows, MS-DOS, OS/2, and Windows NT systems). Tác dụng của Motif UI là dễ sử dụng và hoạt động phân tán. Điều trở ngại chính là khó lập chương trình. 2.2.3.2. Dịch vụ truyền thông (Communications services) Dịch vụ truyền thông cung cấp các phương thức chung để ứng dụng truyền thông điệp cho ứng dụng khác trong một tổ chức hay giữa các tổ chức khác nhau. Các dịch vụ truyền thông middleware bao gồm: Dịch vụ gọi thủ tục từ xa (Remote procedure call (RPC)). Dịch vụ hàng đợi thông điệp (Message queuing service). Dịch vụ thông điệp (Messaging service). a. Giao tiếp với một ứng dụng khác Dịch vụ giao tiếp middleware cho phép ứng dụng giao tiếp với các dịch vụ và máy chủ khác theo một số cách khác nhau và với các mục đích khác nhau. Có hai thành phần giao tiếp chính một là hệ thống máy tính liên kết một mạng hoặc tồn tại trên cùng một hệ thống. Các thành phần phần mềm giao tiếp với một thành phần khác nhằm một số mục đích sau: Đòi hỏi thành phần khác thực hiện một số hành động: các dịch vụ RPC, dịch vụ message queuing và dịch vụ object brocker thuộc nhóm dịch vụ này. Gửi thông tin cho một thành phần khác (khi người gửi không hy vọng có một hồi đáp trực tiếp giống như kết quả giao tiếp). Dịch vụ messaging và EDI framework là thuộc nhóm này. Người phát triển cũng có thể dùng dịch vụ message queuing cho mục đích này. Hình 2.3 biểu diễn kiến trúc chung của dịch vụ giao tiếp và các thực thi của từng thành phần. Server System Client System Application RPC Run-Time Service Library RPC API DCEmessageQ Run-Time Library DECmessageQ APIs XAPI Client XAPI DEC/EDI Client DEC/EDI API ORB Client Dynamic Invocation API FileBridge Run-Time Process FileBridge API IDL Stub Static Invocation API Mail Client and User Agent Service Mail Client APIss Client Stub LUC6.2 Message API FileBridge Data RPC Run-Time Service Library DCEmessageQ Queue Manager DEC/EDI Client ORB Server X.400 MTA Application Methode Server Application Application Server or Peer Application Server Procedure Mail Gateway RPC CI Mail X.400 Mail Protocol X.400 CI Other EDI Protocols IBM MVS System Other Mail Systems Other EDI-Capable Sysstem APPC/LU6.2 Hình 2.3: Kiến trúc dịch vụ giao tiếp. a. Dịch vụ gọi thủ tục từ xa (Remote Procedure Call) RPC cho phép một thủ tục gọi một thủ tục khác mà thủ tục này không nằm trên cùng một không gian địa chỉ. Thủ tục gọi (hoặc ứng dụng) không cần thiết phải biết về thủ tục gọi là từ xa. Người phát triển phần mềm sử dụng dịch vụ RPC để phân tán công việc của ứng dụng trên nhiều hệ thống máy tính hoặc sử dụng và chia sẻ một chức năng tồn tại trên một hệ thống máy tính khác. Dịch vụ RPC được định nghĩa bởi Open Software Foundation (OSF), Distributed Computing Environment (DCE), và RPC. Có các thành phần chính của dịch vụ RPC được nêu ra sau đây: Client stubs: cung cấp giao diện phía client cho thủ tục từ xa. Giao diện này định nghĩa các chương trình dịch được sinh client stubs từ định nghĩa của giao diện gọi thủ tục. Client stub sử dụng thư viện RPC thời gian chạy để điều khiển tất cả các giao diện với thủ tục từ xa. Một vài thể hiện, ứng dụng gọi dịch vụ RPC thời gian chạy (run-time) một cách trực tiếp. Thư viện dịch vụ thời gian chạy RPC: cung cấp tất cả các hàm cần thiết để hỗ trợ cho stub và cung cấp sự tương tác giữa các thành phần mạng với thủ tục từ xa. Thủ tục ứng dụng chủ: là thủ tục mà ứng dụng phía client muốn gọi. Đặc tả OSF DCE RPC định nghĩa hai giao diện RPC sau: RPC API: cung cấp các các truy cập trực tiếp tới các hàm RPC, bao gồm các dịch vụ naming và định danh duy nhất toàn cầu. RPC CI: cung cấp sự kết nối và truyền tải độc lập cũng như giao thức datagram. DCE RPC cung cấp các dịch vụ thực thi RPC. DCE RPC là một phần của các sản phẩm DCE của Digital, nó bao gồm các phiên bản sau: DCE for DEC OSF/1 (Versions 1.1 and 1.2). DCE for OpenVMS (Versions 1.1 and 1.2). DCE for Windows NT (Version 1.0). PATHWORKS Family (Version 1.0). b. Dịch vụ Message Queuing (hàng đợi thông điệp) Dịch vụ hàng đợi thông điệp cho phép ứng dụng giao tiếp với một ứng dụng khác thông qua các lời gọi trực tiếp qua một hàng đợi. Kịch bản giao tiếp có thể xảy ra như sau: Ứng dụng gửi một thông điệp trong một hàng đợi định danh (vị trí của hàng đợi là trong suốt với ứng dụng). Ứng dụng nhận yêu cầu và lấy thông điệp từ hàng đợi định danh (có thể dựa trên một số chỉ tiêu lựa chọn). Dịch vụ sử dụng hàng đợi trực tiếp và nó gửi tới một số ứng dụng theo vị trí thông điệp trong một hàng đợi, hoặc có thể nhận thông điệp từ ứng dụng từ một hàng đợi hay cả hai thực hiện trên một hàng đợi. Hàng đợi có thể cung cấp các khả năng tìm kiếm để nâng cao độ tin cậy của giao tiếp giữa bên gửi và bên nhận. Các thành phần chính của dịch vụ này được nêu ra sau đây: Thư viện DECmessageQ run-time: gửi và nhận thông điệp từ một bộ quản lý hàng đợi DECmessageQ. DECmessageQ queue manager: quản lý một hoặc nhiều hàng đợi. Nó đặt và lấy thông điệp từ hàng đợi. Máy chủ ứng dụng hoặc peer: máy chủ ứng dụng là một ứng dụng mà lấy thông điệp từ hàng đợi và hoặc cung cấp các thông tin về vị trí thông điệp trong hàng đợi. Một DCEmessageQ có thể giao tiếp với một peer DCEmessageQ queue manager trên một hệ thống từ xa. Hệ thống IBM MVS: dịch vụ hàng đợi thông điệp có thể giao tiếp với một hệ thống IBM MVS. Một ứng dụng Customer Information Control System (CICS) trên một hệ thống IBM MVS có thể nhập thông điệp vào hàng đợi và lấy thông điệp từ một hàng đợi trên hệ thống server. Ứng dụng DECmessageQ Run-Time Libraray Hệ thống khách A DECmessageQ API LU6.2 Message Formats Client Journal Ứng dụng DECmessageQ Run-Time Libraray Hệ thống khách B/LU6.2 Port Server DECmessageQ API LU6.2 Message Formats LU6.2 Port Server SNA Gateway Hệ thống chủ B DECmessageQ Queue Manager Server Journal Hệ thống chủ A DECmessageQ Queue Manager Server Journal IBM MVS System APPC/LU6.2 Library APPC Verbs CICS Application APPC/LU6.2 Hình 2.4: Kiến trúc chung của dịch vụ hàng đợi thông điệp Những giao diện lập trình (API) sau có thể cho phép người phát triển phần mềm truy cập tới các dịch vụ hàng đợi thông điệp. LUC6.2 message API: nó cho phép ứng dụng có thể gửi và nhận thông điệp với hệ thống IBM MVS nhờ giao thức APPC/LU6.2. DECmessageQ API: cung cấp truy cập tới tất cả các hàm hàng đợi thông điệp, nó bao gồm việc nhận và gửi thông điệp dựa trên một số tiêu chí lựa chọn. c. Dịch vụ thông điệp Dịch vụ thông điệp cung cấp hai khả năng chính sau: Dịch vụ mail user agent: là những dịch vụ chung nhằm cho phép ứng dụng nhận và phân phát mail, cũng như việc địa chỉ và tệp tin thông điệp. Dịch vụ truyền thông điệp: cung cấp các dịch vụ truyền thông điệp trên thực tế giữa các user agent. d. Object Broker Service Dịch vụ này cho phép một bộ tích hợp hệ thống nhằm tích hợp với các ứng dụng mới hoặc có sẵn theo các hướng đối tượng. Ứng dụng đăng ký một đối tượng và thao tác với các đối tượng phần mềm chuyển giao được chọn, khởi tạo và triệu gọi một thể hiện của ứng dụng nhằm xử lý các thao tác yêu cầu. Mặc dù dịch vụ này là một phần của dịch vụ điều khiển, nó bao gồm ở đây cho mục đích so sánh. Giống như RPC, dịch vụ đối tượng chuyển giao thường được sử dụng cho các chương trình triệu gọi phân tán. Các thành phần chính của dịch vụ, Object Broker bao gồm: ORB client: Object Request Broker (ORB) client quản lý các yêu cầu viện dẫn và các phương thức liên quan cũng như các lựa chọn máy chủ. ORB client truy cập tới một Advertisement Registry và các thông tin ngữ cảnh, các thông tin này được dùng để tạo nên các phương thức thích hợp và lựa chọn máy chủ. IDL stub: khi một nhà phát triển ứng dụng sử dụng static invocation API, một interface definition language (IDL) stub, nó được trình biên dịch IDL sinh ra, cung cấp khả năng truy cập tới ORB client. Ứng dụng máy chủ: người phát triển ứng dụng phát triển ứng dụng máy chủ. Ứng dụng này gồm hai thành phần dịch vụ đối tượng chuyển giao: ORB server và bộ object adapter. ORB server nhận yêu cầu, chuyển bị để thực hiện và trả về kết quả. Bộ object adapter thực hiện những chức năng đối tượng chung cho các phương thức của ứng dụng chủ, giống như là thông báo khi server chấp nhận yêu cầu. Ứng dụng server cũng bao gồm cả các phương thức ứng dụng, nó do các nhà phát triển cung cấp. Các giao diện API sau cho phép truy cập các dịch vụ điều khiển ứng dụng: Dynamic invocation API: sử dụng nhằm phát yêu cầu cho các thao tác khi các thao tác hoặc tham số được xác định trong khi thực hiện ứng dụng. Static invocation API: sử dụng để thông báo yêu cầu cho các hoạt động. Khi sử dụng static invocation API, những hoạt động và tham số sẽ được gán vào tại thời gian biên dịch. 2.2.3.3. Dịch vụ điều khiển (Control services) Dịch vụ điều khiển cung cấp các cách thức để ứng dụng có thể triệu gọi ứng dụng khác, nhằm định vị việc thực hiện cùng với ứng dụng khác, và điều khiển đa thực hiện trong phạm vi một ứng dụng. Front-End System Other Client Client System Server System Ứng dụng RTR Client Threading Service ORB client Transaction Manager Desktop Service RTR API CMI API RTR API IDL Stub Static Invocation API Dinamic Invocation API DEC API Desktop API Resource Manager Desktop Client RTR Router System RTR Router RTR Server RTR API Ứng dụng chủ ORB Server Application Method Server Application Transaction Manager Resource Manager Task (Application) Task Run Time Task Definition Language Procedure Resource Manager OSF DCE CIs Hình 2.6: Kiến trúc dịch vụ điều khiển a. Thực hiện điều khiển ứng dụng Mỗi một điều khiển ứng dụng cung cấp một kiểu điều khiển khác nhau cho ứng dụng. Chúng ta sử dụng các dịch vụ này cho một số mục đích khác nhau trong khi tạo và thực hiện các ứng dụng phân tán, ví dụ: Với các dịch vụ tính toán liên tục, có thể tạo các ứng dụng cung cấp liên tục và đầy đủ các phiên làm việc cũng như toàn vẹn dữ liệu với hiệu năng cao. Với các dịch vụ đa luồng, có thể tạo một chương trình mà chứa đa thực hiện luồng. Kiểu chương trình này có thể tăng thông lượng cho cả hai thành phần client và server của ứng dụng phân tán. Với các dịch vụ object broker, có thể tạo một ứng dụng tích hợp với các ứng dụng mới hoặc đã tồn tại từ trước và cho phép một ứng dụng có thể viện gọi các hàm trong một ứng dụng khác. Cùng với các dịch vụ quản lý phiên, chúng ta có thể kết hợp các phiên làm việc trên mạng để quản lý tài nguyên phân tán (bởi vậy có thể điều khiển việc thực hiện các thao tác trong ứng dụng giống như một phiên làm việc duy nhất). Cùng với khung điều khiển quản lý xử lý phiên, người phát triển có thể xây dựng các ứng dụng xử lý phiên cho phép tích hợp các hệ thống desktop và các thiết bị khác (giống như các máy rút tiền tự động) cùng với các ứng dụng xử lý phiên và quản lý tài nguyên. b. Dịch vụ tính toán liên tục Dịch vụ này cho phép ứng dụng ứng dụng phân tán có được đầy đủ và toàn vẹn dữ liệu trong một phiên làm việc, và có khả năng mở rộng trong các ứng dụng hiệu năng cao. Ứng dụng phân tán có thể sử dụng dịch vụ này để cung cấp các dịch vụ liên tục, không quan tâm đến một hoặc nhiều điểm lỗi trong hệ thống, mạng hoặc phần mềm. Có các thành phần chính sau trong dịch vụ tính toán liên tục: Reliable transaction router (RTR) client: cung cấp các truy cập từ xa cho hệ thống RTR router. RTR client sử dụng một giao thức riêng để chuyển thông điệp ứng dụng trên DECnet hoặc TCP/IP cho các RTR router. RTR router đơn giản là chạy trên một hoặc nhiều node vật lý riêng biệt. RTR router: định hướng cho thông điệp đến RTR server theo hệ thống RTR server thích hợp. RTR router cũng quản lý các thảo thuận thích hợp của các phiên làm việc phân tán trên các RTR server. RTR server: nhận các thông điệp từ các RTR router và chuyển chúng cho các ứng dụng server. RTR server tham gia vào quá trình thỏa thuận phiên. Các lớp RTR router, client, server chạy độc lập và có thể cấu hình theo một hoặc nhiều node trên mạng. Dịch vụ tính toán phân tán có thể tái tạo hoặc phân chia các tiến trình chủ trên một hoặc nhiều node phân tán trên mạng. 2.2.3.4. Dịch vụ thông tin (Information services) Dịch vụ thông tin mang đến cho người dùng và ứng dụng sự truy cập và chia sẻ thông tin, và tài nguyên hệ thống diện rộng trong một mạng. File Server System FTAM Responder Client System Application Directory Client DNS and XDS APIs File Sharing Client File APIs FTAM Protocol Machine FTAM API CDA Service CDA APIs SQL Client Data Access APIs CDD Reposity ATIS API CDA APIs Document Data Reposity Data FTAM Protocol Machine File Server File Data Directory Server System Directory Server Directory Data Other Repository System CDD Repository Repository Data Other Repository System CDD Repository Repository Data Directory Protocol Directory Protocol FTAM Protocol SQL Protocol SQL Communication Server System DEC DB Integration System DEC DB Integrator Gateway System Hình 2.7: Kiến trúc dịch vụ thông tin Nó bao gồm các dịch vụ sau: Dịch vụ tài liệu tích hợp. Dịch vụ truy cập dữ liệu. Dịch vụ thư mục. Dịch vụ thư mục. Các dịch vụ truyền, truy cập và quản lý file. Dịch vụ chứa dữ liệu. a. Truy cập dữ liệu Một trong những mục đích chính của một số ứng dụng là truy cập và xử lý dữ liệu, nó là những tiềm năng phân tán trên một số máy chủ của mạng và dự trữ ở một số hình thức khác nhau. Ứng dụng sử dụng dữ liệu theo một số cách khác nhau. Dịch vụ thông tin middleware cung cấp một tập các hàm cho phép thực hiện với các nền và mạng, phần mềm và phần cứng khác nhau. Với các dịch vụ này ứng dụng có thể tìm kiếm các thông tin cần thiết và truy cập theo một số cách thích hợp với các hình thức dữ liệu và mục đích khác nhau. Dịch vụ của middleware bao gồm một số các dịch vụ thông tin nhằm quản lý, truy cập và thao tác với thông tin. Sự khác biệt chính giữa các dịch vụ thông tin là có các mục tiêu khác nhau với những kiểu thông tin khác nhau và các thông tin hiện tại và mô hình truy cập thích hợp cho mỗi kiểu thông tin. b. Dịch vụ tài liệu ghép (Compound Document) Dịch vụ này cho phép ứng dụng và người dùng chia sẻ tài liệu ghép. Một compound document là một tập đồng nhất của dữ liệu mà người dùng có thể soạn thảo, định dạng hoặc xử lý giống như một tài liệu. Một compound document có thể chứa các văn bản đa font, đồ họa, hình ảnh và phần tử dữ liệu giống như bảng tính. Để dùng chung compound document, các dịch vụ cung cấp các cách miêu tả và xử lý, quản lý và chuyển đổi tài liệu này thành các định dạng khác. Chúng có các chuẩn sau: Digital Document Interchange Format (DDIF) và Digital Table Interchange Format (DTIF) được chỉ định dùng cho việc đặc tả tài liệu ghép. Digital Object Transport Specigication (DOTS) cho gói các dữ liệu liên quan khi truyền. ISO 8859 tập các ký tự chuẩn. Standard Generic Markup Language (SGML), ISO 8879, cho việc chuyển đổi tài liệu. Open Document Architecture (ODA), ISO 8613, cũng dùng cho chuyển đổi tài liệu. PostScript và các định dạng khác cho đầu ra cuối. c. Dịch vụ truy cập dữ liệu Cho phép ứng dụng truy cập và xử lý dữ liệu được lưu trữ trong một bảng dữ liệu quan hệ, và được phân phối trên một số hệ thống máy tính khác nhau. Sử dụng dịch vụ này, chúng ta có thể dùng chung thông tin của các nền desktop khác nhau trên môi trường phân tán. Nó cũng mang đến các truy cập trực tiếp đến dữ liệu và cho phép nhiều ứng dụng có thể truy cập đến cùng một dữ liệu. Dịch vụ này dựa trên cơ chế Structured Query Language (SQL) để đặc tả yêu cầu dữ liệu. Có hai chuẩn để truy cập dịch vụ dữ liệu: SQL API standards. Chuẩn giao thức truy cập dữ liệu từ xa (Remote data access protocol standard). 2.2.3.5. Dịch vụ thư mục (Directory) Cung cấp cho ứng dụng các thông tin định vị một cách trong suốt trong môi trường phân tán. Những dịch vụ này cung cấp một cơ chế nhờ đó ứng dụng có thể thực hiện các công việc sau: Lưu giữ vị trí vật lý của thông tin mà ứng dụng cần. Nó được sử dụng chung trong các ứng dụng để tìm kiếm thông tin địa chỉ kết hợp với một tên lưu giữ vị trí hiện thời của thông tin. Thông tin lưu trữ và trích rút trong một thư mục mà thư mục phân bổ cho ứng dụng được sử dụng để định vị trong các thành phần của chúng. Ứng dụng có thể lưu trữ các thông tin thay ._.như phím được thả. Giá trị của phím được định nghĩa trong hệ thống X Window. Hầu hết các phím thông thường thì tương ứng với giá trị mã ASCII ví dụ: Khi sử dụng sự kiện phím chúng ta gặp một số vấn đề đó là sự khác nhau giữa hệ thống phím trên Server và trên Client ví dụ kiểu bàn phím Mỹ (US) và kiểu Anh (UK) ... Khi Server sử dụng kiểu phím US nhận được một kí tự ‘#’ từ Client sử dụng kiểu phím UK, vì kiểu phím UK không sử dụng trạng thái lật phím Shift cho nên Server sẽ không thể hiển thị kí tự ‘#’. Trong trường hợp này thì bản thân Server sẽ phải làm một động tác giả (fake) để lật trạng thái phím Shift để nó có thể nhận kí tự ‘#’ thay vì kí tự ‘3’. Không giống như Shift , trạng thái của phím chuyển đổi như Ctrl hay Alt có thể được chuyển đổi bằng hệ thống phím khác. Ví dụ chúng ta sử dụng tổ hợp phím Ctrl-a thì sẽ gửi mã của phím Ctrl sau đó gửi mã của phím ‘a’ trong mã ASCII không tồn tại mã cho tổ hợp phím này. PointerEvents Chỉ ra sự di chuyển và trạng thái khi chuột ấn hay nhả. Cấu trúc thông điệp bao gồm: tọa độ con trỏ chuột (x-position, y-postion), trạng thái phím (button-mask:0-7), giá trị 0 tương ứng phím nhả, 1 tương ứng phím ấn. ClientCutText Thông điệp này có vai trò gửi nội dung một văn bản khi Client gõ từ bàn phím hay từ clipboard từ bộ đệm đến Server. 3.3.3. Thông điệp Server gửi Client FramebufferUpdate Cập nhật bộ đệm khung chứa chuỗi tuần tự các hình chữ nhật dữ liệu pixel để Client có thể hiện thị chúng. Thông điệp này được gửi khi Client yêu cầu thông điệp FramebufferUpdateRequest Dữ liệu pixel của hình chữ nhật có cấu trúc: SetColourMapEntries Khi định dạng pixel sử dụng là ánh xạ màu, thông điệp này cho Client biết giá trị pixel có thể được ánh xạ tới màu RGB. number-of-colours định nghĩa như sau: Bell Báo chuông cho Client khi có kết nối. ServerCutText Cấu trúc 3.3.4 Các mã hóa trong giao thức RFB-Encodings Mã hóa Raw Là kiểu mã hóa dơn giản nhất trên dữ liệu pixel. Kiểu mã hóa này quan tâm tới giá trị pixel width x height phần hình chữ nhật. Các giá trị này theo thứ tự từ trái qua phải trên mỗi dòng. Tất cả Client phải chấp nhận mã hóa raw trừ khi nó yêu cầu Server thay đổi kiểu mã hóa khác. Mã hóa CopyRect Còn gọi là mã hóa khung chữ nhật, kiểu mã hóa này rất đơn giản và hiệu quả, nó có thể được sử dụng khi Client sẵn sàng cùng một dữ liệu pixel bất kể khi nào trong bộ đệm khung. Kiểu mã hóa này quan tâm đến hệ tọa độ X,Y và nó đưa vị trí này vào trong bộ đệm khung sao cho Client có thể sao chép dữ liệu pixel của khung chữ nhật mà nó quan tâm. Kiểu mã hóa này có thể sử dụng trong các tình huống (trạng thái) màn hình thay đổi nhiều. Rõ nhất là trong trường hợp di chuyển các cửa sổ hay việc cuộn màn hình. Kiểu mã hóa này không hiệu quả trong việc tối ưu hóa vẽ dạng văn bản hay các mẫu có sự trùng lặp nhiều. Nhưng một sự thông minh là Server chỉ gửi các mẫu giống nhau một lần. Mã hóa RRE – Rise and Run Length Encoding Là một kiểu mã hóa tương tự như mã RLE, kiểu mã hóa này cho phép mã hóa các khung chữ nhật đồ họa đơn giản ngay lập tức và hiệu quả, và không thích hợp với khung chữ nhật chứa toàn bộ màn hình. Một ý tưởng cơ bản đằng sau kiểu mã hóa này là phân chia các khung chữ nhật dữ liệu pixel thành các vùng chữ nhật nhỏ hợn tương ứng với dữ liệu pixel gần cùng một tập hợp giá trị điều này làm tăng tốc độ tính toán một cách dễ dàng hơn. Trong mỗi một khung chữ nhật con chứa giá trị . v là gia trị pixel nền chữ nhật đó, (x,y) là tọa độ đầu của khung chữ nhật con và (w,h) là kích thước của khung chữ nhật con đó. Client có thể chuyển đổi các giá trị tượng ứng của các khung chữ nhật con thành khung chữ nhật ban đầu.. Cấu trúc mã hóa như sau: number-of-subrectangles có cấu trúc: Mã hóa CoRRE-Compact RRE Là sự biến đổi của mã RRE, mã này không hỗ trợ khung chữ nhật có kích thước quá 255x255 pixels. Khi Server muốn gửi một khung chữ nhật có kích thước lớn hơn thì nó phải chia thành các hình chữ nhật nhỏ hơn và sẽ được nén theo kiểu RRE. Tốt nhất kích thước của mỗi khung chữ nhật con là 48x48, nếu kích thước này quá nhỏ sẽ cho kết quả tồi. Cấu trúc mã hóa như sau: number-of-subrectangles có cấu trúc: Mã hóa Hextile Kiểu mã hóa này xuất phát từ ý tưởng của mã hóa CoRRE. Khung chữ nhật được chia thành các tile lớn hơn 16x16, cho phép mỗi chiều của khung chữ nhật con là 4 bit như vậy mỗi khung chữ nhật con sẽ chứa 16 bit. Không giống như mã CoRRE, Tile của khung chữ nhật con không ở mức cao nhất. Trong khi phân chia khung chữ nhật ban đầu tới các cỡ theo một con đường nhận biết sớm. Có nghĩa là vị trí và kích thước của mỗi tile không được chỉ ra cụ thể, việc mã hóa nội dung của các tile theo một trật tự đã nhận biết trước. Nếu kích thước của tile không là bội của 16 thì tile sau sẽ nhỏ hơn. Mỗi tile là hai kiểu mã hóa raw dữ liệu pixel hay một sự thay đổi trên mã RRE. Mỗi tile có một giá trị pixel của background. Tuy nhiên giá trị pixel của bạckground không cần phải chỉ ra nếu nó có cùng giá trị với background của tile trước đó. Và nếu như tất cả các background của tile đều giống nhau thì chi cần chỉ ra một lần. Điều này cũng có ý nghĩa tương tự cho foreground của tile. Như vậy dữ liệu mã hóa của mỗi tile nằm trong một trật tự. Mỗi tile với một kiểu mã hóa riêng: Nếu bit Raw được thiết lập thì các bít còn lại không thích hợp với kích thước và giá trị pixel của khung chữ nhật (tile). Ngược lại các bít còn lại sẽ bị che (mask) bởi: BackgroundSpecified - nếu đượcc thiết lập với giá trị mầu nền của tile: Nếu bit Raw đầu tiên của tile chưa được thiết lập thì phải thiết lập bit này. Nếu nó chưa được thiết lập thì background sẽ không thay đổi cho tới tile cuối cùng. ForegroundSpecified - Nếu được thiết lập một giá trị pixel thì nó sẽ xác định mầu foreground cho tất cả các khung chữ nhật con trong mỗi tile. AnySubrects - Nếu được thiết lập, một byte sẽ trả về số khung chữ nhật con sau đây: Nếu không được thiết lập , không trả về khung chữ nhật con nào. SubrectsColoured – Nếu được thiết lập thì mỗi hình chữ nhật con sẽ được gán một mầu của nó. Nếu không được thiết lập thì tất cả các khung chữ nhật con sẽ cùng một mầu cũng như mầu foreground. Nếu như ForegrounđSpecifie bit đã không được thiết lập thì Foreground sẽ giữ nguyên cho đến tile cuối cùng. Khung chữ nhật con có cấu trúc như sau: Sử dụng hai byte để xác định vị trí và kích thước khung chữ nhật con.Bốn bit đầu tiên sẽ xác định vị trí X, bốn bit sau sẽ xác định vị trí Y cũng như vậy đối với width và heigth. Mã hoá ZRLE Mã hóa này dựa trên mã hoá Zlib Run-Length và tổ hợp kiểu nén zlib, kết hợp với mã hoá Run- Length. Khung chữ nhật bắt đầu với chiều dài 4 bytes và theo sau là các byte về dữ liệu nén kiểu zlib. Một luồng dữ liệu zlib được sử dụng trong giao thức kết nối RFB, bởi vậy khung hình chữ nhật được mã hoá và giải mã theo ZRLE theo một trật tự chặt chẽ. Dữ liệu zlib khi giải nén thì được hiển thị trên tile 64x64 pixel theo thứ tự từ trái qua phải, từ trên xuống dưới, tương tự như mã hextile. Nếu như chiều rộng của khung chữ nhật không phải là bội số của 64 thì chiều rộng của tile cuối cùng trong mỗi một dòng là nhỏ hơn. Đối với chiều cao cũng như vậy. Kiểu mã hoá ZRLE sử dụng kiểu nén CPIXEL (Compressed pixel) . Nó giống như PIXEL cho định dạng pixel tương ứng trừ khi bit true-colour-flag khác không, bits-per-pixel là 32, độ sâu màu là 24 hoặc nhỏ hơn thì tất cả bit màu RGB sẽ được xác định bằng 3 byte. Trong trường hợp CPIXEL chỉ sử dụng 3 byte dài và phải chứa nhiều hơn 3 byte thì nó sử dụng thêm bytes PerCPixel. Với mỗi tile sẽ bắt đầu bởi một kiểu subencoding. Bit đầu tiên của byte này được thiết lập nếu như byte này được mã hoá theo kiểu Run-Length, và thiết lập 0 cho các bit còn lại. Các giá trị của subenconding: 0- Dữ liệu pixel Raw: 1- Dữ liệu màu bao gồm các màu đơn lẻ: 2-16: Kiểu bảng màu được đóng gói bao gồm giá trị pixel của paleteSize (=subencoding). 17-127: không sử dụng. 128: Mã hoá RLE, bao gồm số cửa sổ được mã hoá cho tới tile cuối cùng. 129 : không sử dụng. 130-255: bảng mầu RLE, bao gồm các giá trị pixel của paletteSize 3.3.4. Mã hóa giả (pseudo-encodings) Cursor pseudo-encoding Một client yêu cầu yêu cầu Cursor pseudo-encoding được khai báo nó có khả năng vẽ con trỏ chuột trên máy hiện tại. Điều này cải tiến hiệu năng trên kết nối mạng chậm. Server thiết lập kiểu chuột bằng các gửi pseudo-rectangle với Cursor pseudo-encoding được cập nhật liên tục. Cập nhật về vị trí, toạ độ cũng như kích thước của pseudo-rectangle. DesktopSize pseudo-encoding Client yêu cầu DesktopSize pseudo-encoding được chỉ ra rằng nó có khả năng sao chép phần thay đổi trên bộ đệm khung. Server sẽ thay đổi cở màn hình bằng các gửi pesedo-rectangle với DesktopSize pseudo-encoding như là khung chữ nhật cuối cùng trong việc cập nhật. CHƯƠNG IV: MIDDLEWARE VÀ VIRTUAL NETWORK COMPUTING Trong hai chương trước của đồ án em đã trình bày về một cách chi tiết về mô hình middleware và hệ thống VNC. Chúng đã thấy rõ vai trò quan trọng của middleware trong việc xây dựng các ứng dụng trong môi trường phân tán, cũng như vai trò của hệ VNC trong các ứng dụng giám sát và làm việc từ xa. Ở chương này em xin đi vào phân tích kĩ hơn về hệ thống VNC về các module cũng như khối kiến trúc của hệ thống. Phần cuối của chương là chương trình ứng dụng sử dụng mô hình middleware, hệ VNC mà em tham gia xây dựng. Tuy nhiên chương trình này mới hoạt động trên mạng LAN và thực sự chưa sử dụng middleware một cách hiệu quả nhất, nhưng em hi vọng trong thời gian tới em sẽ nhận được những đóng góp quí báu của quí thầy cô để tiếp tục nghiên cứu và phát triển đề tài một cách hoàn thiện và có tính ứng dụng cao. 4.1. Hệ thống VNC Như chúng ta đã biệt hệ thống VNC chia thành 2 phần rõ rệt chúng ta có thể hiểu được đó là VNC Server và VNC Viewer. Chúng ta có thể thấy mô hình chung như sau: VNC Server VNC Client VNC Client Mạng Hình 4.1: Mô hình chung của ứng dụng VNC Trong đó: VNC Server: chạy trên máy cục bộ, có thể chạy trên các hệ điều hành khác nhau và các môi trường khác nhau. Các hệ điều hành bao gồm: Windows NT, Windows XP, Macintosh, Linux… Môi trường: môi trường Windows, môi trường Linux,… VNC Client: chạy trên máy cục bộ, từ trên trình duyệt hay ở ứng dụng. Các phiên bản hỗ trợ chạy trên các hệ điều hành và các mạng khác nhau. Mạng: hệ thống cho phép sử dụng trên mạng LAN, WAN, Internet,… Một phiên làm việc của hệ thống VNC có thể được mô tả như hình 4.2. Nhìn trên mô hình ta thấy rằng phiên làm việc bắt đầu bằng việc tạo kết nối giữa client và server. Sau khi kết nối được tạo ra, chúng ta có thể thay đổi cách cấu hình cho phiên làm việc hay sử dụng cấu hình mặc định. Tiếp theo đó là vòng lặp hiển thị màn hình của server, nhận các sự kiện chuột hay bàn phím, cập nhật sự thay đổi. Cuối cùng là chấm dứt kết nối, có thể hủy kết nối từ client hay server. Hình 4.2: Biểu đồ diễn tiến của một phiên làm việc. Sau đây em xin đi vào phân tích một cách chi tiết các khối chức năng chính của hệ VNC sử dụng trong Windows để thấy rõ các dịch vụ cũng như tính chất của middleware tương ứng. Trong đồ án này em chỉ xin đi vào phân tích về các chức năng của hệ thống thông qua chương trình được cung cấp miễn phí của tổ chức. 4.1.1. VNC Server Như chúng ta đã biết công nghệ sử dụng chính trong VNC là công nghệ thin-client, công nghệ tập chung tất cả các chức năng trên server. Server nắm giữ quyền điều khiển đối với hầu hết các chức năng chính. VNC SERVER Kết nối Điều khiển Chia sẻ tài nguyên Hình 4.3: Biểu đồ chức năng của VNC Server Chúng ta có thể chia các chức năng thành ba khối chức năng chính đó là: Khối chức năng điều khiển. Khối chức năng kết nối. Khối chức năng chia sẻ tài nguyên. a. Khối chức năng kết nối bao gồm các các chức năng sau + Kết nối thông qua các kiểu kết nối khác nhau: TCP/IP, UDP, SOCKET,… + Kết nối từ các môi trường khác nhau: LAN, WAN, Internet. Ta có thể quan sát qua các mô hình sau: VNC Server chạy trên một máy Window, Linux hoặc Solaris cho phép bất kỳ một Client nào chạy trên các máy khác nhau trong mạng có thể kết nối được với nhau một cách dễ dàng. Trên mô hình này giao diện truyền thông cung cấp các dịch vụ kết nối các loại mạng khác nhau, không phụ thuộc vào phần cứng cũng như hệ điều hành chạy trên các máy VNC client. Gói Network đảm nhận công việc này. Gói này gồm các lớp sau: Connection Filter: kiểm tra các socket kết nối. Socket: quản lý toàn bộ các quá trình kết nối qua socket. SocketListener: Tạo các socket đợi. TcpFilter. TcpListener. TcpSocket: ba lớp này cài đặt việc kết nối sử dụng TCP/IP. VNC Server VNC Viewer VNC Viewer Communication Interface Hình 4.4: Mô hình giao tiếp trong hệ VNC VNC Server chạy trên một máy Window, Linux hoặc Solaris cho phép bất kỳ một Client nào chạy trên các máy khác nhau trong mạng có thể kết nối được với nhau một cách dễ dàng. Trên mô hình này giao diện truyền thông cung cấp các dịch vụ kết nối các loại mạng khác nhau, không phụ thuộc vào phần cứng cũng như hệ điều hành chạy trên các máy VNC client. Gói Network đảm nhận công việc này. Gói này gồm các lớp sau: Connection Filter: kiểm tra các socket kết nối. Socket: quản lý toàn bộ các quá trình kết nối qua socket. SocketListener: Tạo các socket đợi. TcpFilter. TcpListener. TcpSocket: ba lớp này cài đặt việc kết nối sử dụng TCP/IP. b. Khối chức năng điều khiển + Hỗ trợ đa luồng. + Xử lý thông điệp. + Xử lý phiên. + Quản lý tài nguyên. Khối chức năng điều khiển được cài đặt trong pakage Winvnc. Pakage này thừa kế từ các gói winvnc/VNCServerWin32 và rfb_win32/Service bao gồm các lớp sau: AddNewClientDialog: điều khiển các kết nối tới VNCServer. JavaViewerServer: cài đặt trình duyệt trên Server. ManagerListening: Quản trị các SOCKET đợi. QueryConnectDialog: Truy vấn các kết nối tới VNCServer. StrayIconThread: tạo các Thread cho các Server. VNCServerService: thiết lập các dịch vụ cho VNC Server. VNCServerWin32: Cài đặt các mặc định cho VNC Server trên môi trường Win32. Communication Interface VNC Viewer VNC Server User Inteface Hình 4.5: Mô hình giao tiếp người dùng trong hệ VNC Nhìn trên hình 4.5 thông qua giao diện người dùng, người sử dụng có thể thiết lập các chế độ làm việc của cả Client và Server. Ở đây các thiết lập bao gồm thiết lập về kết nối, giao tiếp, các sự kiện chuột và bàn phím. Nó được cài đặt chủ yếu trong các gói rdr, rfb_Win32, rfb. Các gói trên gồm rất nhiều các lớp ở đây em chỉ xin liệt kê một số lớp chính để thấy rõ các chức năng chính: - Rfb class: CConnection: Toàn bộ các giao tiếp của giao thức cài đặt trong lớp này, nó thừa kế các lớp trong gói Connection. HTTPServer: thừa kế các lớp của Network cho phép giao tiếp trên mạng thông qua HTTP. VNCServer: Cài đặt các mặc định cho VNCServer. c. Khối chức năng chia sẻ tài nguyên + Chia sẻ màn hình. + Chia sẻ chuột, bàn phím, clibboard. -Rfb_Win32: gói này tương tự gói rfb nhưng cung cấp các giao tiếp trên Win32. 4.1.2. VNC Viewer VNC VIEWER Kết nối Hiển thị Điều khiển Hình 4.6: Biểu đồ chức năng của VNC Viewer Chúng ta nhận thấy rất rõ các khối chức năng sau: Kết nối: Tạo các phiên làm việc với VNC server thông qua TCP/IP, SOCKET,… Hiển thị: Cập nhật các thay đổi từ phía VNC Server, thiết lập các chế độ hiển thị về màu sắc, kích thước, các thức nén,…của ảnh hiển thị. Điều khiển: sử dụng trong các sự kiện thông điệp của chuột bàn phím, clipboard. Thực sự thì các cách phân tích trên chỉ là tương đối rất khó để phân tích một cách thật sự phù hợp cho cả hai hệ trên. Ở đây em muốn đưa ra các khối chức năng để đi vào phân tích những tính chất, dịch vụ của middleware đã được xây dựng và những hướng giải quyết tiếp theo để có thể sử dụng VNC thật sự hiểu quả hơn trong các ứng dụng phân tán và quản lý. Chúng ta thấy hệ thống VNC sử dụng các giao diện sau: Giao diện người dùng, giao diện truyền thông: thực sự khi sử dụng hệ thống VNC người dụng có thể dễ dàng sử dụng hệ thống thông qua giao diện trực quan, sử dùng trên các hệ điều hành, các loại máy khác nhau. Chúng ta sẽ thấy rõ qua hình 4.7 dưới đây. Người sử dụng Giao diện người dùng VNC VIEWER Giao diện truyền thông VNC SERVER Hình 4.7: Các giao diện sử dụng trong hệ thống Giao diện lập trình hệ thống: ở đây ta coi VNC là một middleware, thông qua đó ta sẽ xây dựng ứng dụng sử dụng VNC để tạo các ứng dụng quản lý phân tán (sẽ được nói rõ trong phần ứng dụng vào BKEC tiếp theo). 4.2. Middleware trong hệ thống tính toán mạng ảo Phần trên chúng ta đã được thấy rõ các sự tương tác trong hệ thống VNC, sự giao tiếp giữa VNC Server và VNC Viewer. Nếu không có middleware thì ta có thể hình dung các giao tiếp như hình. Các VNC client sẽ kết nối trực tiếp đến VNC Server sau đó để thực hiện các giao tiếp. Như vậy thì mỗi VNC Client đều phải tự mình cài đặt tất cả các kết nối tới VNC Server, nếu có n Client thì chúng ta phải tao n kết nối. Điều này cực kỳ khó khăn nếu các VNC Client chạy trên các platform khác nhau, kết nối từ các mạng khác nhau thì chúng phải tự mình cài đặt các kết nối cần thiết để giao tiếp với VNC Server. VNC Server VNC Client VNC Client Hình 4.8: Giao tiếp trong hệ thống VNC khi không có middleware Qua phân tích trên, thay vì kết nối trực tiếp đến VNC Server, các client sẽ kết nối thông qua một middleware, middleware sẽ có vai trò tạo kết nối và giao tiếp giữa client và server. Nó giúp cho VNC Client không phải lo lắng về vấn đề phần cứng và platform khác nhau. VNC Client chỉ việc tạo kết nối tới middleware, điều này rất dễ dàng vì các middleware đã cung cấp điều này thông qua giao diện lập trình ứng dụng. Nhìn vào hình dưới chúng ta thấy rằng trong hệ thống VNC việc mở rộng kiến trúc client/server truyền thống bằng cách đặt vào giữa hai thành phần đó một proxy server (chính là một middleware) nắm vai trò quan trọng trong việc sử lý thông điệp và kết nối. Như vậy đối với mỗi VNC server, nó là một Proxy Client Module (PCM) đóng vai trò là một VNC client và ngăn chặn các thông điệp frame buffer updat. Và đối với mỗi VNC client, nó lại là Proxy Server Module (PSM) đóng vai trò là một VNC server và ngăn chặn các thông điệp user event. Những thông điệp sẽ được định hướng tới central Cooperation Manager (CM) để xử lý. CM gửi multicast thông điệp từ VNC server tới các collaborative VNC client theo các PCM tương ứng và trộn các thông điệp từ VNC client tới VNC server theo các PCM tương ứng. Tại cùng thời gian, nó cũng lưu trữ các thông điệp vào các log files. VNC Server VNC Client VNC Client Middleware CM PSM PSM PCM Log Hình 4.9: Mô hình middleware trong VNC Như vậy toàn bộ khối bao gồm các CM, PCM và Log là một middleware có nhiệm vụ giải quyết toàn bộ các thông điệp từ server đến các client, hay các sự kiện người dùng từ client đến server. Toàn bộ các giao tiếp sẽ được thông qua một middleware, chúng ta sẽ nhìn nhận lại các dịch vụ của hệ thống đễ xem xét các tính chất của middleware được thỏa mãn. Các dịch vụ của middleware bao gồm: Register,remove và record: các dịch vụ cho phép kiểm soát các kết nối trong một bảng do CM nắm giữ, ghi lại các thông điệp gửi đi. Nó thuộc về dịch vụ thông tin. Route, request, release và reconnect: quản lý và xử lý thông điệp thuộc về dịch vụ điều khiển. Qua các dịch vụ nêu trên, chúng ta mới thấy rõ middleware giúp cho các client và server có thể kết nối được với nhau bất kể chạy từ Web, Unix, Windows,… trên mạng LAN hay trên Internet. Middleware cũng giúp cho các client loại bỏ hẳn phụ thuộc vào phần cứng của máy sử dụng. 4.3. Ứng dụng trong chương trình BKEC 4.3.1. Vấn đề và giải pháp của phần mềm hỗ trợ giảng dạy trên mạng LAN (BKEC-ECLASS) Đi vào phần ứng dụng trước hết em xin trình bày về ý tưởng và giải pháp đưa ra của phần mềm hỗ trợ giảng dạy trên mạng LAN (BKEC – Bách Khoa E - Class). Như chúng ta đã biết mô hình dạy học truyền thống ở Việt Nam hiện nay vẫn là dùng bảng và chữ viết, thầy giáo đóng vai trò quan trọng trong toàn bộ quá trình giảng dạy. Nhưng cùng với sự phát triển khoa học công nghệ thì mô hình này dần bộc lộ nhiều yếu điểm nhất là trong các phòng học ngoại ngữ, tin học… Việc một thầy nhiều trò lớp rộng đã làm giảng đáng kể chất lượng của người dạy cũng như người học. Xuất phát từ ý tưởng đó và dưới sự hướng dẫn của thầy Ts. Huỳnh Quyết Thắng, Ths. Đinh Hùng nhóm chúng em gồm 4 thành viên đã xây dựng phần mềm này hỗ trợ tối đa giảng viên và học viên trong lớp học cả về giảng dạy, học tập cũng như quản lý thông qua các giao tiếp bằng âm thanh hình ảnh cũng như đối thoại trực tiếp. Việc giáo viên từ máy chủ có thể toàn quyền quản lý giám sát máy học viên, các hướng dẫn được hiển thị trực quan là một trong những đòi hỏi không thể thiếu được trong một phần mềm hỗ trợ giảng dạy. Phần mềm gồm các chức năng chính sau: + Chức năng chia sẻ màn hình (Desktop Sharing): Chức năng này cho phép giáo viên giám sát tình hình học tập của các học viên, hoặc hiển thị màn hình giáo viên trên tất cả các máy học viên nhằm thực hiện việc giảng dạy trực tiếp ngay trên mạng LAN. + Chức năng truyền multimedia (hình ảnh, âm thanh) tới mọi thành viên trong nhóm, hoặc toàn bộ lớp học theo thời gian thực. Nguồn multimedia có thể từ file, đầu video số, card Tivi và WebCam. + Chức năng giao tiếp (voice chat, chat, Send message và file transfer) giữa giáo viên và học viên. + Chức năng điều khiển từ xa (Remote Control). Cho phép giáo viên khóa máy của học viên (khóa màn hình, khóa bàn phím, khóa chuột). Cho phép giáo viên toàn quyền điều khiển máy học viên trực tiếp trên máy giáo viên. Kiểm soát tiến trình đang chạy trên từng máy học viên. + Chức năng quản trị phòng Lab: Thực hiện phân chia nhóm học viên trong lớp giúp giáo viên dễ dàng quản lý trong quá trình giảng dạy.Các thành viên trong nhóm có thể thảo luận thông qua voice hay text thời gian thực. Giúp giáo viên quản lý được tình hình học tập của học viên từ đó đánh giá được chất lượn giảng dạy và học tập. Dưới đây là biểu đồ phân cấp chức năng của hệ thống: Hình 4.10: Mô hình phần mềm BKEC phân cấp theo chức năng Thông qua biểu đồ trên chúng ta thấy rất rõ phần mềm bao gồm một số lớn các chức năng có hầu hết trong các ứng dụng client/server thông dụng đã được rất nhiều các tổ chức xây dựng. Việc xây dựng hoàn toàn mới và từ ban đầu là điều cực kì khó khăn nếu không muốn nói là không thể đối với nhóm chúng em. Vì vậy giải pháp chọn các sản phẩm có sẵn hỗ trợ các phần mềm là một giải pháp khả quan nhất và giúp tiết kiệm thời gian tiền của cũng như mang đến hiệu quả công việc cao nhất. Trong phần mềm này chúng em sử dụng hai sản phẩm là Direct Play 9.0 của Microsoft và VNC của viện Olivetti & Oracle Research Laboratory. BKEC Client BKEC Client Direct Play 9.0 - Dịch vụ truyền thông (kết nối, quản lý kết nối, chat voice, chat text). - Dịch vụ điều khiển (sử dụng các thành phần khác trong ứng dụng,..) … MIDDLEWARE BKEC Server Hình 4.11: Mô hình middleware sử dụng Direct Play 9.0 Phần mềm sử dụng Direct Play 9.0 thông qua giao diện lập trình, giao diện lập trình hệ thống để xây dựng các chức năng giao tiếp cho client và server. Thực sự Direct Play X còn cung cấp rất nhiều dịch vụ khác, nhưng trong phần mềm BKEC giai đoạn đầu được xây dựng để sử dụng trên mạng LAN nên chưa sử dụng hết các dịch vụ cung cấp. Thông qua Direct Play 9.0, BKEC Server dễ dàng tạo kết nối tới các client thông qua giao tiếp TCP/IP hoặc UDP, quản lý các kết nối, giao tiếp bằng thông điệp, text hoặc tiếng nói. Cung cấp các dịch vụ đa luồng, dịch vụ thông tin để nhận và xử lý thông điệp, các kết nối từ nhiều client, cho phép các client có thể dễ dàng giao tiếp với nhau một cách trực tiếp hoặc gian tiếp qua server. Phần mềm bao gồm hai phần: phần ứng dụng chạy trên máy giáo viên (BKEC – Server) và phần ứng dụng chạy trên máy học viên (BKEC – Client). Trong hệ thống trên lớp quan trọng nhất là SystemServer và SystemClient, hai lớp này kiểm soát toàn bộ hoạt động của hệ thống, chịu trách nhiệm trao đổi thông tin, dữ liệu giữa Server/Client, quản trị cơ sở dữ liệu học viên, nhóm trong lớp học và điều khiển các chức năng của toàn bộ hệ thống. a. Lớp SystemServer Hình 4.12: Biểu đồ lớp quan hệ lớp System Server Hình 4.13: Lớp System Server b. Lớp SystemClient Hình 4.14: Biểu đồ quan hệ lớp SystemClient Tiếp theo hệ thống VNC được sử dụng để xây dựng chức năng chia sẻ màn hình. Chức năng này cho phép giáo viên giám sát tình hình học tập của các học viên, hoặc hiển thị màn hình giáo viên trên tất cả các máy học viên nhằm thực hiện việc giảng dạy trực tiếp ngay trên mạng LAN. Như vậy thông qua VNC chúng ta có thể dễ dàng thực hiện điều này bằng cách sử dụng các dịch vụ của VNC cung cấp (ở đây chủ yếu là dịch vụ truyền thông, thông tin sử dụng các giao diện lập trình ứng dụng, lập trình hệ thống…). Mô hình giao tiếp của VNC trong phần mềm BKEC như hình dưới đây. Trong hệ thống BKEC, chúng ta quan tâm nhất tới việc truyền dữ liệu ảnh màn hình. Chỉ khi màn hình có sự thay đổi ở vùng nào đó trên màn hình thì chức năng Windows API Hooking sẽ thu nhận sự thay đổi đó (theo tọa độ, kích thước của hình ảnh). Sau đó hình ảnh được chuyển thành dữ kiệu pixel. Dữ liệu này sau khi chụp còn ở dạng thô cho nên nó sẽ được mã hóa nhờ chức năng Desktop Data Encoding. Chức năng Compression tiếp tục nén dữ liệu rồi chuyển vào luồng. Chức năng Stream và Network sẽ có nhiệm vụ là truyền thông tin tới các máy client dưới dạng những khung dữ liệu framebuffer. Network + Socket + TCPSocket Decompression Stream + In Stream + OutStream FrameBuffer Input + Mouse + Keyboard Desktop Bitmap image Window API Hooking + Input + Desktop Desktop Data Encoding + Raw + ZRLE + Hextile + RRED Compression Stream + In Stream + OutStream Network + Socket + TCPSocket ................. Desktop Display Desktop Data Decoding + Raw + ZRLE + Hextile + RRED Current Token User (1) . . . . Current Token User (n) Server Client Hình 4.15: Mô hình trao đổi thông tin giữa BKEC Server và BKEC Client BKEC Client BKEC Client VNC - Dịch vụ truyền thông (kết nối). - Dịch vụ điều khiển. - Dịch vụ thông tin (truyền dữ liệu, sao lưu, kiểm tra) MIDDLEWARE BKEC Server Hình 4.16: Mô hình middleware sử dụng VNC Trong BKEC chúng em sử dụng VNC vào hai chức năng chính đó là trình diễn bài giảng và kiểm soát màn hình học viên. Chúng em sử dụng VNC để có thể lấy về màn hình học viên quan sát xem các hành động đang diễn ra, chia sẻ màn hình giáo viên trong khi giảng dạy giúp học viên có thể chủ động trong việc học tập. Phần mềm cũng có thể lấy một màn hình để chia sẻ cho một nhóm hoặc cả lớp quan sát. CHƯƠNG V: KẾT LUẬN 5.1. Kết quả đạt được Đề tài với mục đích chính là nghiên cứu một cách tổng quan về mô hình middleware, tìm hiểu các ứng dụng trong thực tế và có thể đưa ra những xu hướng phát triển trong thời gian tới. Trong bản đồ án này, em đã đưa ra được những kiến thức về kiến trúc, ứng dụng và khả năng phát triển của middleware trong các phần mềm phân tán. Qua những kiến thức chung đó em cũng đưa ra về sơ bộ về hệ thống tính toán mạng ảo (giao thức chính và những ứng dụng to lớn của nó trong việc xây dựng phần mềm quản lý desktop trong môi trường phân tán) cũng như những đóng góp của middleware trong đó. Đề tài được xây dựng để đánh giá khả năng của chúng vào những ứng dụng trong thực tế ở Việt Nam khi mà xu hướng phát triển sử dụng mã nguồn mở, xây dựng phần mềm hướng thành phần ngày càng trở nên phổ biến. Giúp cho các nhà phát triển phần mềm những kiến thức chung để tiếp cận những sản phẩm trung gian nhằm lựa chọn các thành phần một cách hợp lý nhất cho các sản phẩm của mình, rút ngắn thời gian xây dựng nâng cao chất lượng sản phẩm. Đồ án còn một số hạn chế là việc ứng dụng middleware vào VNC chưa thật sự hiệu quả, việc cài đặt chương trình mới hạn chế trên mạng LAN. Chưa xây dựng được một middleware mang tính ứng dụng cao. 5.2. Hướng phát triển trong tương lai Tiếp tục nghiên cứu và phát triển ứng dụng theo hai hướng: Xây dựng và hoàn thiện phần mềm BKEC và ứng dụng có hiệu quả hơn các phần mềm trung gian có sẵn (đặc biệt là hệ thống tính toán mạng ảo). Tìm hiểu và có thể đưa ra những phần mềm trung gian với giá cả và chức năng hợp lý đối với nền công nghiệp phần mềm ở nước ta. Trên đây chỉ là những kiến thức tổng quan chúng về phần mềm trung gian, hy vọng trong thời gian tới em có thể đưa ra những nghiên cứu sâu hơn nữa, và có thể tự mình xây dựng được một phần mềm trung gian giúp xây dựng các ứng dụng phân tán trong môi trường mạng LAN nhằm quản lý desktop như họp giao ban trực tuyến, các phiên họp trực tuyến, các mô hình giảng dạy đa chức năng… TÀI LIỆU THAM KHẢO [1] The Middleware Source Book – John Colonna-Romano Patricia Srite. 1998. [2] High-Performance Client/Server - Chris Loosley and Frank Douglas. [3] A Middleware Architecture for Scalable, QoS - Aware and Self-Organizing Global Services-Franz J. Hauck, Erich Meier, Ulrich Becker, Martin Geier, Uwe Rastofer, Martin Steckermeier. 2004 [4] Middleware Architecture Report: “A Middleware Framework for Delivering Business Solutions”. 2004 [5] IRTL (Information Resource Transaction Layer) Middleware Design for P2P and Open GRID Services - Junseok Hwang, Praveen Aravamudham, Elizabeth Liddy, Jeffrey Stanton, and Ian MacInnes School of Information Studies,Syracuse University. 2003 [6] An Open Middleware Architecture for Network-Integrated Multimedia-Marco Lohse, Michael Repplinger, and Philipp Slusallek. 2004 [7] Mike Stock of Zurich, Switzerland - Technologies for Thin Client Architectures - Master Thesis in Computer Science – 2001 [8] Brian Madden - Thin Client Server Computing – 1999 [9] A Middleware Architecture for Transactional, Object-Oriented Applications - Christoph Hartwich - 14. November 2003 [10] The Gridbus Middleware 2004 - [11] IRTL (Information Resource Transaction Layer) Middleware Design for P2P and Open GRID Services, Junseok Hwang, Praveen Aravamudham, Liz Liddy, Jeff Stanton,Ian MacInnes, May 30, 2004 [12] Các tài liệu về CORBA [13] Các tài liệu về hệ tính toán lưới [14] Các trang Web về các tổ chức, công ty phát triển middleware. [15] [16] ._.

Các file đính kèm theo tài liệu này:

  • docDAN056.doc
Tài liệu liên quan