Tuyển tập Báo cáo “Hội nghị Sinh viên Nghiên cứu Khoa học” lần thứ 6 Đại học Đà Nẵng - 2008 75 PHÁT TRIỂN ỨNG DỤNG LƯU TRỮ TRỰC TUYẾN DEVELOPING ONLINE STORAGE APPLICATION SVTH: HUỲNH NGUYÊN TOẢN Lớp: 03T2, Trường Đại học Bách khoa, Đại học Đà Nẵng GVHD: TS. NGUYỄN THANH BÌNH Khoa CNTT , Trường Đại học Bách khoa, Đại học Đà Nẵng TÓM TẮT Nhu cầu lưu trữ dữ liệu ngày nay không chỉ gói gọn trên một máy tính cục bộ, người dùng còn mong muốn sử dụng dữ liệu họ mọi lúc mọi nơi. Vì vậy xây dựng ứng dụng lưu trữ trực tuyến là vấn đề đang được quan tâm. Ngoài ra với xu hướng phần mềm ngày nay được cung cấp như một dịch vụ. Ứng dụng lưu trữ trực tuyến còn được cung cấp dưới dạng dịch vụ (web services), giúp cho các nhà phát triển thứ ba dễ dàng sử dụng và tích hợp vào các ứng dụng của họ. Bài báo này trình bày ứng dụng sử dụng các web services và cho phép người dùng lưu trữ và quản lý dữ liệu từ xa qua mạng. SUMMARY Nowadays the need to store data is not only on a local computer, users want to use the data available wherever and whenever. Therefore, online storage application becomes a concern. In addtion, the tendency now in software is “Software as a Service”. Online storage application also is service, facilitates the third developers to use and integrate online storage application into their own applications. This article presents application using web services and allowing users to store and manage data over internet. 1. Đặt vấn đề Ứng dụng được phát triển gồm hai phần: Dịch vụ và chương trình client. 1.1. Dịch vụ Dịch vụ cung cấp không gian lưu trữ từ xa, cho phép người dùng lưu trữ và quản lý dữ liệu. Không gian lưu trữ của người dùng được giới hạn bởi dịch vụ. Dịch vụ bao gồm hai web service: Web Service Quản Lý Người Dùng. Web Service Quản Lý Dữ Liệu. Web Service Quản Lý Người Dùng bao gồm các chức năng: Cho phép tạo người dùng mới. Cung cấp cơ chế login và logout. Web Service Quản Lý Dữ Liệu sẽ cung cấp các chức năng tương tự các hàm Windows API như: Lấy cấu trúc thư mục của vùng lưu trữ người dùng. Tạo, sao chép, xóa, đặt tên lại, di chuyển thư mục. Thêm, sao chép, xóa, đặt tên lại, di chuyển, tải tập tin. 1.2. Chương trình client Chương trình client tiêu thụ dịch vụ và có các tính năng tương tự Microsoft Windows Explorer. Người dùng sẽ sử dụng chương trình này để truy cập và quản lý dữ liệu của mình trên dịch vụ. 2. Mô hình hoạt động của ứng dụng 2.1. Giao tiếp giữa dịch vụ và chương trình client Tuyển tập Báo cáo “Hội nghị Sinh viên Nghiên cứu Khoa học” lần thứ 6 Đại học Đà Nẵng - 2008 76 Chương trình client xác thực người dùng bằng cách truyền tên người dùng và mật khẩu đến Web Service Quản Lý Người Dùng. Khi được xác nhận đúng, Web Service Quản Lý Người Dùng trả về cho chương trình client một khóa bí mật (giá trị Globally Unique Identifier). Khóa bí mật này đồng thời được lưu trong cơ sở dữ liệu của dịch vụ dưới dạng là một trong những thông tin của người dùng. Chương trình client tạo thẻ quản từ các thông tin: khóa bí mật và tên người dùng. Thẻ quản này sẽ được dùng cho mỗi lần chương trình client gọi các phương thức dịch vụ của Web Service Quản Lý Dữ Liệu. Trước khi các phương thức dịch vụ của Web Service Quản Lý Dữ Liệu được thực hiện, để xác nhận tính hợp lệ của thẻ quản, một Module Thẩm Định Quyền Người Dùng của dịch vụ sẽ kiểm tra tính hợp lệ của thẻ quản: o Nếu thẻ quản hợp lệ thì phương thức dịch vụ của Web Service Quản Lý Dữ Liệu được thực hiện. o Ngược lại nếu thẻ quản không hợp lệ thì lời gọi bị từ chối và thông báo đến chương trình client. Người dùng từ xa với chương trình client Tên người dùng & mật khẩu Khóa bí mật Gọi phương thức dịch vụ & thẻ quản Kết quả thực hiện Web Server Database Server Web Service Quản Lý Người Dùng Web Service Quản Lý Dữ Liệu Hình 2.1: Mô hình hoạt động của dịch vụ Ngoài ra cũng có thể tăng cường tính bảo mật cho dịch vụ bằng cách thực hiện các lời gọi dịch vụ thông qua giao thức Secure Sockets Layer (SSL). 2.2. Tạo và kiểm tra thẻ quản Chương trình client Tên người dùng Khóa MAC Algorithm MAC MAC: Message Authentication Code Module Thẩm Định Tên người dùng Khóa MAC Algorithm MAC Kiển tra: Nếu bằng nhau thì xác thực thẻ quản hợp lệ. MAC Tên người dùng Thẻ quản MAC = ? Hình 2.2: Tạo và kiểm tra thẻ quản Tuyển tập Báo cáo “Hội nghị Sinh viên Nghiên cứu Khoa học” lần thứ 6 Đại học Đà Nẵng - 2008 77 Thẻ quản là sự kết hợp từ: Tên tài khoản người dùng (gọi tắt là tên người dùng và là duy nhất cho mỗi người dùng). Giá trị MAC (Message Authentication Code) được tính từ tên người dùng bằng khóa bí mật chung. Quá trình chương trình client tạo thẻ quản và Module Thẩm Định Quyền Người Dùng của dịch vụ kiểm tra tính hợp lệ của thẻ quản dựa trên phương pháp Mã xác thực thông báo (Message Authentication Code). Quá trình được thể hiện qua Hình 2.2. 3. Kiến trúc ứng dụng Ứng dụng được thiết kế dựa theo ý tưởng mô hình 3 tầng: Các web service của dịch vụ bao gồm hai tầng: Tầng truy cập cơ sở dữ liệu và tầng nghiệp vụ. Nghiệp vụ được xuất ra bên ngoài là các phương thức dịch vụ (các web method của web service). Tầng giao diện được thực hiện bởi chương trình client. Data Access Layer Data Sources Business Layer Web Method Client call Service Hình 3.1: Kiến trúc ứng dụng 4. Thiết kế cơ sở dữ liệu Cơ sở dữ liệu được dùng để lưu trữ thư mục tập tin của người dùng. Có thể nói việc dùng cơ sở dữ liệu là sự lựa chọn trái với thông thường cho thành phần lưu trữ thư mục tập tin của một dự án. Xu hướng kỹ thuật là sử dụng các hệ thống tập tin có sẵn như FAT32 hay NTFS, vì giao diện lập trình của các hệ thống tập tin này yêu cầu ít mã hơn và sự thực thi của nó cũng dễ hiểu hơn. Nếu không xét về tính dễ dàng khi lập trình, thì sẽ có các lợi ích khi sử dụng hệ thống cơ sở dữ liệu. So với các hệ thống tập tin, hệ thống cơ sở dữ liệu dễ dàng tùy chỉnh không gian lưu trữ hơn, cơ sở dữ liệu có thể được mở rộng, nó có một tập các công cụ và tính năng hỗ trợ Tuyển tập Báo cáo “Hội nghị Sinh viên Nghiên cứu Khoa học” lần thứ 6 Đại học Đà Nẵng - 2008 78 như: Chỉ mục (indexing), truyền dữ liệu, sao lưu, phục hồi, tạo bản sao (replication), truy vấn, tìm kiếm, theo dõi (monitoring), và một số tính năng nghiệp vụ khác. Cơ sở dữ liệu của dịch vụ được thiết kế dựa trên sự kết hợp của hai phương pháp là mô hình cây và mô hình tập hợp. 4.1. Mô hình cây Mô hình cây được sử dụng thường xuyên để miêu tả mối quan hệ cấp bậc. Trong mô hình này thư mục và tập tin là những nút của cây. Có những loại nút sau: Nút cha: Nút có ít nhất một nút con. Nút con: Nút có một nút cha. Nút gốc: Nút không có nút cha. Nút lá: Nút không có nút con. Hình 4.1 là một ví dụ về mô hình cây, ví dụ này được sử dụng xuyên suốt trong phần trình bày này. VN SG Q1 Q5 HN DN LC HK HM NHS HC VN SG Q1 Q5 HN DN LC NHS HC HK HM Hình 4.1: Mô hình cây Để thực hiện mô hình cây trong cơ sở dữ liệu ta có thể thiết kế một ánh xạ giữa những nút cha và những nút con bằng cách sử dụng một bảng (table). Trong bảng, mỗi bản ghi (record) nút sẽ có một khóa chính và một khóa tham khảo đến nút cha (một bản ghi khác) trong cùng một bảng. Id Parent Name 1 Null VN 2 1 SG 3 1 HN 4 1 DN 5 2 Q1 6 2 Q5 7 4 LC 8 4 NHS 9 4 HC 10 7 HK 11 7 HM Bảng 4.1: Thực hiện mô hình cây bằng cách sử dụng một bảng Tuyển tập Báo cáo “Hội nghị Sinh viên Nghiên cứu Khoa học” lần thứ 6 Đại học Đà Nẵng - 2008 79 Dịch vụ xuất ra nội dung cấp bậc thư mục tập tin của người dùng dưới dạng XML. Chương trình client có thể sử dụng thông tin này để hiển thị trong một cây thư mục. Khi kết quả được miêu tả dưới dạng XML, mỗi hàng là một phần tử, mỗi cột là một thuộc tính. Những thuộc tính với giá trị null được bỏ qua. Những phần tử chỉ chứa những thuộc tính với những giá trị của cột tương ứng là khác null. Ví dụ, ba bản ghi đầu tiên sẽ được xuất ra như sau: <Tree Id="1" Name="VN"/> <Tree Id="2" Parent="1" Name="SG"/> <Tree Id="3" Parent="1" Name="HN"/> 4.2. Mô hình tập hợp Chay Visual Basic là các ngôn ngữ thủ tục. Các nhà phát triển quen với việc dùng các ngôn ngữ thủ tục để tổ chức dữ liệu trong các cấu trúc dữ liệu như danh sách hay mảng. Những đối tượng trong những ngôn ngữ đó được xử lý ở một thời điểm sử dụng vòng lặp hay đệ quy. SQL không giống như những ngôn ngữ nói trên, nó là ngôn ngữ hướng tập hợp. SQL được sử dụng để tổ chức dữ liệu trong những tập hợp. Khi một tập hợp được xử lý, toàn bộ tập hợp sẽ được xử lý với cùng một câu lệnh ở cùng một thời điểm hơn là một bản ghi ở một thời điểm. Đây là điểm quan trọng cho việc thực hiện phân cấp thư mục tập tin. Nếu người sử dụng muốn sao chép thư mục DN thì tất cả những thư mục con của thư mục DN cũng phải được sao chép. Chúng ta xem xét với cách thực hiện bằng mô hình cây: liệu cần bao nhiêu câu lệnh select?, có cần thiết sử dụng bảng tạm (temporary table) hay kỹ thuật lặp nào không ?. Bây giờ hãy xem xét mô hình tập hợp ở Hình 4.2. Q1 Q5 SG HN NHS HC HK HM DN LC VN Hình 4.2: Mô hình tập hợp Sử dụng mô hình tập hợp cho phân cấp thư mục tập tin dễ dàng xác định các thư mực con của thư mục DN. Nếu phân cấp thư mục tập tin được thực hiện bằng kỹ thuật này, thì chỉ cần duy nhất một câu lệnh select. Mô hình tập hợp sử dụng chuỗi số (number line) thể hiện qua Hình 4.3. VN 1 HN 8 9 SG 2 Q1 3 4 Q5 5 6 7 LC 16 DN 10 11 HK 12 13 HM 14 15 NHS 17 18 HC 19 20 21 22 Hình 4.3: Mô hình tập hợp sử dụng phương pháp chuỗi số Sử dụng phương pháp chuỗi số cho hệ phân cấp thư mục tập tin, dễ dàng truy vấn để tìm các nút, số lượng các nút trong một tập hợp. Những kết quả này cũng có thể thực hiện bằng mô hình cây, nhưng các câu truy vấn sẽ phức tạp hơn và không hiệu quả. Tuyển tập Báo cáo “Hội nghị Sinh viên Nghiên cứu Khoa học” lần thứ 6 Đại học Đà Nẵng - 2008 80 5. Kết quả Với chương trình client, người dùng có thể tạo tài khoản hay đặng nhập vào dịch vụ. Sau khi đăng nhập thành công, người dùng có thể sử dụng vùng lưu trữ của mình trên dịch vụ. Hình 5.1: Màn hình kết quả chương trình client 6. Kết luận Dựa vào các yêu cầu đặt ra ban đầu, tôi đã xây dựng, thử nghiệm được ứng dụng lưu trữ trực tuyến và đã đạt được một số kết quả sau: Dịch vụ bao gồm các web service cung cấp các phương thức tương tự như các hệ thống tập tin trên Windows hay Linux vì thế giúp các nhà phát triển thứ ba dễ dàng sử dụng và tích hợp vào các ứng dụng của họ. Chương trình client đóng vai trò là chương trình tiêu thụ dịch vụ, với giao diện tương tự như Microsoft Windows Explorer giúp người dùng sử dụng và quản lý lưu trữu của mình một cách dễ dàng. Hướng phát triển của ứng dụng là thêm chức năng chia sẽ dữ liệu giữa các người dùng. TÀI LIỆU THAM KHẢO [1] David Jorgensen (2002). Developing .NET Web Services with XML. Syngress Publishing, Inc. [2] Thomas Erl (2005). Service-Oriented Architecture: Concepts, Technology, and Design. Prenice Hall PTR. [3] Edward Jezierski (2002). Application Architecture for .NET: Designing Applications and Services. Microsoft Press. [4] Microsoft Developer Network (MSDN). [5] Wikipedia.org. . như một dịch vụ. Ứng dụng lưu trữ trực tuyến còn được cung cấp dưới dạng dịch vụ (web services), giúp cho các nhà phát triển thứ ba dễ dàng sử dụng và tích hợp vào các ứng dụng của họ. Bài. TẮT Nhu cầu lưu trữ dữ liệu ngày nay không chỉ gói gọn trên một máy tính cục bộ, người dùng còn mong muốn sử dụng dữ liệu họ mọi lúc mọi nơi. Vì vậy xây dựng ứng dụng lưu trữ trực tuyến là vấn. Ứng dụng được phát triển gồm hai phần: Dịch vụ và chương trình client. 1.1. Dịch vụ Dịch vụ cung cấp không gian lưu trữ từ xa, cho phép người dùng lưu trữ và quản lý dữ liệu. Không gian lưu