Đề tài Nghiên cứu về Web Caching

Tài liệu Đề tài Nghiên cứu về Web Caching: Lời cảm ơn Em xin chân thành cảm ơn cô giáo Dỗn Hồ Liên là người đã trực tiếp hướng dẫn em trong quá trình thực hiện đồ án này. Cô đã nhiệt tình chỉ bảo, giải đáp mọi thắc mắc, cung cấp các kiến thức cần thiết giúp em hồn thành đề tài. Quan trọng hơn, cô là người định hướng để em tiếp cận được với phương pháp nghiên cứu khoa học nói chung và phương pháp nghiên cứu thực hiện phân tích, thiết kế một ứng dụng thực tế. Qua đây em cũng xin được cảm ơn các thầy cô trong khoa CNTT đã tận tình dạy bảo em trong 5 năm học tại trường cùng các bạn sinh viên đã đóp góp những ý kiến quý báu cho chương trình. LỜI NÓI ĐẦU Từ khi xuất hiện cho đến nay, World Wide Web ngày càng trở nên phổ biến, là một phương tiện truy nhập mạng đơn giản và rất thân thiện với người sử dụng. Với các trang Web, người sử dụng có thể tìm kiếm và tải về rất nhiều thể loại hình thông tin trên mạng mà không cần phải có nhiều hiểu biết về mạng. Đứng trên quan điểm của người sử dụng, họ không cần quan tâm đến việc thông tin ...

docx70 trang | Chia sẻ: hunglv | Lượt xem: 1267 | Lượt tải: 0download
Bạn đang xem trước 20 trang mẫu tài liệu Đề tài Nghiên cứu về Web Caching, để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
Lời cảm ơn Em xin chân thành cảm ơn cô giáo Dỗn Hồ Liên là người đã trực tiếp hướng dẫn em trong quá trình thực hiện đồ án này. Cô đã nhiệt tình chỉ bảo, giải đáp mọi thắc mắc, cung cấp các kiến thức cần thiết giúp em hồn thành đề tài. Quan trọng hơn, cô là người định hướng để em tiếp cận được với phương pháp nghiên cứu khoa học nói chung và phương pháp nghiên cứu thực hiện phân tích, thiết kế một ứng dụng thực tế. Qua đây em cũng xin được cảm ơn các thầy cô trong khoa CNTT đã tận tình dạy bảo em trong 5 năm học tại trường cùng các bạn sinh viên đã đóp góp những ý kiến quý báu cho chương trình. LỜI NÓI ĐẦU Từ khi xuất hiện cho đến nay, World Wide Web ngày càng trở nên phổ biến, là một phương tiện truy nhập mạng đơn giản và rất thân thiện với người sử dụng. Với các trang Web, người sử dụng có thể tìm kiếm và tải về rất nhiều thể loại hình thông tin trên mạng mà không cần phải có nhiều hiểu biết về mạng. Đứng trên quan điểm của người sử dụng, họ không cần quan tâm đến việc thông tin mà họ tìm kiếm ở một hệ thống ngay bên cạnh hay ở một nơi ở đầu kia của quả đất. Chính điều này dẫn đến sự bùng nổ về lưu lượng trên các mạng đường trục khu vực. Việc sử dụng dịch vụ Web đang tǎng theo cấp số mũ, lưu lượng WWW trên các mạng Internet quốc gia và quốc tế cũng tǎng đột biến. Và Việt Nam cũng không thể nằm ngồi vòng xốy của cơn lốc WWW, các cổng giao tiếp điện tử, các hệ thống E-leanrning đang là những ứng dụng mới và đang được áp dụng ở Việt Nam. Các ứng dụng này trong tương lai sẽ càng phát triển mạnh hơn cùng sự phát triển của hạ tầng mạng máy tính và đòi hỏi tin học hố ngày càng cao của xã hội. Tuy nhiên để có được sự phát triển rộng rãi đó không phải là vấn đề đơn giản. Các hệ thống này càng phát triển thì người ta càng thấy thêm nhiều hạn chế, cản trở của cơ sở hạ tầng mạng cũng như các giải pháp sẵn có. Thứ nhất, mặc dù mạng máy tính đang ngày một phát triển nhưng với điều kiện của nước ta, cơ sở vật chất hạ tầng mạng máy tính vẫn còn rất thấp kém. Chất lượng dịch vụ và thời gian đáp ứng có thể được cải thiện bằng cách giảm tải cho mạng. Một cách để đạt được yêu cầu này là sử dụng kỹ thuật Web caching. Kĩ thuật Web Caching ra đời đã nâng cao được hiệu quả trong việc thực hiện tăng tốc các ứng dụng Web. Cùng với việc nghiên cứu về Web Caching, trong khuôn khổ đồ án tốt nghiệp này em cũng xây dựng một Website nhằm hỗ trợ cho các bạn học sinh, sinh viên những người quan tâm đến kiến thức về hạ tầng mạng cơ sở, nhằm đem lại một kiến thức tốt nhất trong việc xây dựng và bảo trì một hệ thống mạng máy tính. Đồ án của em sẽ trình bày lần lượt các khái niệm về Internet, cách thức hoạt động của một trang Web, tìm hiểu về Web Caching và sau đó là phân tích thiết kế và xây dựng hệ thống. Đồ án được chia làm 5 chương với nội dung chính như sau: Chương I : Tổng quan về Internet và Intranet Chương này sẽ đưa ra các khai niệm cơ bản về Internet, về Web và cách thức mà một trang Web hoạt động trên Internet Chương II : Tìm hiều về Web Caching Chương này sẽ đưa ra những khái niệm cơ bản của Web Caching. Giải pháp để tối ưu hố tốc độ duyệt Web và cách cài đặt Web Caching trên các máy Client Chương III :Tìm hiều ngôn ngữ ASP (Active server Page) Tìm hiểu công cụ ASP ngôn ngữ lập trình VB script để xây dựng hệ thống Chương IV : Phân tích và thiết kế hệ thống Đưa ra những phân tích về chức năng, thiết kế hệ thống cơ sở dữ liệu để có thể triển khai hệ thống. Chương V : Cài đặt và thử nghiệm Đưa ra được một số hình ảnh minh hoạ của hệ thống. CHƯƠNG I: TỔNG QUAN INTERNET - INTRANET I.1 Internet là gì ? Internet là một mạng máy tính tồn cầu sử dụng một ngôn ngữ truyền thông chung nó tương tự như một hệ thống điện thoại quốc tế nhưng nó được nối kết theo cách làm việc của một mạng lớn. World Wide Web (WWW) cho ta một hình ảnh dễ dàng giao tiếp và tìm kiếm dữ liệu trên Internet. Các dữ liệu này được liên kết với nhau thông qua trang Web. Các file, các trang được nối kết với nhau thông qua các mối liên kết là text hoặc hình ảnh được gọi là HyperLink. Các trang Web có thể chứa văn bản, hình ảnh, phim, âm thanh. Các trang này có thể được đặt trên một máy tính ở nơi nào đó trên thế giới. Khi ta nối kết tới Internet ta có thể truy xuất thông tin trên tồn cầu. HyperLink là các text hay hình ảnh mà được gắn địa chỉ Web trên đó. Bằng cách click vào hyperlink ta có thể nhảy tới một trang thành phần của một Web site. Mỗi một Web site có một trang chủ của Web site đó và có một địa chỉ duy nhất được gọi là Uniform Resource Locator (URL). URL xác định chính xác tên của máy tính và đường dẫn tới một trang Web xác định. I.2 Intranet là gì ? Intranet dựa vào TCP/IP Network nhưng không nối kết tới Internet mà chỉ sử dụng chuẩn truyền thông Internet và các công cụ của nó dùng để cung cấp thông tin tới người sử dụng trên một mạng riêng. Ví dụ một công ty có thể cài đặt một Web server chỉ cho các thành viên của công ty trao đổi thư từ tin tức,thông tin thương mại...Các thành viên truy xuất thông tin bằng cách dùng các Web browser. I.3 Internet Information Server là gì ? Internet Information Server (IIS) là một Web server cho phép ta công bố thông tin trên mạng Intranet hay Internet. Internet Information Server truyền tải thông tin bằng cách dùng Hypertext Transfer Protocol (HTTP), Internet Information Server cũng có thể dùng phương thức FTP hoặc Gopher. I.3.1 Internet Information Server làm việc như thế nào ? Web là một hệ thống yêu cầu (Request) và đáp ứng (Response). Web browser yêu cầu thông tin bằng cách gửi một URL tới Web server, Web server đáp ứng lại bằng cách trả lại một trang HTML cho Web browser. HTML có thể là một trang Web tĩnh được lưu sẵn ở trên Web server hoặc có thể là một trang Web động mà server tạo ra khi đáp ứng yêu cầu của người sử dụng hoặc là một trang ở thư mục nào đó trên server. I.4 Web Browser URL Request Mỗi trang Web trên Intranet hoặc Internet có một URL duy nhất. Web browser yêu cầu một trang bằng cách gửi một URL tới một Web server. Web server sử dụng thông tin trong URL để xác định và cho hiển thị trang Web theo yêu cầu của Browser. Cú pháp URL là một chuỗi văn bản tuần tự gồm có : Protocol, Domain Name, và đường dẫn (Path) tới thông tin yêu cầu. Protocol là chuẩn truyền thông dùng để truyền tải thông tin như là : HTP, FTP và Gopher. Domain Name chính là Domain Name System (DNS) của máy tính chứa thông tin. Path là đường dẫn tới thông tin yêu cầu trên máy tính.Ví dụ : Phương thức Tên Domain Đường dẫn (Path) Http:// www.microsoft.com /backoffice Https:// (secure HTTP) www.company.com /catalog/orders.htm Gopher:// gopher.college.edu /research/astronomy/index.htm ftp:// orion.bureau.gov /stars/alpha quadrant/starlist.txt Một URL cũng có thể chứa thông tin mà Web server cần phải xử lý trước khi trả lại một trang, dữ liệu trong URL được gắn thêm vào cuối đường dẫn. Web server gửi dữ liệu này tới một chương trìng hay một Scirpt để xử lý và trả lại kết quả trong một trang web.Ví dụ : Request Type URL Static HTML page ISAPI application Internet Database Connector Common Gateway Interface (CGI) script I.5 Web Server Response Web server đáp ứng yêu cầu của Web browser bằng cách trả lại một trang HTML. Trang trả lại có thể là trang HTML tĩnh, trang HTML động hoặc là trang trong danh sách thư mục. I.6 Trang HTML tĩnh (Static Page) Một trang HTML tĩnh là trang đã được chuẩn bị sẵn cho các yêu cầu nhất định và được đặt sẵn trên Web server. Người sử dụng yêu cầu một trang HTML tĩnh bằng cách gõ trực tiếp URL hoặc là Click vào Hyperlink của URL nào đó, URL được gửi tới server. Server đáp ứng bằng cách trả lại trang HTML tĩnh. I.7 Trang động (Dynamic Page) Các trang động được tạo ra trong quá trình đáp ứng cho yêu cầu của người sử dụng. Một Web browser thu thập thông tin bằng cách thực hiện một trang có các Textbox, Menu, Checkbox... cho phép người sử dụng điền vào hoặc lựa chọn. Khi người sử dụng click vào một nút (button) trên Form, dữ liệu từ Form được gửi tới Web server. Server đưa dữ liệu này tới một Script hoặc một trình ứng dụng để xử lý. Sau đó server gửi lại kết quả cho browser bằng một trang HTML. Ví dụ sau đây cho phép ngưới sử dụng gửi một yêu cầu tới một Internet Server API (ISAPI), ứng dụng này dùng để cộng 2 số. Ngưới sử dụng ngập 2 số được cộng sau đó click một button để gửi 2 số đó tới web server. Web server gọi một ISAPI để cộng 2 số, sau đó trả lại kết quả cho browser bằng một trang HTML. Minh họa sau đây cho phép người sử dụng truy cập vào database bằng cách dùng Internet Database Conector. Người sử dụng hồn thành một Form sau đó click vào một button để gửi dữ liệu tới server. Server nạp dữ liệu vào database sau đó trả lại một trang HTML kết quả cho browser. I.8 Sử dụng Internet Information Server như thế nào ? Internet Information Server đủ khả năng đáp ứng các chức năng quan trọng cho các tổ chức khác nhau. Chúng ta có thể sử dụng một Server cho một Web site hoặc cũng có thể sử dụng nhiều server cho một Web site. Một trong những nhân tố để xác định cấu hình Internet Information Server là nó được sử dụng bên trong nội bộ của một mạng Intranet hay nó được nối kết tới Intetnet. Các kịch bản sau đây giúp ta hiểu thêm phạm vi và khả năng sử dụng của Internet Information Server. I.9 Các kịch bản Intranet Trong một nhóm(Workgroup) ta có thể tích hợp Internet Information Server với một Server. Web server của Workgroup có khả năng tổ chức các loại trang web để đáp ứng cho các ứng dụng trong workgroup như là cho phép giao tiếp với Database SQL hay là cho phép truy xuất tài nguyên từ xa(Remote Access Service). Trong một mạng thương mại lớn có nhiều bộ phận (workgroup), mỗi bộ phận chạy Internet Information Server trên server của mình. Một server trung tâm được dùng để phối hợp và quản lý tất cả thông tin trên mạng. I.10 Các kịch bản Internet. Internet Information server có thể là một Web server đơn giản trên Internet như ví dụ minh họa sau đây Trong các Site lớn hơn, ta có thể cho phép các thành viên trong mạng truy xuất tới Web server và sử dụng các công cụ chế tác như FrontPage để chế tác nội dung cho Web server. Sự tích hợp Internet Information Server với Windows NT có thể tạo ra các server có nhiều chức năng. Ví dụ như một công ty có nhiều site khác nhau trên thế giới, có thể dùng Internet Information Server để truyền thông giữa các site này với nhau, và ta cũng có thể dùng RAS để cho phép truy cập tới Intranet hoặc Internet. Nhiều kịch bản nối kết tới Internet còn liên quan tới thành phần thứ ba là các Routersvà các thiết bị an ninh nằm giữa máy tính của ta và Internet dùng để lọc các gói(packets) thông tin gửi qua chúng. Các trường hợp này chưa được đề cập trong các kịch bản ở trên. CHƯƠNGII : TÌM HIỂU WEB CACHING II.1 Các thuật ngữ cơ bản Tuy nhiên trước khi đi vào các khái niệm về Web caching ta sẽ tìm hiểu một số thuật ngữ hay được dùng trong khi giải thích các khái niệm và nó cũng là những thuật ngữ chuẩn của Internet. II.1.1 Client – Server Đây là những khái niệm nền tảng để xây dựng nên một hệ thống ứng dụng Web. - Client: là các chương trình ứng dụng dùng để thiết lập kết nối với mục đích gửi đi các yêu cầu cung cấp dịch vụ. Đó là các trình duyệt Web, các trình biên tập (editor) hoặc các công cụ người sử dụng cuối khác. Các client thông dụng nhất thường chạy trên máy của người sử dụng cuối - Server: là chương trình ứng dụng dùng để chấp nhận kết nối với mục đích phục vụ các yêu cầu cung cấp dịch vụ bằng cách gửi các đáp ứng trở lại phía yêu cầu. Đối với các hệ thống cung cấp dịch vụ lớn, các chương trình này thường chạy trên các hệ thống phần cứng riêng và thường được phân biệt là phần cứng server và phần mềm server. Một máy chủ Web (Web server) thì quản lý và cung cấp việc truy cập tới một tập hợp các tài nguyên trên nó. Tài nguyên trên nó thì có thể đơn giản chỉ là các file văn bản, hình ảnh hoặc có thể là các dữ liệu phức tạp hơn chẳng hạn như các cơ sở dữ liệu. Trên nền tảng Web thì hầu hết các yêu cầu chủ yếu là các công việc download. Các máy client thì download thông tin từ server. Trong trường hợp này chính nó gửi thông tin yêu cầu chứa tên của tài nguyên cộng thêm với một vài thông tin từ phía client thì hồn tồn nhỏ (200 B) trong đó thông tin download về thì thường là các dữ liệu văn bản hoặc hình ảnh với kích thước trung bình khoảng 10000B. Đây chính là một trong những đặc điểm cơ bản của hệ thống Web. Tốc độ nhận dữ liệu bao giờ cũng cao hơn tốc độ truyền dữ liệu đi bởi vậy hầu hết người sử dụng Web thì thường xuyên nhận thông tin. Web client thường dùng được gọi là trình duyệt (browser). Những ứng dụng này chẳng hạn như là Nescape và Microsoft Internet Explore. Mục đích của những trình duyệt này là hiện thị nội dung của một trang Web Có một số lượng lớn các server được sử dụng rộng rãi trên Web. Apache HTTP server là một trong những server Web thông dụng và hồn tồn miễn phí. Netcape , Microsoft và các công ty khác cũng có một số các sản phẩm. Nhưng hầu hết tất cả các sản phẩm thì đều tập trung và hiệu năng của các server. Một site nổi tiếng trên Net thì có thể nhận 10 triệu yêu cầu một ngày. Trong trường hợp này thì cả phần cứng lẫn phần mềm đều phải được thiết kế một cách cẩn thận để có thể đáp ứng được nhiều yêu cầu một lúc như vậy. Có rất nhiều site chạy trên nhiều server song song với nhau để có thể đáp ứng được tỉ lệ cao các yêu cầu như vậy và còn phục vụ cho việc dự phòng. II.1.2 Proxy Một chương trình trung gian có thể hoạt động với vai trò của server hoặc của client nhằm mục đích thay mặt các client tạo ra các yêu cầu. Yêu cầu được phục vụ tại chỗ hoặc chuyển qua các proxy đến các server khác. Một proxy phải biết biên dịch và nếu cần có thể viết lại các thông điệp yêu cầu trước khi chuyển tiếp yêu cầu. Các proxy thường được sử dụng như các bộ đóng gói phía client qua các firewall của mạng và như các chương trình hỗ trợ để xử lý các yêu cầu thông qua các giao thức không được triển khai ở phía người sử dụng. II.1.3 Cache Một nơi lưu trữ tạm thời các bản tin đáp ứng của chương trình, một hệ thống phụ trợ điều khiển việc lưu trữ, cung cấp và huỷ các tài liệu. Cache lưu các bản tin đáp ứng có thuộc tính có thể lưu trữ được (cacheable) để giảm thời gian đáp ứng và bǎng thông tiêu thụ cho mỗi yêu cầu. Bất cứ client hay server nào đều có thể có cache. - Mạng lưới cache server (caching mesh): hệ thống các caching server phối hợp hoạt động với nhau. - Web cache server cục bộ (local cache): cache server chạy trên cùng một mạng LAN với client.s - Web cache server cấp một: Web cache server mà client của người sử dụng kết nối trực tiếp đến . Loại này gần giống loại cục bộ. - Web cache server cấp cao (upper-level cache hay entry cache): nhìn từ phía client, tất cả các cache tham gia vào mạng lưới caching không kết nối thẳng đến client là các cache server cấp cao. Trong các loại Web cache server cấp cao có loại Parent cache được kết nối trực tiếp đến Web server. Như vậy, trong một mạng lưới thì tên của các Web cache chỉ mang tính chất tương đối. II.1.4 Các đối tượng Web( Web Object) “Đối tượng” ở đây có thể được hiểu là các loại dữ liệu khác nhau trên server chẳng hạn như file audio, file Zip,.. Đối tượng Web thì có một số các đặc điểm quan trọng như kích thước, kiểu file (HTML, image, audio..), thời gian tạo ra file, thời gian chỉnh sửa gần nhất. II.1.5 Nhận biết tài nguyên (Resource Indentifier) Nhận biết tài nguyên cũng là một trong những khái niệm cơ bản của kiến trúc Web. Đó có thể là tên hay địa chỉ của một đối tượng Web. Nó cũng giống như là địa chỉ của một con đường hay số điện thoại. Thông thường thì người ta hay gọi là Universal Resource Identifiers (URI). Chúng thì thường được sử dụng cho cả người và máy tính.Caches thì thường được sử dụng để nhận biết chúng. Uniform Resource Locators (URLs) là một dạng thông dụng của URI. Dưới đây là một vài ví dụ vể URLs ftp://ftp.freebsd.org/pub/FreeBSD/README.TXT II.1.6 Các giao thức truyền Web Cả Client và Server thì thường sử dụng các giao thức vận chuyển khác nhau để trao đổi thông tin cho nhau.Các giao thức trên được xây dựng chủ yến dựa trên giao thức TCP/IP. The Hypertext Transfer Protocol (HTTP) là một trong những giao thức phổ biến nhất hiện nay bởi vì chúng được thiết kế cho Web. Một trong số những giao thức khác như File Tranfer Protocol (FTP) hay Gopher thì vẫn được sử dụng cho đến ngày nay. Ngồi ra một số giao thức mới xuất hiện gần đây như Secure Sockét Layer (SSL) hay Real-time Transport Protocol (RTP) cũng thường xuyên được sử dụng . II.2 Định nghĩa Web Caching Kỹ thuật Web Caching chính là việc chuyển bản copy của các tài liệu Web từ Web server đến gần với Web client hơn. Nhìn chung, người sử dụng Web client sẽ chỉ nhận thấy độ trễ rất thấp khi yêu cầu một URL, phía nhà quản lý mạng sẽ nhận thấy ít lưu lượng hơn và các Web server có số lượng các yêu cầu cung cấp dịch vụ thấp hơn. Web client yêu cầu tài liệu từ Web server hoặc trực tiếp hoặc thông qua Web cache server hay proxy. Web cache server có chức nǎng như Web server khi nhìn từ phía client và có chức nǎng như client khi nhìn từ phía Web server. Chức nǎng của Web cache server là lưu trữ các tài liệu Web (có thể là các trang HTML, các hình ảnh hoặc các tệp tin) tại vị trí gần với người sử dụng để tránh phải chuyển về nhiều lần cùng một tài liệu qua cùng một kết nối và do đó làm giảm thời gian tải về và tạo ra ít tải hơn trên các server đầu xa II.3 Tại sao phải sử dụng Cache đối với Web ? Đơn giản vì nó tiết kiệm được thời gian cho người duyệt Web. Nó cung cấp một cách hiệu quả khả năng phân bổ thông tin trên Web. Chúng ta hãy xem xét một ví dụ thực tế về việc phân bổ sách. Chúng ta hãy suy nghĩ làm sao các cuốn sách được phân bố tới tay của những độc giả ? Các nhà xuất bản in những cuốn sách và bán chúng với số lượng lớn tới các nhà bán buôn. Các nhà bán buôn thì lại bán các cuốn sách với số lượng nhỏ hơn tới các cửa hàng sách. Độc giả có thể đến các cửa hàng sách và mua các cuốn sách đó. Trên internet thì Web caches cũng hoạt động tương tự như các cửa hàng sách và các nhà phân phối. 3 lợi ích chính của Web caching + Làm cho trang Web được load nhanh hơn (giảm thời gian trễ) + Giảm băng thông sử dụng + Giảm số lần truy cập lại trên server gốc II.3.1 Thời gian trễ Thời gian trễ chính là khoảng thời gian mà dữ liệu được chuyển từ nơi này đến nơi khác. Một nguồn gốc khác của việc trễ mạng chính là ngẽn mạng. Khi các đường kết nối đã được sử dụng tối đa thì các gói tin sẽ được xếp hàng trong các Router hay Switch. Khi các gói tin đã được xếp đầy trong hàng đợi thì nó sẽ loại bỏ tất các các gói tin tiếp theo đến. Với những giao thức tin cậy như TCP/IP việc mất gói tin thì tương đương với việc truyền lại gói tin. Vì vậy việc truyền lại sẽ gây mất rất nhiều thời gian, làm giảm tốc độ của mạng trong việc truyền tin. II.3.2 Băng thông Băng thông chính là dung lượng đường truyền mà dữ liệu đi qua. Với mỗi yêu cầu mà dữ liệu là kết quả trong web caching thì nó sẽ tiết kiệm được băng thông. Khi đó sẽ không tốn băng thông để dữ liệu truyền từ máy server gốc mà nó lấy luôn dữ liệu trong cache. Web cache thì giảm băng thông sử dụng bởi các luồng dữ liệu HTTP. Điều này có thể nói là web cache làm tăng hiệu quả của băng thông. Nếu một mạng hỗ trơ 100 người dùng khi không có web cache thì sẽ hỗ trợ được 150 người dùng khi có web cache. II.3.3 Server Load Cũng giống như việc giảm băng thông thì việc giảm thời gian khi sử dụng server gốc. Các server thì đáp ứng liên tục các yêu cầu từ phía các client. Một server rỗi thì chắc chắn sẽ nhanh hơn so với server bận. Vì vậy chiến lược ở đây là sử dụng Web caching để giảm thời gian load dữ liệu của các hệ thống server. II.4 Phân loại Web caching Nội dung của một trang Web thì có thể được lưu trữ ở nhiều vị trí khác nhau dọc theo các đường dẫn giữa các client và các server gốc. Đầu tiên các trình duyệt cũng tự mình xây dựng hệ thống cache trong nó. Người ta gọi nó là Browser caches. Tiếp theo là caching proxy (proxy cache) kết hợp tất cả các yêu cầu của các client thành một nhóm.Cuối cùng một hệ thống đại diện có thể được đặt tại đầu các server gốc để lưu trữ những đáp ứng thường xuyên. II.4.1 Browser Caches (Client Cache) Các trình duyệt thì cũng xây dựng trong nó hệ thống cache. Mỗi khi ta nhấn nút Back trên trình duyệt thì nó đọc lại cho ta trang ta vừa xem trong cache của nó. Đối tượng cache có thể là các file tạm thời trên đĩa hoặc có thể là trong bộ nhớ trong. Trong khi trình duyêt Web Netscape yêu cầu bạn phải xác định xem không gian đĩa dành cho caching là bao nhiêu. Microsoft thì yêu cầu bạn cần phải điều khiển kích thước cache dành cho đĩa của bạn là bao nhiêu. Thông thường thì ta thường sử dụng 10-100 MB không gian đĩa cứng dành cho Browser cache. II.4.2 Caching Proxy (Server Cache) Loại cache này nằm trên một server trong mạng lưới gồm nhiều client và nhiều server. Thông thường, nó không nằm trong cùng một hệ thống chạy một loại Web client hay một HTTP server nào đó. Không giống như Browser caches, dịch vụ cache này có thể phục vụ nhiều user cùng một lúc. Khi có nhiều người cùng tới thăm một website tại một thời điểm thì caching proxies thường được sử dụng hơn Browser cache. Caching proxies thì cần thiết đối với rất nhiều tổ chức như các nhà cung cấp dịch vụ Web, các tổng công ty lớn, các trường đại học, viện nghiên cứu. Caching Proxies thì thường được đặt ở các gateway (như router) hay nói một cách khác thì nó thường được sử dụng để có thể phục vụ một số lượng người lớn nhất. II.5 Web caching hoạt động như thế nào ? Tất cả các hệ thống cache đều sử dụng một bộ nguyên tắc để xác định thời điểm cung cấp các đối tượng (hay các tài liệu Web), tất nhiên là với điều kiện các đối tượng đó đã được lưu trong cache. Trường hợp các đối tượng được yêu cầu chưa được lưu sẵn trong cache thì cache server sẽ gửi yêu cầu đó đến server gốc. Một số nguyên tắc được thiết lập trong các giao thức HTTP/1.0, HTTP/1.1 và một số khác được thiết lập bởi những người quản trị cache (có thể là người sử dụng browser cache hoặc người quản trị proxy). II.5.1 Các nguyên tắc chung + Nếu phần tiêu đề của đối tượng cho cache biết không phải lưu đối tượng thì cache không lưu đối tượng đó. Nếu biến logic xác nhận (biến validator) không xuất hiện, phần lớn các cache sẽ đánh dấu đối tượng là không thể lưu (uncacheable). + Nếu đối tượng có yêu cầu nhận thực hay bảo mật, nó sẽ được lưu. + Một đối tượng được lưu được coi là còn tươi - "fresh" (có nghĩa là có thể được gửi tới client mà không cần sự kiểm tra của server gốc) - Nó có thời gian tồn tại (hoạt động theo dạng một loại bộ đếm) còn nằm trong khoảng thời gian fresh (chưa quá hạn) - Nếu một browser cache đã từng hiển thị đối tượng và đối tượng này đã được đánh dấu là đã kiểm tra trong một phiên trước đó. - Nếu proxy cache mới xử lý nó gần đây và nó đã được sửa đổi trước đó tương đối lâu. Các đối tượng fresh được lấy trực tiếp từ cache mà không cần kiểm tra với server gốc. +Nếu một đối tượng được coi là cũ, server gốc sẽ được yêu cầu xác nhận đối tượng hoặc báo cho cache rằng đối tượng đó vẫn còn giá trị sử dụng. Quá trình xác nhận và kiểm tra xem đặc tính "fresh" của đối tượng là những biện pháp quan trọng giúp cache làm việc với các đối tượng. Một đối tượng "mới" sẽ khả dụng tức thời từ cache, trong khi một đối tượng "phải xác nhận" (validated) sẽ tránh phải gửi lại một lần nữa từ server gốc nếu nó không có gì thay đổi. II.5.1.1 HTTP requests Client thì luôn sử dụng HTTP khi chúng giao tiếp với proxy. Điều này cũng đúng khi client yêu cầu một FTP hoăc Gopher URL. Client sẽ đưa ra những yêu cầu không khác nhau là mấy đối với proxy server cũng như đối với server gốc. Trong trường hợp này thì các yêu cầu được tham chiếu tới proxy được xem như là yêu cầu proxy HTTP. II.5.1.2 Yêu cầu đối với server gốc Trước tiên ta hãy xem một yêu cầu được gửi đến cho server gốc. Giả sử ta yêu cầu một URL như sau: . Khi Client mà không cấu hình sử dụng proxy thì nó sẽ kết nối trực tiếp tới server gốc (www.nlanr.net) để gửi yêu cầu này. GET /index.html HTTP/1.1 Host: www.nlanr.net Accept: */* Connection: Keep-alive Trong thực tế thì yêu cầu này gồm nhiều header hơn so với những gì đã đưa ra ở trên đây. Ở đây ta thấy rằng URL đã được chia làm 2 phần. Dòng request line(dòng đầu) chỉ bao gồm thành phần tên của URL. Trong đó phần hostname được xuất hiện trong phần Host header. Host header là một đặc điểm của HTTP/1.1, nó hỗ trợ hosting ảo, hay nhiều website logic trên một server vật lý(một địa chỉ IP). Nếu server gốckhông hỗ trợ domain ảo thì Host header dùng để làm dự trữ. II.5.1.3 Yêu cầu Proxy Khi Client giao tiếp với proxy, các yêu cầu cũng không có sự khác biệt so với server gốc. Tuy nhiên dòng yêu cầu proxy sẽ bao gồm một URL đầy đủ. GET HTTP/1.1 Host: www.nlanr.net Accept: */* Proxy-connection: Keep-alive HTTP đưa ra một sự thật là: yêu cầu và đáp ứng có thể được đưa qua một số các proxies giứa Client và Server gốc. Một số HTTP header được định nghĩa như là end to end(điêm cuối tới điểm cuối) và một số như là hop to hop(điểm tới điểm). End to end header thì vận chuyển thông tin tới các hệ thống cuối(Client và Server gốc), và bình thường thì nó không phải được chỉnh sửa bới proxies Cookie header cũng là end to end. Ngược lại thông tin trong hop to hop header có nghĩa là dành cho các hệ thống trung gian và nó phải được chỉnh sửa hay di chuyển trước khi được chúng được đưa đến vị trí mới. Proxy- connection và proxy- authorization header ở dạng hop to hop. Một Client sử dụng Proxy – connection header để hỏi proxy làm cho TCP kết nối một cách liên tục bởi vậy chúng được sử dụng lại để cho các yêu cầu khác trong tương lai. Proxy –authorization header chứa sự ủy nhiệm để có thể truy cập vào proxy, không phải server gốc. II.5.1.4 Yêu cầu không phải là HTTP Proxy. Cuối cùng chúng ta thử xem proxies đối xử với các yêu cầu không phải là HTTP như thế nào. Đối với các Client thì chúng luôn hỗ trợ các giao thức khác HTTP như là FTP, HTTPS điều này có nghĩa là chúng chúng luôn biết cách giao tiếp trực tiếp với các FTP server như thế nào. Tuy nhiên hầu hết các caching proxy không đế ý về FTP server, chính vì vậy bạn không thể đặt FTP vào trong caching proxy. II.5.2 Khả năng lưu trữ Mục đích chính của cache chính là lưu trữ một số các đáp ứng nó nhận được từ server gốc. Một đáp ứng được gọi là đã được lưu trữ có nghĩa là nó có thể được sử dụng để đáp ứng được những yêu cầu trong tương lai. Với các luồng dữ liệu yêu cầu thì khoảng 75% các đáp ứng được lưu trữ. Cache quyết định lưu trữ bằng việc xem xét các thành phần khác nhau của yêu cầu và đáp ứng. Nó có thể kiểm tra các thông tin sau: + Đáp ứng về bảo mật + Các phương thức yêu cầu + Đáp ứng Cache-control trực tiếp + Các đáp ứng xác thực + Các yêu cầu kiểm tra tính xác thực II.5.2.1 Bảo mật Một trong những nhân tố để xác định xem có thể lưu trữ đó các đáp ứng về bảo mật. Ba kí tự chỉ trạng thái bảo mật cho tao biết yêu cầu có được đáp ứng thành công hay không hay có lỗi xảy ra trong quá trình đáp ứng yêu cầu. Trạng thái bảo mật chia thành 5 nhóm 1XX: Thông tin quá trình giao dịch đang được tiến hành 2XX: Yêu cầu đã được nhận và đang được xử lý 3XX: Server đang hướng Client tới một vị trí khác 4XX: Có một lỗi xảy ra với yêu cầu của client.. Ví dụ như Authentication được yêu cầu, hay tài nguyên yêu cầu không tồn tại 5XX: Một lỗi xảy ra trên server đối với một yêu cầu của Client Trạng thái mã hóa thông dụng nhất là mã 200. Trạng thái này có nghĩa là yêu cầu đã được đáp ứng thành công. II.5.2.2 Các phương thức yêu cầu: Ngồi các nhân tố khác để xác định có thể được lưu trữ đó là các phương thức yêu cầu. Bảng dưới đây có thể chi ra một vài phương thức và khả năng lưu trữ của chúng. Phương thức yêu cầu Khả năng lưu trữ GET Mặc định được lưu trữ HEAD Có thể được sử dụng để cập nhật các thông tin lưu trữ trước POST Mặc đinh là không lưu; Nhưng sẽ lưu nếu Cache-control headers cho phép PUT Không bao giờ lưu trữ DELETE Không bao giờ lưu trữ OPTIONS Không bao giờ lưu trữ TRACE Không bao giờ lưu trữ Ta có thể nhận thấy GET là phương thức yêu cầu phổ biến nhất và đáp ứng cho yêu cầu GET thì mặc định sẽ được lưu trữ trong cache. Trong khi đó khi phương thức yêu cầu là POST thì nó chỉ có thể được lưu trữ khi trong đáp ứng của nó gồm cả thời gian hết hạn và cho phép Cache-control thay thế giá trị mặc định. Nhưng trong thực tế thì ít khi yêu cầu POST được lưu trữ. II.5.2.3 Thời gian kết thúc và tính xác thực HTTP/1.1 cung cấp cả hai cách để có thể duy trì liên kết với server gốc. Hạn thời gian và biến xác thực(validators). Cả hai cách này đều chắc chắn rằng người sử dụng có thể được nhận những thông tin cập nhật nhất. Một số Website thì gửi những thông tin pre-expired. Điều này có nghĩa là cache phải kiểm tra thời gian của đáp ứng với yêu cầu tiếp theo của một số người sử dụng. Pre-expiration thì thường được sử dụng cho server gốc mà nó muốn không nhận thấy đấu vết truy cập đến site của họ nhưng lại muốn nội dung vẫn được lưu trữ. Có hai cách để sử dụng pre-expire đó là thiết lập Expires header bằng với Date header. Ví dụ Date: Sun, 01 Apr 2001 18:32:48 GMT Expires: Sun, 01 Apr 2001 18:32:48 GMT Một cách khác là ta có thể gửi một giá trị ngày hợp lý hay giá trị “0” Expires: 0 II.5.3 Cache-Hits, Cache-Misses Khi Cache nhận được một yêu cầu thì nó sẽ kiểm tra xem nếu đáp ứng cho yêu cầu này đã được lưu trữ hay chưa ? Nếu đáp ứng chưa được lưu trữ thì nó tiếp tục chuyển yêu cầu này đến cho server gốc. Khi một yêu cầu chưa được thực hiện trước đó bao giờ thì ta gọi đó là Cache-misses, đối tượng chưa được lưu trữ. Hoặc đối tượng có thể đã bị xóa để dành chỗ cho một đối tượng mới. Có đến 50-70% các yêu cầu là cache-misses Nếu một đối tượng được đưa ra thì ta gọi đó là cache-hits. Tuy nhiên cache phải quyết định xem lưu trữ đáp ứng là mới hay là đã lâu rồi. Một đáp ứng là mới nếu như thời gian hết hạn không được tìm thấy ngược lại nó là cũ. Một đáp ứng mới là tốt nhất vì chúng đưa tới cho client một cách ngay lập tức. Vì vậy chúngkhông có thời gian trễ và không tốn băng thông tới server gốc. Chúng ta gọi chúng là unvalidated hits.Ngược lại đối với những đáp ứng cũ thì chúng cũng phải yêu cầu kiểm tra đối với server gốc Mục đích của việc kiểm tra là đưa yêu cầu lên tới server gốc nếu các đáp ứng vẫn còn giá trị. Nếu tài nguyên đã thay đổi thì chúng ta sẽ không muốn client nhận những đáp ứng cũ. HTTP gọi chúng là những yêu cầu điều kiện (conditional requests). Đáp ứng lại những yêu cầu điều kiện hoặc là một thông điệp “Not Modified” hoặc tồn bộ một đáp ứng mới. Nhưng làm thế nào để có thể biết đó là một đáp ứng mới hay đáp ứng cũ. HTTP/1.1 cung cấp cho ta hai cách để có thể xác định được đólà dựa vào expires header và max-age cache control. Giá trị expires header chính là ngày và giờ mà tại đó nó trở thành đáp ứng cũ. Ví dụ Date: Mon, 19 Feb 2001 01:46:17 GMT Còn giá trị max-age thì chỉ dẫn cho ta biết số giây mà đáp ứng còn được xem như là mới. Ví dụ Cache-control: max-age=21600 Tình trạng này cho ta biết đáp ứng này còn đựoc coi là mới trong vòng 6h đồng hồ kể từ khi nó được sinh ra. II.5.4 Quá trình kiểm tra. Ở phần trên thì chúng ta đã nghiên cứu quá trình kiểm tra của cache trong các trạng thái là cache hits hay cache-misses. Ngay sau khi nhận được một yêu cầu về một đối tượng, thì cache sẽ tiến hành xác định tính hợp lệ đối với server gốc. Nếu như đối tượng được lưu vẫn còn hợp lệ thì server sẽ trả lời lại bằng một thông điệp ngắn HTTP 304 (Not modifed). Nếu không thì tồn bộ đối tượng sẽ được gửi đi. HTTP /1.1 cung cấp hai kĩ thuật để ta có thể kiểm tra đó là xác định thời điểm cuối cùng đối tượng thay đổi last-modified và E Tag (entity Tags header). II.5.4.1 Last-modified Hầu hết các đáp ứng HTTP thì bao gồm last-modified header để xác định thời gian khi đối tượng tài nguyên có sự thay đổi lần cuối cùng trên server gốc. Last-Modified thì đưa ra thời gian GMT (Greenwich Mean Time) với đơn vị nhỏ nhất là giây. Ví dụ HTTP/1.1 200 OK Date: Sun, 04 Mar 2001 03:57:45 GMT Last-Modified: Fri, 02 Mar 2001 04:09:20 GMT Khi cache xác định tính hợp lệ của đối tượng thì nó cũng gửi If-modified-since header của yêu cầu điều kiện GET GET HTTP/1.1 If-Modified-Since: Wed, 14 Feb 2001 15:35:26 GMT Nếu server đưa trả về là đáp ứng 304(not modified ) thì đối tượng trong cache vẫn hợp lệ và trong trường hợp này thì cache phải cập nhật đối tượng để có thể tham chiếu tới tất cả các đáp ứng mới của HTTP header chẳng hạn như Date hay Expires. Nếu server không trả lại đáp ứng là 304 thì cache sẽ xem xét đáp ứng từ server như một nội dung mới thay thế và đối tượng đó và phân phối đến các client. II.5.4.2 Entity Tags HTTP /1.1 cung cấp một cách khác để có thể kiểm tra đó là E-tag (Entity tags). Một E-tags như là một chuỗi ngẫu nhiên dùng để nhận dạng một thể hiện của đối tượng. Ví dụ HTTP/1.1 200 OK ETag: "8cac4-276e-35b36b6a" Cache sẽ sử dụng E-tags để xác nhận tính hợp lệ của đối tượng với yêu cầu If-none-match header GET /index.html HTTP/1.1 If-None-Match: "8cac4-276e-35b36b6a" Ngay khi nhận được yêu cầu server gốc sx kiểm tra dữ liệu của đối tượng. Nếu E-tags (8cac4-276e-35b36b6a) vẫn còn hợp lệ thì server sẽ trả về thông báo 304(Not modified). Ngược lại thì server sẽ bỏ qua If-none-match header và tiến hành xử lý yêu cầu như bình thường. Và cũng như mọi lần nó sẽ trả về thông báo 200 với một đối tượng mới, hay cập nhật nội dung. II.5.5 Thay thế trong cache Cache sẽ tiến hành thay thế nếu nó bị đầy và khi đó các đối tượng cũ sẽ bị xóa đi để nhường chỗ cho những đối tượng mới. Thường thì Cache sẽ gán một vài giá trị cho mỗi đối tượng. Thường thì các giá trị của đối tượng sẽ liên quan đến khả năng nó có thể được yêu cầu lại một lần nữa. Caching đã nghiên cứu, phát triển và đưa ra một số đề nghị về các giải thuật thay thế trong Cache. II.5.5.1 Giá trị ít sử dụng gần đây nhất (Least Recently Used)(LRU) LRU là một trong những giải thuật hayd được sử dụng bởi web caches. Giải thuật này hồn tồn đơn giản và đễ thực hiện. Nó đưa ra được hiểu quả tốt trong mọi hồn cảnh. Như tên của nó đã nói, LRU sẽ xóa bỏ những đối tượng mà nó không được truy cập trong thời gian nhiều nhất. Giải thuật này có thể được tiến hành trên những danh sách đơn giản. Tại mỗi thời điểm khi đối tượng được truy cập nó sẽ được di chuyển đến đầu danh sách. Và khi đó đối tượng ít được sử dụng nhất sẽ chắc chắn tự động di chuyển xuống cuối danh sách. Tuy nhiên vấn đề của giải thuật này chính là nó không quan tâm tới kích thước của đối tượng. Bạn muốn lưu một đối tượng với kích thước lớn hay nhiều đối tượng với kích thước nhỏ. Câu trả lời này có lẽ tùy thuộc vào sự tối ưu của người quản trị. Nếu cần tiết kiệm băng thông thì bạn sẽ muốn một đối tượng có kích thước lớn còn nếu bạn giảm số lần truy cập đến server gốc thì các đối tượng có kích thước nhỏ lại là sự lựa chọn trong trường hợp này. II.5.5.2 First In, First Out (FIFO) FIFO là một giải thuật thậm chí còn đơn giản hơn cả LRU. Đối tượng ở đây thì cùng một cấp bậc sau khi thêm vào. Giải thuật này không quan tâm đến sự phổ biến của các đối tượng. FIFO thì ít được sử dụng nếu có thì nó được sử dụng cho cache proxies. II.5.5.3 Đối tượng ít được sử dụng (Least Frequently Used)(LFU) LFU thì cũng tương tự như LRU, nhưng thay vì việc chọn lựa dựa trên yếu tố thời gian truy cập thì dấu hiệu nhận biết đối với giải thuật này là số lần truy cập. LFU sẽ thay thế những đối tượng mà số lần truy cập ít và giữ lại những đối tượng mà có số lần truy cập thường xuyên. LFU cũng thỉnh thoảng được sử dụng trong các sản phẩm nhưng chúng cũng ít được sử dụng thường xuyên. II.5.5.4 Kích thước Giải thuật dựa trên kích thước sử dụng kích thước của đối tượng như một đặc điểm chính để làm tiêu chí xóa bỏ đối tượng. Đối tượng với kích thước lớn nhất sẽ bị xóa bỏ đầu tiên. Giải thuật này thực sự là một kĩ thuật cũ. Khi đó trong Cache sẽ lưu lại những đối tượng có kích thước nhỏ khi đó thì số lần truy cập tới server gốc để kiểm tra sẽ tăng lên và khi đó sẽ làm hao tổn băng thông của đường truyền. Tuy nhiên hiện nay thì các chương trình sử dụng Web caching đều sử dụng giải thuật kết hợp các giải thuật ở trên. Vì vậy quá trình xử lý sẽ trở nên linh hoạt và hợp lý hơn. II.6 Sự kế thừa của các Cache. Khi ta sử dụng một Web caching thì có thể có nhiều giới hạn về bộ nhớ chính vì vậy việc kế thừa cache là một trong những điều mà ta mong đợi. Sự sắp xếp các Caches để một cái này có thể liên kết được với những cái khác. Trong mô hình thừa kế Caches, lớp thấp nhất sẽ chuyển những cache-misses lên những lớp cao hơn cho đến khi cache-hits được tìm thấy hoặc yêu cầu có thể chuyển đến server gốc. Việc kế thừa Cache thì rất được quan tâm vì khi đó nó có thể cải tiến hiệu năng làm việc của hệ thống Web. Một số yêu cầu không có trong cache này thì sẽ được tìm thấy trong cache của hàng xóm của chúng. Điều này sẽ giảm băng thông trên các đường truyền WAN và tăng tốc độ download II.6.1 Cache kế thừa hoạt động như thế nào Web cache có thể trở lên phức tạp hoặc không định hình được. Chúng ta sẽ sử dụng các thuật ngữ như cha (parent), con (child), anh chi em ruột (sibling) để mô tả mối quan hệ giữa hai cache bất kỳ với nhau. Một cache con thì sẽ gửi những cache-misses lên cho những cache cha của nó. Cache cha sau đó sẽ cung cấp cho con của nó những thông tin đáp ứng từ cache mà nó sở hữu hay server gốc, hay từ một cache khác. Cache cha có thể sử dụng băng thông tới server gốc để đáp ứng những yêu cầu từ cache con của nó. Hình vẽ dưới đây minh họa về một cache thừa kế II.6.2 Các lợi ích của kế thừa Cache II.6.2.1 Hiệu năng Hiệu năng thì luôn làm cho mọi người muốn gia nhập vào hệ thống kế thừa. Tuy nhiên hệ thống caching kế thừa không phải là điều thần kì, nó không đảm bảo được chắc chắn hệ thống sẽ cải thiện được hiệu năng. Nếu bạn muốn tìm kiếm hiệu năng tốt hơn thì bạn phải quyết định điều gì là quan trọng đối với bạn. Giảm băng thông ? Giảm độ trễ. Bạn nên tạo ra một hệ thống cho việc giám sát hệ thống hiệu năng Cache của bạn. Vậy để có một hệ thống hoạt động tốt thì cần chú ý những điểm sau: + Một số đối tượng không tìm thấy trong cache của nó nhưng sẽ được tìm thấy trong cache của hàng xóm của nó. Hay nói cách khác là bạn có thể nhận được cache-hits từ cache hàng xóm + Cache-hits từ cache hàng xóm thì được phân bố nhanh hơn so với cache-misses ở server gốc + Cache misses từ cache cha thì chậm hơn so với đáp ứng từ phía server gốc. Nếu một trong các điều kiện trên đây không thoả mãn thì hiệu năng hoạt động cache của bạn sẽ bị ảnh hưởng. tuy nhiên chúng hoạt động đúng hay sai còn ảnh hưởng của rất nhiều các nhân tố. Ví dụ như nếu cache tìm kiếm một cách chậm chạp thì nó có thể chậm hơn so với kết nối trực tiếp đến server gốc. Và các hành vi của chúng cũng có thể thay đổi theo thời gian, một ngày nào đó cache cha hoạt động rất nhanh nhưng những ngày tiếp theo nó lại hoạt động một cách chậm chạp II.6.2.2 Thay đổi quá trình định tuyến mặc định Cache cha thì rất hữu ích khi bạn cần tăng tốc một luồng dữ liệu web. Một ví dụ là việc vượt qua Filewall. Đối với các tổ chức thì việc sử dụng filewall để bảo vệ mạng nội bộ của họ. Có rất nhiều cách để triển khai một filewall. Một số thì ngăn chặn không cho người sử dụng có thể kết nối trực tiếp với các server bên ngồi. Họ khố tất cả các đường kết nối đi ra cho tất cả các cổng bao gồm cả cổng HTTP(port 80). Trong trường hợp này chỉ có một cách để có thể vượt ra server bên ngồi là thông qua filewall proxy, mà ở đó có thể đã được đặt cache. Nếu bạn có một caching proxy trong mạng nội bộ của bạn thì filewall proxy là cache cha của tất cả các yêu cầu của bạn để ra bên ngồi. II.7 Cách cấu hình trên các máy Client Có hai kĩ thuật mà bạn có thể sử dụng trong việc cấu hình cho các Client. Một trong những kĩ thuật cũ đó là cấu hình bằng tay (manual configuration). Client sẽ được đưa ra một hay nhiều địa chỉ proxy để sử dụng. Và kĩ thuật thứ 2 được đưa ra bởi hàng Netscape đó là cấu hình proxy tự động(proxy auto configuration). Đối với cách cấu hình này thì trình duyệt sẽ tự động thi hành một đoạn lệnh Java Script trước mỗi yêu cầu. Đoạn Script sẽ đưa về cho trình duyệt một danh sách các địa chỉ proxy mà ở đó có thể chuyển các yêu cầu đi. Cấu hình tự động sẽ tăng cường kiểm sốt lỗi hơn so với cách cấu hình bằng tay. Ví dụ như nếu trình duyệt sử dụng proxy đầu tiên trongdanh sách mà sau đó nó bị hỏng thì cái tiếp theo trong danh sách sẽ được sử dụng. Mặc dù cấu hình tự động thì mềm dẻo hơn, nó yêu cầu user phải có địa chỉ của file Java Script. Để có thể loại trừ được bước này một số công ty đã đề nghị sử dụng một giao thức đó là web proxy auto-discovery. Khi ta khởi động một trình duyệt thì nó sẽ sử dụng DHCP(Dynamic Host Configuration Protocol) và DNS(Domain Name System) để xác định proxy auto-configuration script. Nếu nó tìm thấy thì nó sẽ tự động ghi lại kết quả của script đó là bắt đầu sử dụng caching proxy. II.7.1 Proxy Addresses Cũng như tất cả các dịch vụ Internet khác như mail hay FTP thì proxy server như là một địa chỉ bao gồm cả địa chỉ IP và số cổng (port number). Tuy nhiên không giống những dịch vụ khác proxies thì không có cổng mặc định. Vì thế ta có thể nói là “kếtnối đến FTP server tại ftp.isp.net ” chứ không nói rằng “sử dụng proxy tại proxy.isp.net ”. Một địa chỉ proxy thì luôn đi kèm với cổng của nó. Vì vậy theo mặc định thì ta có thể viết đồng thời chúng sau dấu hai chấm. Ví dụ 172.16.4.1:8080 squid.ircache.net:3128 proxy1.bigisp.net:80 Mặc dù nó không có cổng mặc định nhưng hầu hết các proxies sử dụng các port sau: 3128,8080,80 hoặc 1080. Ngày nay thì hầu hết các Web caches thì có thể lắng nghe các yêu cầu trên nhiều cổng tại một thời điểm. Vì vậy có thể đáp ứng được tốt hơn các yêu cầu của người dùng. Sau đây ta sẽ nghiên cứu cách cấu hình bằng tay đối với một Client. II.7.2 Cấu hình bằng tay Như trên ta đã đưa ra việc cấu hình bằng tay đơn giản là thiết lập một địa chỉ proxy cho một hoặc nhiều giao thức kết nối như HTTp, FTP, SSL. Thông thường thì một proxy thì hỗ trợ tất cả bởi vây cùng một địa chỉ Proxy được sử dụng cho tất cả các giao thức. Tuỳ thuộc vào mục đích sử dụng proxy của bạn mà ban có thể cần hay không cần cấu hình các protocol. Nếu bạn sử dụng ở sau filewall thì bạn nó sẽ yêu cầu proxy cho tất các các yêu cầu của bạn. Tuy nhiên cấu hình bằng tay thì cũng có một số nhược điểm. Nó sẽ yêu cầu bạn sử dụng để cấu hình cho một số lượng lớn, ngồi ra đối với những người dùng thông thương thì yêu cầu một cách trong sáng và rõ ràng. Cộng thêm bạn phải cung cấp những cho những trình duyệt khác nhau và các phiên bản khác nhau của cùng một trình duyệt. Khi một proxy bị lỗi thì trình duyệt sẽ không thử kết nối trực tiếp hay sử dụng một proxy khác. Đó là những yếu điểm của việc cấu hình bằng tay. Say đây ta sẽ cấu hình mẫu trong một trình duyệt thông dụng nhất hiện nay đó là Internet Explore. II.7.2.1 Cấu hình Microsoft Internet Explore Để cấu hình cho trình duyệt này bạn chọn menu Tool sau đó chọn Internet Options, ta sẽ thấy có 7 tab, chọn Tab connection Chọn LAN Settings để cấu hình cho proxy, tại đây một cửa sổ xuất hiện sau đó bạn thiết lập địa chỉ proxy và cổng của nó như hình dưới đây. Nếu bạn muốn sử dụng nhiều proxy khác nhau cho các giao thức khác nhau thì bạn có thể chọn nút Advanced . Khi đó bạn có thể điền các proxy khác nhau đối với mỗi giao thức như hình dưới đây. II.7.3 Cấu hình proxy tự động (Proxy Auto-Configuration Script) Proxy Auto-Configuration Script (PAC) là một kĩ thuật được thiết kế để khắc phục những vần đề hạn chế của việc cấu hình bằng tay. Thay vì việc cấu hình bằng tay các địa chỉ của proxy thì trình duyệt sẽ tự động chạy một script khi có yêu cầu. Khi đó nó sẽ trả về một danh sách các địa chỉ proxy mà trình duyệt có thể thử cho đến khi yêu cầu được chuyển đi thành công. Script PAC thì được viết bằng Java Script. Vì vậy nếu trình duyệt nào hỗ trợ Java Script thì sẽ hỗ trợ PAC. Netscape là hãng sáng chế ra PAC và đã đưa vào trong Version 2 của trình duyệt này và Microsoft cũng đưa PAC vào từ Version 3. Đặc điểm tốt nhất của PAC chính là cho phép người quản trị có thể cấu hình lại mà không cần sự can thiệp của người sử dụng. Nếu địa chi proxy thay đổi thì người quản trị dễ dàng thay đổi PAC script để tham chiếu tới sự thay đổi đó. Các trình duyệt sẽ nhận về các PAC URL vào mọi thời điểm chúng bắt đầu nhưng sẽ không xuất hiện trong lúc nó đang chạy trừ trường hợp người dùng yêu cầu reload lại. Một đặc điểm khác cũng được coi là cải tiến cho việc cấu hình bằng tay của đó chính là khả năng tìm lỗi. Nếu proxy đầu tiên bị lỗi thì nó sẽ tự động cố gắng tìm những cái tiếp theo cho đến cuối cùng của danh danh proxy mà nó nhận được ban đầu. Một lỗi được tìm thấy khi trình duyệt nhận được lỗi Connection Refused và thời gian thiết lập kết nối vượt quá thời gian cho phép(time out). II.7.4 Cách viết một PAC Tên của hàm để thực hiện một PAC đó là FindProxyForURL() và có hai tham số url và host. Giá trị trả về chính là chuỗi kí tự có thể để gửi yêu cầu đi. Nó có thể là một hoặc nhiều dòng cách nhau bằng dấu hai chấm. PROXY host:port SOCKS host:port DIRECT Ví dụ "PROXY proxy.web-cache.net:3128; DIRECT; SOCKS socks.web-cache.net:1080;" Khi bạn viết FindProxyForURL() thì bạn muốn xây dựng trong nó chức năng tự phân tích URL. Để có thêm những thông tin chi tiết bạn có thể tham khảo tại PAC phải được đặt trên Web server và server phải được cấu hình để trả về giá trị MIME Content-type header trong đáp ứng của chúng. Nếu Content-type không thiết lập Application/x-ns-proxy-autoconfig, thì trình duyệt sẽ không nhận biết được PAC script. Và phần mở rộng của file này phải là .pac và sau đó chỉ dẫn cho HTTP server trả lại Content-type cho tất cả các URIs với phần mở rộng này. Giả sử một Webserver chạy Apache ta có thể thêm dòng sau: Srm.conf.AddType application/x-ns-proxy-autoconfig.pac II.7.5 Cấu hình cho PAC Script Khi ta đã viết và đặt PAC script lên server thì ta phải cấu hình browser để có thể sử dụng chúng. Tất cả những gì ta cần làm là đưa PAC Script URL trong cấu hình phù hợp với trình duyệt. Với Netscape ta đặt ở chế độ proxy auto configuration URL trong cùng cửa sổ để cấu hình với proxy bằng tay. Ta chọn Edit =>Preferences… Sau đó chọn Advanced chọn Select Proxies. Chọn “Automatic proxy configuration” như hình vẽ: Còn nếu bạn sử dụng Microsoft Internet Explore thì bạn có thể làm tương tự như trong phần cấu hình bằng tay nhưng bạn chọn chế độ use automatic configuration script như hình vẽ và thêm URL của file PAC vào trong ô địa chỉ. CHƯƠNG III: NGÔN NGỮ ACTIVE SERVER PAGE (ASP) III.1 Active Server Pages là gì? Microsoftâ Active Server Pages (ASP) là một môi trường sever-side scripting cho phép ta tạo ra và chạy các ứng dụng Web động, tương tác với client một cách hiệu quả. ASP hoạt động dựa vào các script do người lập trình tạo sẵn. Khi ta cho script chạy trên server thay vì chạy ở client thì Web server của ta sẽ làm mọi công việc cần thiết để tạo ra một trang Hypertext Markup Language (HTML) trả về cho Browser hiển thị, như vậy ta không phải quan tâm rằng các Web browser có thể xử lý trang Web hay không vì server đã làm mọi việc. Active Server Pages chạy trên các môi trường sau đây: - Microsoft Internet Information Server version 3.0 trở lên trên Windows NT Server 5.0 hoặc 6.0 - Microsoft Peer Web Sevices version 3.0 trên Windows NT Workstation. - Microsoft Personal Web Server chạy trên Windows 98. III.2 Mô hình của Active Server Pages Các Script của ASP chứa trong các text file có đuôi là .asp. Trong Script có chứa các lệnh của một ngôn ngữ script nào đó. Browser gửi một Request tới Server yêu cầu một file ASP. Khi Web Server nhận được request của browser, nó sẽ đọc từ đầu đến cuối file ASP sau đó thực hiện các lệnh script và trả lại kết quả cho browser dưới dạng file HTML. Client Disk Dynamic Page Add the HTTP Wrapper HTTP Encoding VBScript or JavaScript Active Server Pages HTTP Decoding Server Request Page III.2.1 Cách viết các file ASP Script Một file ASP có tên mở rộng .asp và là một file text như những file HTML khác. Một file .asp có thể chứa bất cứ sự kết hợp nào sau đây: Text HTML tag Các lệnh script của một ngôn ngữ script nào đó chẳng hạn VBScript hay JScript. Một script là một chuỗi các lệnh script thực hiện một công việc nào đó, nó có thể là: Gán trị cho biến Yêu cầu Webserver gửi thông tin đến Browser gọi là Output expression (ví dụ: ) Kết hợp các lệnh script thành các thủ tục hay hàm. Việc thi hành một script là quá trình gửi chuỗi các lệnh tới Scripting Engine, tại đây ASP sẽ thông dịch các lệnh này và thi hành nó. Script được viết bằng một ngôn ngữ với các luật được đặc tả nào đó, nếu ta muốn sử dụng một scripting language nào thì trên server phải chạy Scripting Engine cho ngôn ngữ đó. Ví dụ, VBScript là ngôn ngữ script mặc định cho Active Server Pages, vì vậy scripting engine cho VBScript được cài đặt thường trú trên server. ASP cũng cung cấp sẵn Scripting Engine cho JScript. III.2.2 Cú pháp của ASP ASP chỉ cung cấp một môi trường để xử lý các script mà ta chèn vào trong các file .asp chứ ASP không phải là một ngôn ngữ script. Tuy nhiên, ASP qui định việc chèn các script phải tuân theo cú pháp nhất định của ASP như sau: III.2.2.1 Delimiter (dấu ngăn cách) Trong trang ASP ta sử dụng các dấu để ngăn cách phần văn bản HTML với phần script, bất cứ một phát biểu script nào cũng đều phải nằm giữa 2 dấu ngăn cách . Ví dụ: sẽ gán chuỗi “climbing” cho biến sport. Hoặc để xuất giá trị của biến sport ra Browser (biểu thức này được gọi là Output Expression) III.2.2.2 Statement (phát biểu) Một phát biểu, trong VBScript hay trong ngôn ngữ Script khác là một cấu trúc dùng để thực hiện một thao tác, phát biểu phải được khai báo hoặc định nghĩa trong ngôn ngữ script mà ta sử dụng. Ví dụ: đoạn script sau dùng phát biểu If … Then … Else của VBScript. =#12:00:00 AM#) then greeting= “Good Morning Else greeting= “Hello !” End If %> III.2.2.3 Kết hợp HTML trong các phát biểu Chúng ta có thể chèn HTML text giữa các phát biểu của script. Ví dụ: =#12:00:00 AM#) then%> Good Morning! Hello ! III.2.2.4. Script tag và việc tạo thủ tục với ngôn ngữ script Các thủ tục phải được đặt bên trong tag và , và cho phép ta sử dụng ngôn ngữ script khác với ngôn ngữ mặc định đã cài đặt trong môi trường ASP (là VBScript). Ví dụ: function MyFunction() { Response.Write (“MyFunction Called”) } Trong ví dụ trên hàm MyFunction được định nghĩa với ngôn ngữ JScript khác với ngôn ngữ mặc định là VBScript. III.2.2.5. Include file Khi tạo một ứng dụng Web, bao gồm nhiều trang ASP, nếu như tồn bộ các trang này đều cần sử dụng những thông tin chung như các hằng, hyperlink, … để tránh việc định nghĩa lại các giá trị này ở mỗi trang ASP cho phép ta include file bằng cách sử dụng dẫn hướng tiền xử lý sau: Trong đó file được include phải có phần mở rộng là .inc, filename bao gồm cả đường dẫn và tên file. Tham số virtual chỉ định đường dẫn bắt đầu bằng một Virtual Directory. Tham số file chỉ định đường dẫn bắt đầu với tên thư mục chứa filename cần include. + Từ khóa Virtual Dùng từ khóa Virtual để chỉ một đường dẫn bắt đầu bằng một thư mục ảo (Virtual Directory). Ví dụ tên file là dangky.inc nằm trong thư mục ảo là /dangkymay, thì hàng lệnh sau đây sẽ chèn nội dung của dangky.inc vào file có chứa dòng lệnh này. + Từ khóa File Từ khóa File để chỉ đường dẫn mà bắt đầu bằng thư mục chứa file cần include. Ví dụ : Ta cũng có thể dùng tham số file với đường dẫn tương đối “. . / “ để include file từ thư mục cha hay thư mục có cấp cao hơn. Ví dụ : + Các lưu ý khi sử dụng Include file Một file được include cũng có thể gọi include một file khác. Một file ASP cũng có thể gọi include một file nhiều lần nhưng với điều kiện là lệnh include không được sinh ra vòng lặp. Ví dụ, file First.inc gọi include file Second.inc thì file second.inc không được gọi include file First.inc và cũng không được gọi include file của chính nó. ASP thực thi include file trước khi thực thi các lệnh script, cho nên ta không thể dùng các lệnh script để tạo ra tên của file cần include. Ví dụ, đoạn script sau sẽ không mở file Header.inc bởi vì ASP thực thi include trước khi gán tên file cho một biến. "--> Không được đặt include file bên trong các dấu phân cách của các script Next %> III.2.2.6 Cách dùng Server Script để thay đổi Client Script Mặc dù ASP chủ yếu được dùng để xử lý script trên môi trường Server-Side, nhưng ta cũng có thể mở rộng nó để tạo ra các client-side script cho phép xử lý ở browser. ASP thực hiện được điều này bằng cách phối hợp các client-side script và các server-side script xen kẽ nhau như sau : <!-- client script client script client script . . . . . --> III.3 Các Built-In Object của ASP ASP cung cấp sẵn 5 đối tượng (object) khi sử dụng không cần phải tạo ra các instance cho chúng, mỗi đối tượng thực hiện một số chức năng riêng khác nhau. Các đối tượng này được gọi là các Built-in-Object, bao gồm: Request: lấy thông tin từ một user Response: gửi thông tin tới một user Server: điều khiển môi trường hoạt động của ASP Session: lưu giữ thông tin về 1 session của user Application: chia sẻ thông tin giữa các user trong cùng một ứng dụng Cú pháp của các đối tượng Cú pháp của các đối tượng không phụ thuộc vào scripting language mà người lập trình sử dụng. Để truy xuất thông tin của một đối tượng ta dùng các phương thức (method) và các thuộc tính (property). III.4 Sử dụng các method Một method là một procedure hoạt động trên một đối tượng nào đó. Cú pháp tổng quát của method là: Object.Method [parameters] parameter là các thông số của method III.5 Sử dụng các Property Một property là một tính chất được đặt tên của một đối tượng. Chúng định nghĩa các tính chất của đối tượng như kích thước, màu, vị trí trên màn hình hay thể hiện các trạng thái của đối tượng như được phép (enable) hay không được phép (disable). Cú pháp tổng quát của property là: Object.Property [parameters] parameter là các thông số của Property Parameter thường là các biến, dữ liệu, chuỗi ký tự, hoặc là một URL. III.5.1 Request object Request Object lấy các giá trị mà client browser gởi lên server thông qua một HTTP request. Đây là cách mà các ứng dụng ASP lấy được thông tin gửi tới từ user, ví dụ: khi user Submit thông tin từ một FORM. Request Object cho phép truy xuất tới bất kỳ thông tin nào do user gởi tới bằng giao thức HTTP như: Các thông tin chuẩn nằm trong các biến Server (variable server) Các tham số được gửi tới bằng phương thức POST Các thông tin được gửi tới bằng phương thức GET Các cookies (là các thông tin của user được gửi kèm theo) tới từ Browser. Các Client Certificates Request Object có 5 collection sau: QueryString Nhận giá trị của các biến trong HTML querystring, đó là giá trị được gởi lên theo sau dấu chấm hỏi (?) trong HTML request. Form Nhận các giá trị của các phần tử trên FORM sử dụng POST method. Cookies Cho phép nhận những giá trị của cookies trong một HTML request ServerVariable Nhận các giá trị của các biến môi trường. ClientCertificate Nhận certificate fields từ request của Web browser. Cú pháp tổng quát khi sử dụng Request object là: Request.CollectionName(variable) Variable là tên biến trong Collection muốn truy xuất thông tin. Cũng có thể sử dụng cú pháp: Request(variable) Khi đó thứ tự tìm kiếm sẽ tuân theo danh sách các collection trên và khi gặp biến đầu tiên trùng tên thì trả về giá trị của biến đó. Vì thế nếu có nhiều hơn một biến với cùng một tên trong các collection khác nhau thì nên sử dụng dạng cú pháp tổng quát. Sau đây là một số ứng dụng của đối tượng Request: III.5.2 Response object Việc gửi thông tin tới cho user được thực hiện nhờ đối tượng Response qua việc gọi các phương thức sau: Response.Write : Gửi thông tin trực tiếp tới user Response.Redirect : Gửi thông tin trực tiếp tới user ở một URL khác với URL đã yêu cầu. Response.ContentType: Thay đổi kiểu của nội dung cần gửi. Response.Cookies : Thiết lập các giá trị cookies. Response.Buffer : Đệm thông tin xuất. Gửi văn bản tới user : Response.Write[variant] trong đó variant là dữ liệu bất kỳ mà ngôn ngữ script đang sử dụng chấp nhận. Chuyển hướng kết nối đến URL khác : Response.Redirect URL Thiết lập HTTP ContentType : Response.ContentType=ContentType Ví dụ: Browser sẽ hiển thị trang nhận được như một văn bản bình thường chứ không phải như một văn bản HTML. III.5.3 Session object Đối tượng Session dùng để lưu trữ các thông tin của một user-session. Các giá trị lưu trữ trong session sẽ không bị loại bỏ đi khi user chuyển từ trang này sang trang khác trong một ứng dụng, chúng chỉ bị loại bỏ khi user session-end. Web server tự động tạo ra Session object khi một trang web trong ứng dụng được yêu cầu bởi một user mà user này chưa có một session. Server sẽ tự động hủy bỏ user-session khi nó hết hạn hoặc bị bỏ (abandon). Cú pháp: Session.Properties | Method Properties SessionID trả về số định danh session cho user. Mỗi session sẽ được server cho một số định danh duy nhất khi nó được tạo ra. Timeout chỉ thời gian sống của session object, nếu user không refresh hay request một trang trong khoảng thời gian qui định, session sẽ kết thúc. Method Abandon hủy bỏ một session. Events Session_OnStart xảy ra khi user request lần đầu tiên 1 trang của ứng dụng Session_OnEnd xảy ra khi session end, hoặc khi không có request nào trong khoảng timeout (mặc nhiên là 20 phút) Các thông tin lưu giữ trong Session được giữ nguyên trong suốt thời gian session tồn tại và có giá trị trong cả khu vực của session. Ví dụ: III.5.4 Application object Application dùng để chia xẻ thông tin giữa các user của một ứng dụng nào đó. Một ứng dụng ASP được định nghĩa là tất cả các file .asp trong một thư mục ảo và các thư mục con của nó. Bởi vì Application object có thể được chia xẻ bởi nhiều user, nên hai phương thức Lock và Unlock bảo đảm nhiều user không thể thay đổi một property đồng thời. Methods: Lock Ngăn chặn các user khác bổ sung property của Application object. Method này sẽ khóa các client khác không cho thay đổi các biến được lưu trữ trong application object, đảm bảo tại một thời điểm chỉ có một user được phép thay đổi và truy xuất các biến của object này. Unlock Cho phép các user khác bổ sung các biến của Application object. Events Application_OnStart Event-procedure được thi hành trước khi một session mới được tạo ra. Application_OnEnd Event-procedure được thi hành khi thốt khỏi application, ngay sau Session_OnEnd event. III.5.5. Server object Property ScriptTimeOut khoảng thời gian chạy của một script Methods CreateObject tạo một instance cho một server component Cú pháp: Server.CreateObject(ProgID), trong đó ProgID là tên của đối tượng cần tạo. HTMLEncode áp dụng sự mã hóa HTML lên một string được chỉ định MapthPath ánh xạ một đường dẫn tương đối hoặc virtual tới một thư mục vật lý trên server. URLEncode mã hóa một string thành dạng URL III.6 Lấy thông tin từ FORM HTML Form là cách thứ thông thường để trao đổi thông tin giữa Webserver và user. HTML Form cung cấp nhiều cách nhập thông tin của user như: text box, radio button, check box, submit, reset, password, … và hai phương thức gửi thông tin là POST hoặc GET. Ứng dụng ASP có thể sử dụng Form để tạo ra sự liên lạc dữ liệu giữa các trang theo một trong ba cách: File .htm chứa các form và gửi (submit) giá trị của nó tới một file .asp File .asp có thể tạo Form và gửi giá trị tới một file .asp khác. File .asp có thể tạo Form và gửi thông tin tới ngay chính nó. Khi lấy thông tin từ Form, đối tượng Request có thể lấy các loại thông tin khác nhau, bằng cách: III.7 Sử dụng QueryString QueryString collection chứa tồn bộ thông tin được gửi tới từ Form bằng phương thức GET. Các giá trị gởi từ Form chứa trong một chuỗi query (query string) và được add vào URL (bắt đầu từ dấu chấm hỏi (?) trở về sau là phần query string được thêm vào). Điều này có thể thấy rõ khi quan sát hộp Address của Browser. Ví dụ: Name: Age: Khi user nhập giá trị vào 2 hộp Name và Age sau đó nhấn Submit thì hộp Address của browser sẽ có dạng như sau: Hạn chế của phương thức GET : Chiều dài tối đa của URL là 1000 ký tự, như vậy nếu gởi một loạt thông tin từ form, thông tin sẽ bị cắt bớt. III.8 Sử dụng Form collection Thay vì add thông tin gửi đi từ Form vào URL như một querystring, một phương thức khác là POST, đặt thông tin gửi đi vào bên trong HTTP header. Ví dụ: Name: Age: Khi user nhập giá trị vào 2 hộp Name và Age sau đó nhấn Submit thì hộp Address của browser sẽ trông có dạng như sau: Tại thời điểm này, các giá trị gửi từ Form không thể truy xuất bằng QueryString collection. Thay vào đó, Active Server Pages hiện thực một Form collection chứa tồn bộ thông tin gửi từ Form sử dụng phương thức POST. III.9 Gửi thông tin trong cùng một file .asp ASP cho phép một file .asp có chứa Form, khi user điền các giá trị vào Form rồi gửi (Submit) thì chính file .asp đó sẽ nhận các thông tin này và xử lý. Ví dụ: file examp.asp có nội dung như sau: <% If IsEmpty(Request(“Email”)) Then Msg= “Please enter your email address” Else If InStr(Request(“Email”), “@”)=0 Then Msg= “Please enter an email address in the form servername@location” Else Msg= “This script could process the valid email address now” End If %> Email: <INPUT TYPE=TEXT NAME=”Email” SIZE=30 VALUE = “ Khi user điền vào Form địa chỉ Email và Submit thì file examp.asp này sẽ nhận thông tin bằng phát biểu: VALUE = “ Đoạn script sẽ tuỳ thuộc giá trị chuỗi ký tự nhận được có ký tự @ hay không để trả lời với user cũng chính bằng văn bản HTML nhúng trong examp.asp. III.10 Gửi thông tin giữa các file .asp Ví dụ: Form được để trong examp1.asp, các thông tin mà user sẽ submit lên server khi user đang ở trang examp1.asp sẽ được file examp2.asp nhận và xử lý. Để làm được điều này, trong trang examp1.asp có đoạn code HTML sau: Name: và đoạn code sau trong trang examp2.asp dùng để nhận các thông tin sẽ submit từ form1. <% name=“” +Request(“txtname”) %> Khi đó giá trị mà user đã gõ vào Form1 sẽ được lấy và lưu vào biến Name ở examp2.asp. III.11 Sử dụng Cookies Collection Một cookies được coi như một dấu hiệu đi kèm theo user trong quá trình trao đổi thông tin giữa Web client và Web server. Các script của ASP có thể dùng Response để lấy hoặc thiết lập giá trị của cookies bằng cách sử dụng cookies colletion theo cú pháp: Response.Cookies(cookie)[(key)][.attribute] trong đó cookie là tên của cookie. key là thông số tùy chọn. Nếu key được đặc tả thì cookie là từ điển và key sẽ được thiết lập giá trị, .attribute là các thuộc tính của cookie đó. Bufferring Response Thuộc tính Buffer chỉ định rằng trang xuất (page out) có được đệm lại hay không. Khi một trang bị đệm lại thì server sẽ không gửi đáp ứng nào tới client cho đến khi tất cả các server script trong trang hiện hành đã được xử lý, hoặc là cho đến khi phương thức Flush hoặc End được gọi. Thuộc tính Buffer mặc định cho tất cả trang ASP là False. Để thiết lập trị Buffer gọi: III.12 Sử dụng các Component của ASP Ngồi các Built-in object, ASP còn cung cấp sẵn một số ActiveX Server component, được thiết kế để chạy trên các Web server như là một phần của các ứng dụng Web. Mỗi một server component là một thư viện các Class (hay Object) được thiết kế ở dạng Automation Server, thực hiện một nhóm công việc chung nhất cho một thao tác nào, ví dụ như việc truy xuất cơ sở dữ liệu, truy xuất file… nhờ đó ta không phải tạo lại các chức năng này nữa. Tuy nhiên, ASP vẫn cho phép người lập trình có thể tạo riêng server component của mình và add vào ứng dụng Web. Các component được cài sẵn trong Active Server Pages gồm: Adrotator Browser Capabilities Database Access Content Linking File Access III.12.1 Tạo các instance của các component Dùng phương thức CreateObject của đối tượng Sever, cú pháp như sau: Server.CreateObject(“ComponentName”) Ví dụ: tạo một đối tượng connection là Conn từ ADO component Trong phạm vi của luận văn tốt nghiệp này là tìm hiểu các công cụ của ASP hỗ trợ cho việc phát triển ứng dụng Web database, nên phần tiếp theo tôi xin trình bày ADO component với các method và property của nó là điểm mạnh nhất của ASP trong việc truy xuất cơ sở dữ liệu. III.12.2 Database Access Component Database Access component còn gọi là thư viện ADO (ActiveX Data Object), các object của ADO cung cấp cơ chế tạo kết nối (connection) với hầu hết các kiểu database, cũng như việc truy xuất, cập nhật các database này. ADO Interface Các đối tượng trong ADO giao tiếp với database thông qua ODBC (Open Database Connectivity), chúng có thể được sử dụng với bất kỳ loại database nào nếu như có ODBC driver hỗ trợ. ASP cài đặt sẵn hầu hết các driver thông dụng như: Foxpro, Access, SQL server, Oracle. Active Server Pages ActiveX Database Component ActiveX Data Objects ODBC Driver Data Provider Interface Data Source Với Data Provider đại diện cho các phần mềm driver, nó cho phép ta giao tiếp với các loại dữ liệu khác nhau. Các Object trong ADO Gồm: Connection, RecordSet và Command. Sử dụng Connection ta có thể thiết lập sự liên kết với cơ sở dữ liệu, thông qua đó ta có thể lấy ra các record hoặc cập nhật một record bằng cách sử dụng Command object. Kết quả thực hiện các query trên database sẽ được lưu vào đối tượng RecordSet, trên đối tượng này ta có thể duyệt và lấy ra một hay nhiều record. 1. Connection object Trước tiên ta phải tạo instance cho đối tượng connection bằng phát biểu sau: <% Set Connection_Name=Server.CreateObject(“ADODB.Connection”) %> Khi cần có một liên kết cố định cho tất cả các trang ta có thể thiết lập khu vực cho đối tượng connection ở mức Application như sau: <% Sub Application_OnStart() Set Connection_Name=Server.CreateObject(“ADODB.Connection”) End Sub %> Hoặc thiết lập khu vực cho đối tượng connection ở mức Session: <% Sub Session_OnStart() Set Connection_Name=Server.CreateObject(“ADODB.Connection”) End Sub %> Các phương thức của đối tượng connection Open method : được sử dụng để mở một liên kết với Database. Ngay sau khi tạo instance cho Connection object, ta có thể mở một kết nối tới Data Source để truy xuất dữ liệu, cú pháp như sau: Connection.Open ConnectionString [User] [Password] trong đó ConnectionString là chuỗi định nghĩa tên của Data Source (DSN), tên này do ODBC tạo ra. [User] và[Password] là tên User và Password được database cho phép mở. Execute method: cho phép thực thi một câu lệnh tác động lên Data Source. Connection.Execute(CommandText,RecordsAffected,Options) Trong đó CommandText là chuỗi lệnh cần thực hiện, thông số option các các giá trị khác nhau qui định loại CommandText Giá trị Hằng tương ứng CommandText 0 adCmdUnknown Mặc định khi định nghĩa 1 adCmdText Là một câu lệnh ví dụ như SQL 2 adCmdTable Tên của table mà ta sẽ tạo một Recordset từ đó 4 adCmdStoreProc Một Stored procedure trong Data source Thông thường các giá trị trên được gán sẵn vào các danh hiệu hằng và được đặt trong file include có tên adovbs.inc. Close method: đóng các kết nối đã mở. Connection.Close Connection Pooling Các ứng dụng database trên Web mở và đóng các connection với database thông qua ODBC ở mỗi trang Web. Chúng ta có thể tạo một connection mới cho mỗi Session và dùng nó cho tất cả trang Web. Tuy nhiên, với một site mà có số lượng hàng trăm user kết nối vào cùng lúc, thì việc tạo một connection mới cho mỗi user có thể làm server quá tải (overhead). Để giải quyết vấn đề này, ODBC 3.0 cung cấp một phương thức mới để quản lý các connection với các database của ứng dụng Web gọi là Connection Pooling. ODBC sẽ mở và quản lý tất cả các connection, nhằm giảm bớt số lượng connection rảnh rỗi. Mỗi khi có một yêu cầu kết nối mới thì nó kiểm tra xem có connection nào trong Connetion Pooling rảnh không. Nếu không có thì sẽ tạo connection mới, nếu có thì nó sẽ lấy connection rảnh này mà không tạo thêm connection. Nếu có một connection rảnh nào trong Connection Pooling tồn tại quá 60s thì nó sẽ tự động bị loại bỏ. Connection Pooling không được kích hoạt mặc định trong ASP. Muốn thiết lập Connection Pooling ta phải sửa đổi Registry, tại mục: HKEY_LOCAL_MACHINE\System\CurrentControlset\Services\ W3SVC\ASP\Parameters Tìm StartConnectionPool và thay đổi trị từ 0 thành 1. 2 . Command object Thay vì dùng phương thức Execute của Connection để query hay update data source, ta có thể sử dụng đối tượng Command 3. Recordset object Là kết quả trả về khi thực thi một query, thực chất nó là một bảng trong bộ nhớ, ta có thể truy xuất các record của nó qua các phương thức và thuộc tính. III.13 Phát triển một ứng dụng ASP Một ứng dụng ASP (ASP-Based Application ) gồm có một thư mục ảo (Virtual Directory) trên một Web Server và tất các file và các thư mục bên trong thư mucï ảo đó. Một ứng dụng ASP có thể là một trang Web đơn lẽ hoặc có thể là tập hợp các trang có quan hệ với nhau. Ứng dụng ASP có hai kiểu trạng thái (state) : _ Application state : Tất cả thông tin thuộc về Application cho phép tất cả các user thuộc application đó được quyền sử dụng. _ Session state : Thông tin thuộc về session chỉ cho phép user của session đó sử dụng. Các công cụ dùng để quản lý trạng thái là các đối tượng (built-in object) session và application. Cách dùng đối tượng Session và Application Ta có thể dùng các đối tượng session và application để mở rộng chức năng của các ứng dụng ASP. Dùng đối tượng session để quản lý thông tin cho một user khi user sử dụng một application. Một session chỉ có tác dụng và thuộc sở hữu đối với một user. Application được dùng để lưu trữ thông tin chung mà có thể được sử dụng chung cho tất cả các user thuộc application đó. III.13.1 Cách dùng File Global.asa Mỗi ứng dụng ASP có thể có một file Global.asa, file này phải được lưu trữ trong thư mục gốc của application. ASP đọc file global.asa trong các trường hợp sau : Khi Web Server nhận được một request đầu tiên yêu cầu một file asp nào đó trong application. Khi một user chưa có một session request một file ASP nào đó trong application. Trong file Global.asa gồm có các thành phần : Application-start, session-start hoặc cả hai. Application-end, session-end hoặc cả hai. Các tag dùng để khai báo các đối tượng. III.13.2 Các sự kiện Application-start và Session-start Các thủ tục Script trong Application-Onstart và Session-Onstart sẽ chạy mỗi khi Application và Session được khởi động. Nếu application và session bắt đầu cùng một lúc thì ASP ưu tiên xử lý sự kiện application-start trước sau đó mới tới sự kiện session-start. Cú pháp của Application-Onstart và Session-Onstart : Sub Application_OnStart ' This is where you would insert script for an ‘ application-start event. End Sub Sub Session_OnStart Set Session("MyAd")=Server.CreateObject("MSWC.Adrotator") End Sub III.13.3 Các sự kiện Application-end và Session-end Cũng như Application-start và Session-start Application-end và Session-end là các thủ tục trong file Global.asa và các sự kiện này xảy ra khi application và session kết thúc. Cú pháp của Application-end và Session-end : Sub Session_OnEnd ' Chèn các lệnh Script ở đây cho một session-end event. End Sub Sub Application_OnEnd ‘ Chèn các lệnh Script ở đây cho một application ending event. End Sub III.13.4 Kết thúc một Session Một session tự động kết thúc khi user không yêu cầu (Request) hoặc làm tươi (Refresh) một trang nào trong một khoảng thời gian xác định trước và được gọi là TimeOut. Session cũng kết thúc khi gọi phương thức Abandon của đối tượng Session. Giá trị mặc định của Session TimeOut là 20 phút. Ta có thể qui định thời gian TimeOut lớn hơn 20 phút bằng lệnh sau : Lưu ý : Không cho phép qui định thời gian Session TimeOut nhỏ hơn giá trị mặc định. III.13.5 Quản lý các Session Một Session có thể khởi động bằng 3 cách : Khi một user mới Request một file ASP trong Application và trong file Global.asa có thủ tục Session-Onstart. Khi user lưu trữ lưu trữ một giá trị trong đối tượng Session. Khi user request một file ASP trong application mà file Global.asa dùng tag để khai báo đối tượng có phạm vi Session. SessionID và Cookie Lần đầu tiên khi một user request một file ASP trong application, ASP sẽ tạo ra một SessionID và gửi (Response) tới Browser của user đề tạo một Cookie cho SessionID. SessionID Cookie là một token gửi tới Client nhưng không được lưu trữ trên đĩa cứng của máy client bởi vì nó không có qui định ngày hết hạn. Lưu ý : Hầu hết các Browser đều sử dụng cookie, nhưng cũng có một vài Browser không áp dụng. Đối với các Browser không áp dụng Cookie thì ASP cũng không cấp đối tượng Session cho các Browser này. Khi một user tương tác với một Application, ASP lưu trữ thông tin của user trong một “Locker” trên Server. SessionID Cookie của user được gởi trong HTTP Request Header. User chỉ được phép truy xuất thông tin trong nội dung mà Locker cho phép.Mỗi lần ASP nhận được Request một trang, nó lập tức kiểm tra HTTP request header cho SessionID Cookie. Lưu trữ biến trong đối tượng Session <% Session("Initiated") = Now Session("Fidelity") = "Low" Set Session("myObj") = Server.CreateObject("someObj") %> III.13.6 Quản lý Application Ta có thể dùng đối tượng application để gởi một thông báo tới tất cả user của Application. Ví dụ : Giá trị mặc định của message trong Global.asa Sub Application_OnStart Application("Message") = "This is the default message." End Sub File A.asp hiển thị một message, các user request một file A.asp đều thấy message như nhau This is the message: File B.asp cho phép user gõ một message mới và submit để thay đổi Enter a new value for the application-wide message: C.asp cập nhật lại giá trị mới nhận từ B.asp <% If Not IsEmpty(Request.Form("newmsg")) Then Application.Lock Application("Message") = Request.Form("newmsg") Application.Unlock End If Response.Redirect("A.asp") %> III.13.7 Hoạt động của Component Một ứng dụng ASP có thể qui định khu vực cho các ActiveX Server Component . Các Component có khu vực là Aplication ,Session hoặc là Page Component có khu vực là application là Component được tạo ra khi Application-start. Component có khu là Session được tạo ra cho mỗi Session mới trong Application và bị hủy bỏ khi Session kết thúc. Như vậy, mỗi một Session đang tích cực có một khu vực cho Session đó. Component có khu vực là Page được tạo ra trong quá trình xử lý một trang của client và kết thúc khi Response được gửi trở lại client. Mặc định component có khu vực là Page. Ta có thể dùng Tag trong file Global.asa hoặc phương thức Server.CreateObject để ghi nhận khu vực của các activeX Server Component trong các đối tượng Session và Application. Cách dùng : Cách dùng Server.CreateObject Kiểm tra kết quả Trong phạm vi Session ASP không tạo ra một khu vực cho component khi được khai báo bằng Tag , nó chỉ được tạo ra khi component được tham khảo đến bằng một lệnh Script từ một file ASP. Nếu dùng phương thức Server.CreateObject thì khu vực component được tạo ra ngay lập tức. Vì vậy tag được sử dụng phổ biến hơn phương thức Server.CreateObject trong phạm vi Session. Trong phạm vi Trang thì và phương thức Server.CreateObject được sử dụng như nhau. CHƯƠNG IV: PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG IV.1 Phân tích hệ thống IV.1.1 Tổng quan về học và thi trắc nghiệm trực tuyến - Ngành công nghệ thông tin phát triển với tốc độ rất nhanh và công nghệ ngày một tiên tiến và hiện đại. Một trong các thành tựu lớn nhất mà ngành công nghệ thông tin mang lại cho cuộc sống con người là mạng Internet, Intranet …. Đây là một môi trường thông tin liên kết con người, việc trao đổi thông tin bây giờ đã trở nên nhanh chóng, tiện lợi hơn bao giờ hết. - Tận dụng môi trường mạng Internet, xu hướng phát triển phần mềm hiện nay là dựa môi trường này để xây dựng nên các ứng dụng có khả năng phục vụ và liên lạc giữa nhiều thành viên với nhau, vận hành không phụ thuộc vào vị trí địa lý, không phụ thuộc vào hệ điều hành. - Có rất nhiều hình thức thi khác nhau được áp dụng trong các trường Đại học, cao đẳng, trung học, các trung tâm, đào tạo từ xa và nhiều lĩnh vực khác … Trong đó thi viết là một hình thức thi phổ biến từ trước đến nay được áp dụng trong ngành giáo dục, tất cả các học sinh, sinh viên đều làm cùng một đề giống nhau, do đó sẽ dẫn đến việc đánh giá kết quả cụ thể của từng học sinh, sinh viên không chính xác, không công bằng vì có thể gian lận, nhìn bài nhau, quay cóp … trong lúc thi. Còn nếu mỗi học sinh, sinh viên thi mỗi đề khác nhau thì dẫn đến việc ra đề thi sẽ gặp khó khăn cho người ra đề và việc đánh giá kết quả cũng phải mất nhiều thời gian, vì lý do đó mà Thi trắc nghiệm được áp dụng trong vài năm gần đây .             Thi trắc nghiệm là một hình thức thi để kiểm tra trình độ, kiến thức, khả năng nhạy bén của từng học sinh, sinh viên ở tất cả các trường, nơi tuyển sinh của các cơ quan ban ngành (thậm chí cả các công ty, xí nghiệp cũng áp dụng hình thức thi trắc nghiệm để tuyển nhân viên ) dựa trên nhiều đề khác nhau và việc ra đề cũng ít gặp khó khăn hơn cũng như việc đánh giá kết quả ít tốn thời gian hơn. Do đó mà hình thức thi trắc nghiệm được dùng khá phổ biến trong các trường dân lập, các trung tâm, đào tạo từ xa trong vài năm gần đây. Ngày nay với sự phát triển ngày càng mạnh mẽ của khoa học máy tính nói chung và mạng máy tính nói riêng, đáng chú ý nhất là mạng tồn cầu Internet. Sự ra đời của mạng Internet đã đưa con người đến với thế giới máy tính, hồ nhập với thế giới. Với mạng Internet chúng ta có thể trao đổi thông tin, gởi Email ra nước ngồi, truyền dữ liệu, truy xuất dữ liệu ...vv, một cách nhanh chóng, an tồn và hiệu quả. Giáo dục ngày càng phát triển, do đó có nhiều loại hình đào tạo khác nhau như công lập, dân lập, các trung tâm, đào tạo từ xa ... của nhiều trường khác nhau. Cho nên, một sinh viên có thể học nhiều trường khác nhau, do đó sinh viên có nhu cầu học và thi thông qua mạng nhằm giảm bớt thời gian đến trường . - Hiện nay đã có rất nhiều hệ thống hỗ trợ những bài giảng trực tuyến, các cách thức để học, thi một cách trực tuyến. E - Learning là một trong những ứng dụng khá điển hình có thể xây dựng và vận hành trên mạng Internet, Intranet ... Sinh viên không cần phải đến trường, họ có thể tham gia theo học, đăng ký môn học, tham khảo tài liệu, thi cử… tất cả đều có thể thực hiện và hồn tất chỉ bằng cách ngồi vào máy tính.. Trong khuôn khổ của đồ án này em sẽ xây dựng một website phục vụ cho việc học và thi trắc nghiệm kiến thức mạng máy tính. IV.2 Các yêu cầu của hệ thống Với một hệ thống học và thi như vậy ta có thể đưa ra các yêu cầu đối với hệ thống như sau. Quản lý thư viện bài học và câu hỏi trắc nghiệm về kiến thức mạng. + Quản lý bài học theo từng kì học. + Quản lý câu hỏi thi theo từng bài học Tổ chức soạn câu hỏi trắc nghiệm ứng với từng nội dung bài học +Với mỗi bài học thì ta có thể đưa ra câu hỏi trắc nghiệm phù hợp với nội dung của từng bài học. Tạo ra được đề kiểm tra. + Với mỗi bài học thì ta có phần kiểm tra lại kiến thức cuối mỗi bài học. Các câu hỏi này được lấy ngẫu nhiên trong phần câu hỏi của bài học. Tổ chức thi trắc nghiệm. + Hệ thống có khả năng tạo được những đề thi với các câu hỏi khác nhau. + Các câu hỏi thi trắc nghiệm được lấy từ tồn bộ hệ thống câu hỏi của hệ thống. Quản lý kết quả thi trắc nghiệm đối với từng sinh viên. + Quản lý kết quả của các user sử dụng hệ thống. Quản lý thông tin cá nhân + Với mỗi người sử dụng sẽ có một tài khoản. Khi đăng nhập họ sẽ được quyển quản lý các ghi chú đối với mỗi bài học cho mình, các kế hoạch học tập của mình và các thông tin cá nhân. Dựa vào các yêu cầu trên ta có thể mô tả tóm tắt nội dung của hệ thống như sau Các đối tượng tham gia vào hệ thống bao gồm. Người quản trị (Quản lý thông tin về các sinh viên, các nội dung bài học, các câu hỏi thi trắc nghiệm) Sinh viên (Tham gia các bài học, thực hiện kiểm tra và thi) Thông qua một hệ thống máy chủ Web mà sinh viên có thể truy cập để học các bài học thuộc kì học mà sinh viên đang tham gia Sinh viên khi tham gia thi sẽ nhận được một đề thi trên màn hình và sinh viên sẽ tích trực tiếp vào các đáp án đúng trong nhiều sự lựa chọn Sau một khoảng thời gian chuẩn của hệ thống mà sinh viên chưa thực hiện xong thì hệ thống cũng tự động kết thúc phần thi và thông báo kết quả về cho sinh viên. Ta có thể minh họa sơ đồ hoạt động của hệ thống qua hình ảnh IV.3 Mô tả các chức năng của hệ thống IV.3.1. Đăng nhập vào hệ thống. Màn hình sẽ cho phép bạn lựa chọn ứng với từng chức năng(quản trị, sinh viên) của từng người thì sẽ đăng nhập theo chức năng đó. Sơ đồ Uses cases IV.3.1.1 Đăng nhập Actor: Người quản trị, sinh viên. Mô tả: - Actor sẽ nhập tên tài khoản và mật khẩu vào hộp thoại đăng nhập vào hệ thống. - Hệ thống sẽ kiểm tra tên tài khoản và mật khẩu vừa nhập vào. Nếu : + Hợp lệ: cho vào hệ thống tùy vào quyền của người sử dụng. + Không hợp lệ: yêu cầu nhập lại hoặc thốt. IV.3.1.2 Thay đổi mật khẩu Actor: Người quản trị, sinh viên. Mô tả: - Actor sẽ nhập mật khẩu mới vào hộp thoại thay đổi mật khẩu - Hệ thống sẽ kiểm tra tên tài khoản và mật khẩu vừa nhập vào. Nếu : + Hợp lệ: cho vào hệ thống tùy vào quyền của người sử dụng. + Không hợp lệ: yêu cầu nhập lại hoặc thốt. IV.3.2 Các chức năng của người quản trị Sau khi đăng nhập vào với chức năng của người quản trị thì màn hình sẽ có các chức năng sau để người quản trị có thể lựa chọn một trong các chức năng của người quản trị Sơ đồ Uses cases của người quản trị IV.3.2.1 Thêm sinh viên Actor: Người quản trị. Mô tả: - Hệ thống sẽ hiển thị hộp thoại để người quản trị nhập các thông tin của sinh viên như : họ tên, ngày sinh, địa chỉ liên lạc, số điện thoại,… - Người quản trị sẽ điền đầy đủ thông tin của sinh viên mới và chọn yêu cầu thêm sinh viên mới. - Hệ thống sẽ kiểm tra lại thông tin nhập, nếu hợp lệ tiến hành cấp: + Tên tải khoản. + Mật khẩu (quyền để sinh viên có thể đăng nhập vào hệ thống). - Người quản trị có nhiệm vụ cung cấp cho sinh viên tên tài khoản và mật khẩu để họ có thể đăng nhập vào hệ thống. IV.3.2.2 Xóa một sinh viên khỏi danh sách Actor: Người quản trị. Mô tả: - Người quản trị sẽ tìm đến tài khoản của sinh viên cần xóa trong danh sách. - Người quản trị chọn chức năng xóa trong hệ thống - Hệ thống sẽ xóa tài khoản của sinh viên này trong hệ thống và hệ thống sẽ xóa tất cả các bài thi của sinh viên này. IV.3.2.3. Chỉnh sửa thông tin sinh viên Chức năng này cho phép xem thông tin của sinh viên, nếu có thông tin nào sai xót thì có thể chỉnh sửa lại ngay Actor: Người quản trị Mô tả: - Người quản trị sẽ tìm đến tài khoản của sinh viên cần xem - Hệ thống sẽ hiện thị chi tiết thông tin của sinh viên - Người quan trị xem xét , nếu có thông tin nào sai thì tiến hành chỉnh sửa - Hệ thống sẽ tiến hành cập nhật những thông tin đã thay đổi. IV.3.2.4 Thêm bài học mới Actor: Người quản trị Mô tả: - Người quản trị chọn chức năng thêm bài học mới - Hệ thống hiển thị môt combo box cho phép bạn chọn bài học mới thuộc học kì nào - Hệ thống sẽ hiển thị một form để nhập tiêu đề và nội dung của bài học - Người quản trị nhập các thông tin về bài học - Hệ thống sẽ tiến hành cập nhật nội dung của bài học vào cơ sở dữ liệu IV.3.2.5 Chỉnh sửa nội dung bài học Actor:Người quản trị Mô tả: - Người quản trị chọn chức năng chình sửa thông tin bài học - Hệ thống sẽ hiển thị các học kì để bạn chọn bài học đó thuộc học kì nào. - Người quản trị chọn bài học cần chỉnh sửa - Người quản trị xem những thông tin trong bài học - Nếu có thông tin nào sai thì tiến hành chỉnh sửa - Hệ thống sẽ cập nhật những thông tin đã được chỉnh sửa IV.3.2.6 Xóa một bài học Actor:Người quản trị Mô tả: - Người quản trị chọn chức năng xóa tin bài học - Hệ thống sẽ hiển thị các học kì để bạn chọn bài học đó thuộc học kì nào. - Người quản trị chọn bài học cần xóa - Người quản trị chọn chức năng xóa của hệ thống - Hệ thống sẽ tiến hành xóa nội dung bài học đó khỏi cơ sở dữ liệu IV.3.2.7. Thêm câu hỏi thi. Actor: Người quản trị: Mô tả: - Người quản trị lựa chọn chức năng tạo câu hỏi thi. - Người quản trị chọn học kì và bài học mà cần tạo câu hỏi - Hệ thống sẽ hiển thị một form để người quản trị có thể điền các thông tin về câu hỏi. - Câu hỏi thì bao gồm các thông tin + Đề bài câu hỏi + 5 đáp án để lựa chọn + Tích vào các ô đáp án đúng. - Sau đó Người quản trị chọn việc cập nhật câu hỏi vào hệ thống - Hệ thống sẽ lưu thông tin câu hỏi vào trong cơ sở dữ liệu IV.3.2.8 Xóa câu hỏi Actor: Người quản trị Mô tả: - Người quản trị sẽ lựa chọn câu hỏi trong học kì và bài học cần xóa - Người quản trị lựa chọn chức năng xóa câu hỏi của hệ thống - Hệ thống sẽ xóa câu hỏi khỏi cơ sở dữ liệu câu hỏi. IV.3.2.9 Chỉnh sửa câu hỏi. Actor: Người quản trị Mô tả: - Người quản trị sẽ lựa chọn câu hỏi trong danh sách câu hỏi của hệ thống - Màn hình hiện lên nội dung thông tin của câu hỏi - Người quản trị đọc nội dung câu hỏi và tìm những chỗ cần chỉnh sửa - Người quản trị chọn chức năng chỉnh sửa câu hỏi trong hệ thống - Hệ thống sẽ cập nhật lại nội dung của câu hỏi trên vào trong cơ sở dữ liệu. IV.3.2.10 Tạo báo cáo thống kê. Actor: Người quản trị Mô tả: - Công việc phục vụ cho việc xem xét hoạt động của hệ thống, có bao nhiêu sinh viên đang tham gia hoạt động trong hệ thống. - Lập báo cáo thống kê điểm của các sinh viên đã tham gia thi + Báo cáo theo từng user + Tất cả những người đã thi IV.3.3 Các chức năng của sinh viên. Chức năng chính của sinh viên là thực hiện học và thi trên hệ thống, sau khi đăng nhập vào hệ thống thì sinh viên chọn chức năng xem các bài học hoặc làm bài thi. Khi chọn chức năng học thì sinh viên sẽ chọn học kì mà sinh viên đang theo học. Hệ thống sẽ hiển thị các bài học thuộc học kì đó, sinh viên chọn các bài học để xem nội dung. Cuối mỗi bài học sẽ có phần kiểm tra nội dung bài học trên qua một số câu hỏi trắc nghiệm. Khi sinh viên chọn chức năng thi trong hệ thống thì khi đó hệ thống sẽ cho sinh viên lựa chọn thi giữa kì hoặc cuối kì của kì học mà sinh viên đang theo học, hệ thống sẽ tạo ra một đề thi ngẫu nhiên để sinh viên có thể làm vào đó. Sinh viên tích vào các đáp án đúng trong các đáp án đưa ra của câu hỏi. Sơ đồ Uses Case IV.3.3.1 Đăng kí thành viên Actor: Sinh viên Mô tả: - Sinh viên chọn chức năng đăng kí thành viên - Hệ thống hiện thị lên một một form để sinh viên có thể nhập các thông tin - Hệ thống sẽ cập nhật lại tài khoản mới vào cơ sở dữ liệu IV.3.3.2 Xem nội dung bài học Actor: Sinh viên Mô tả: - Sinh viên chọn kì học mà sinh viên đang theo học. Sau khi lựa chọn bài học thì danh sách các bài học của học kì đó sẽ được hiện. - Sinh viên lựa chọn bài học muốn xem - Hệ thống sẽ hiển thị chi tiết nội dung của bài học IV.3.3.3 Kiểm tra lại kiến thức Actor: Sinh viên Mô tả: - Sau đã học xong một bài học thì sinh viên có thể chọn chức năng ôn tập lại kiến thức. Chức năng này của hệ thống sẽ giúp sinh viên ôn tập lại những kiến thức cơ bản của bài học trên. - Hệ thống sẽ hiển thị 5 câu hỏi liên quan đến nội dung bài học để sinh viên có thể làm bài để nhớ lại kiến thức - Sau khi hồn thành sinh viên có thể xem kết quả với đáp án của bài kiểm tra - Sinh viên có thể biết mình làm đúng hay sai bằng cách so với đáp án của hệ thống. Đáp án của hệ thống chính là những đáp án mà gạch bởi màu hồng. IV.3.3.4 Thi Actor: Sinh viên Mô tả: - Sinh viên chọn chức năng thi trong hệ thống - Chọn chức năng làm bài thi trong hệ thống sau khi đã chọn các thông tin trên - Hệ thống tự động sinh ra 60 câu hỏi cho một đề thi. Các câu hỏi thi được lấy ngẫu nhiên từ ngân hàng câu hỏi của hệ thống. - Sinh viên lần lượt trả lời các câu hỏi trong đề thi.Nếu khó quá sinh viên có thể bỏ qua những câu hỏi khó để trả lời những câu tiếp theo. Sau khi trả lời xong thì có thể quay lại để trả lời các câu hỏi trước chưa trả lời. - Sau khi hết thời gian thi hoặc sinh viên chọn chức năng nộp bài thì hệ thống tự động ngắt quá trình làm bài. - Kết quả thi và bài làm của sinh viên được lưu vào trong cơ sở dữ liệu IV.3.3.5 Tạo các ghi chú Actor: Sinh viên Mô tả - Sinh viên chọn chức năng ghi chú - Hệ thống sẽ hiện thi lên một form để sinh viên có thể ghi những điều cần chú ý về bài học vừa qua. Chức năng này có thể cho phép sinh viên thay thể một quyển vở. IV.3.3.6. Tạo kế hoạch học tập Actor: Sinh viên Mô tả - Sinh viên chọn chức năng tạo lịch học tập - Hệ thống sẽ hiện thị một tờ lịch chứa các ngày trong tháng, sinh viên chọn ngày cần lập kế hoạch -Sinh viên điền thông tin về kế hoạch học tập của mình IV.4 Các sơ đồ luồng dữ liệu IV.4.1 Ta có sơ đồ phân cấp chức năng. Hệ thống trợ giúp học và thi trắc nghiệm QL Tài khoản QL Kế hoạch QL Ghi chú QL Câu hỏi QL Bài học QL Kì học Thi Thống kê Theo tài khoản Tất cả Thêm tài khoản Sửa tài khoản Xóa tài khoản Thêm Ghi chú Sửa Ghi chú Xóa Ghi chú Thêm câu hỏi Sửa câu hỏi Xóa câu hỏi Thêm kế hoạch Thêm Bài học Thêm kì học Sửa kế hoạch Sửa Bài học Sửa kì học Kì học Xóa kế hoạch Xóa kì học Xóa bài học Xem bài học * QL: Quản lý IV.4.2 Sơ đồ mức ngữ cảnh Phản hồi Thống kế báo cáo Quản lý ghi chú Xem bài học Quản lý bài học Hệ thống trợ giúp thi trắc nghiệm kiến thức mạng Nội dung bài học Phản hồi QL kì học Admin Sinh viên Đăng kí Phản hồi Phản hồi Quản lý câu hỏi Phản hồi Kết quả thi Quản lý tài khoản Làm bài thi Phản hồi Quản lý kế hoạch học tập Phản hồi IV.4.3 Sơ đồ DFD mức 0 Thông tin ghi chú Xác nhận Tài khoản Ghi chú 4 Quản lý tài khoản 5 Quản lý ghi chú Sinh viên 1 Quản lý kì học admin Thông tin kì học Xác nhận 2 Quản lý bài học 3 Quản lý câu hỏi Kì học admin Thông tin bài học Xác nhận Bài học admin Thông tin câu hỏi Xác nhận Câu hỏi Đáp án Xác nhận Sinh viên 8 Thi Làm bài Kết quả Kết quả 6 Quản lý sự kiện Thông tin sự kiện Sự kiện 7 Thống kê Xác nhận Thông tin tài khoản IV.4.4 Sơ đồ luồng dữ liệu DFD mức 1 IV.4.4.1 Admin quản trị các kì học Sinh viên 1.1 Thêm kì học mới 1.2 Thay đổi kì học 1.3 Xóa kì học Kì học D1 D2 D3 D4 D5 D6 D1 : - Admin chọn chức năng thêm kì học mới - Admin nhập thông tin về kì học mới D2 : Lưu lại thông tin về kì học mới xuống CSDL. D3 : Admin chọn kì học cần thay đổi Admin thay đổi thông tin vể kì học D4 : Ghi lại những thông tin vừa cập nhật xuống cơ sở dữ liệu D5 : Admin chọn kì học cần xóa D5 : Xóa kì học vừa chọn khỏi CSDL IV.4.4.2 Admin quản trị bài học – Sinh viên xem bài học Sinh viên 2.1 Thêm bài học mới 2.2 Thay đổi bài học 2.3 Xóa kì bài học bài học D1 D2 D3 D4 D5 D6 2.4 Xem nd bài học Admin D7 D8 D9 D1 : Admin chọn chức năng thêm bài học mới Admin nhập thông tin về bài học mới(Nội dung bài học , tiêu đề bài học) D2 : Lưu lại thông tin về bài học mới xuống CSDL. D3 : Admin chọn bài học cần thay đổi về tiêu đề hoặc nội dung Admin thay đổi thông tin về bài học(Nội dung bài học , tiêu đề bài học) D4 : Ghi lại những thông tin vừa cập nhật xuống cơ sở dữ liệu D5 : Admin chọn bài học học cần xóa D6 : Xóa bài học vừa chọn khỏi CSDL D7 : Sinh viên chọn bài học cần xem D8 : Thông tin về tiêu đề và nội dung của bài học sẽ được lấy từ cơ sở dữ liệu D9 : Thông tin về bài học trả về cho sinh viên IV.4.4.3 Admin quản trị câu hỏi thi Sinh viên 3.1 Thêm câu hỏi mới 3.2 Thay đổi câu hỏi 3.3 Xóa câu hỏi Câu hỏi + đáp án D1 D2 D3 D4 D5 D6 D1 : Admin chọn chức năng thêm câu hỏi mới Admin nhập thông tin về câu hỏi mới + Nội dung câu hỏi + Các đáp án lựa chọn + Các đáp án đúng D2 : Lưu lại thông tin về câu hỏi mới xuống CSDL. D3 : Admin chọn câu hỏi cần thay đổi Admin thay đổi thông tin vể câu hỏi + Nội dung câu hỏi + Các đáp án lựa chọn + Các đáp án đúng D4 : Ghi lại những thông tin vừa cập nhật xuống cơ sở dữ liệu D5 : Admin chọn câu hỏi cần xóa D6 : Xóa câu hỏi vừa chọn khỏi CSDL IV.4.4.4 Phần thông tin đăng kí thành viên Sinh viên 4.1 Đăng kí thành viên 4.2 Cập nhật thông tin Tài khoản D1 D2 D3 D4 4.3 Xóa tài khoản Admin D5 D6 D1 : Sinh viên chọn chức năng đăng kí thành viên trên hệ thống Nhập các thông tin của sinh viên cần cho việc lưu trữ :tên tài khoản, mật khẩu, họ và tên, ngày sinh, số điện thoại, địa chỉ. D2 : Lưu lại thông tin về thành viên mới xuống CSDL. D3 : Sinh viên chọn chức năng chỉnh sửa thông tin cá nhân - Chỉnh sửa lại những thông tin cần thiết D4 : Lưu lại những thông tin vừa chỉnh sửa xuống CSDL D5: Chọn tài khoản cần xóa D6: Xóa tài khoản vừa chọn khỏi cơ sở dữ liệu IV.4.4.5 Sinh viên chọn chức năng ghi chú cho bài học Sinh viên 5.1 Thêm ghi chú mới 5.2 Thay đổi ghi chú 5.3 Xóa ghi chú Ghi chú D1 D2 D3 D4 D5 D6 D1 : Sinh viên chọn chức năng thêm ghi chú mới trong quá trình học tập Sinh viên nhập thông tin về các ghi chú (tiêu đề, nội dung) D2 : Lưu lại thông tin về các ghi chú mới xuống CSDL. D3 : Sinh viên chọn ghi chú cần thay đổi về tiêu đề hoặc nội dung Sinh viên thay đổi thông tin vể ghi chú vừa chọn (Nội dung , tiêu đề) D4 : Ghi lại những thông tin vừa cập nhật xuống cơ sở dữ liệu D5 : Sinh viên chọn ghi chú cần xóa D6 : Xóa ghi chú vừa chọn khỏi CSDL IV.4.4.6 Sinh viên chọn chức năng thêm kế hoạch(kh) Sinh viên 6.1 Thêm kh mới 6.2 Thay đổi kh 6.3 Xóa kh Kế hoạch D1 D2 D3 D4 D5 D6 D1 : - Sinh viên chọn chức năng thêm kế hoạch mới(kế hoạch trong tuần , tháng) - Sinh viên nhập thông tin về các kế hoạch(Ngày thực hiện, nội dung, tiêu đề) D2 : Lưu lại thông tin về kế hoạch mới xuống CSDL. D3 : Sinh viên chọn kế hoạch cần thay đổi về tiêu đề hoặc nội dung Sinh viên thay đổi thông tin vể kế hoạch vừa chọn (Nội dung , tiêu đề) D4 : Ghi lại những thông tin vừa cập nhật xuống cơ sở dữ liệu D5 : Sinh viên chọn ngày cần thực hiện, chọn kế hoạchcần xóa D6 : Xóa kế hoạch vừa chọn khỏi CSDL IV.4.4.7 Báo cáo thống kê Kết quả 7.1 Báo cáo theo tài khoản Admin 7.2 Báo cáo thống kê tất cả D1 D2 D3 D4 D1: Admin chọn một tài khoản để xem thông tin từ cơ sở dữ liệu D2: Thông tin về điểm của thi sinh sẽ được trả về cho Admin D3: Admin chọn xem thông tin tất cả các thí sinh D4: Thông tin về điểm của tất cả các thi sinh đã thi sẽ được trả về cho Admin IV.4.4.8 Sinh viên chọn chức năng thi Sinh viên Câu hỏi 8.1 Thi D2 D1 Kết quả D3 D4 D1 : Sinh viên chọn chức năng làm bài thi của hệ thống D2 : Hệ thống sẽ đọc thông tin từ cơ sở dữ liệu. Hệ thống sẽ lựa chọn ngẫu nhiên những câu hỏi trong cơ sở dữ liệu. - Thông tin những câu hỏi(mã câu hỏi, nội dung, đáp án……) Sinh viên chọn những đáp án đúng trong nhiều đáp án cho một câu hỏi D3 : Ghi lại kết điểm bài làm của sinh viên xuống CSDL D4 : Thông báo điểm cho sinh viên IV.4.5 Thiết kế chi tiết về cơ sở dữ liệu Dựa trên các thông tin dữ liệu như trên ta có thể đưa ra các bảng như sau: Tb_hocki Tb_baihoc Tb_cauhoi Tb_dapan Tb_taikhoan Tb_ketqua Tb_ghichu Tb_sukien IV.4.6 Quan hệ giữa các bảng Các quan hệ giữa các thực thể + Với mỗi học kì ta có nhiều bài học. Mối quan hệ giữa thực thể hockì và bài học là quan hệ một nhiều + Với mỗi bài học thì ta có nhiều câu hỏi. Vì vậy quan hệ giữa hai thực thể này là quan hệ một nhiều + Đối với câu hỏi trắc nghiệm thì một câu hỏi có nhiều đáp án trả lời. Chính vị vậy quan hệ giữa hai thưc thể này cũng là quan hệ một nhiều + Đối với mỗi người dùng thì có nhiều bài thi. Vì vậy quan hệ giữa hai thực thể taikhoan và ketqua cung chính là quan hệ một nhiều. + Đối với mỗi sinh viên thì có thể tạo nhiều ghi chú cho mình trong quá trình học tập. Vì vậy quan hệ giữa hai thực thể tàikhoan và ghichu la quan hệ một nhiều + Đối với mỗi tài khoản thì có những kế hoạch và thời gian học tập của mình. Với mỗi người thì có nhiều kế hoạch học tập được đặt ra. Chính vì vậy quan hệ giữa hai thực thể này cũng là quan hệ một nhiều Ta có quan hệ giữa các thực thể trong hệ thống. IV.4.7 Thiết kế giao diện Trang chủ Màn hình về trang chủ Màn hình trang giới thiệu Màn hình trang Hướng dẫn Màn hình trang Liên hệ Trang chính của Website Màn hình các trang Quản trị website Trang Đăng nhập admin Trang đăng nhập tài khoản Màn hình trang Liên kết Màn hình trang quản trị Trang Quản trị website Trang cập nhật học kì Trang Hướng dẫn Người quản trị Trang cập nhật bài học Trang cập nhật thông tin sinh viên Trang cập nhật câu hỏi Trang thông tin thống kê Trang chính của Website Trang Cập nhật kế hoạch học tập Trang Cập nhật ghi chú bài học Trang xem bài học Màn hình hiện nội dung bài thi Trang kiểm tra nội dung bài học CHƯƠNG V: CÀI ĐẶT VÀ THỬ NGHIỆM V.1 Một số hình ảnh của chương trình 1. Giao diện chương trình 2. Xem thông tin bài giảng 3. Phần kiểm tra bài cũ 4. Phần thi trắc nghiệm 5. Giao diện khi làm bài thi KẾT LUẬN Các kết quả đã đạt được của đồ án - Nghiên cứu công nghệ Web Caching nhằm hỗ trợ việc tăng tốc của các hệ thống Web site, thực hiện cấu hình các hệ thống Web Caching đối với những trình duyệt thông dụng như Microsoft Internet Explore và Netscape - Các bước trong việc xây dựng và phân tích thiết kế một hệ thống thực tế - Các kĩ thuật trong việc thiết kế và xây dựng một Website - Sau thời gian nghiên cứu và phát triển, hệ thống thi trắc nghiệm cùng với công cụ quản trị của nó đã được hồn thiện ở một mức độ nhất định. - Hệ thống đã hoạt động tốt và đáp ứng được những yêu cầu chính đặt ra: Sử dụng công nghệ lập trình Web ASP để xây dựng hệ thống. Các chức năng quản trị của hệ thống. Các chức năng xem thông tin, nội dung các bài học. Chức năng kiểm tra cuối mỗi bài học Các chức năng tiện ích đối với qúa trình học tập của user (lịch học, ghi chú) Kiểm sốt quyền truy nhập hệ thống của user. Những vấn đề còn tồn tại Kết quả của đồ án tốt nghiệp tuy đã đạt được một số mục tiêu nhất định, nhưng đó mới chỉ là bước khởi đầu để xây dựng một hệ thống học và thi một cách hồn chỉnh. Hệ thống vẫn còn có những tồn tại cần giải quyết. Với sự quyết tâm đưa đề tài vào triển khai thực tế, tôi sẽ cố gắng đầu tư thời gian, công sức và trí tuệ để tiếp tục hồn thiện. Một số tồn tại có thể kể ra ở đây là: Tuy đã có hệ thống xem bài học nhưng nội dung bài học vẫn còn ở mức thô sơ, chưa có tương tác media(video,audio) Chưa có các module mô phỏng các thiết bị mạng hiện nay để có thể thực hiện những phần Lab trong quá trình học Hệ thống chưa có chức năng tải về các bài học đối với những người không có điều kiện thường xuyên ở trên Internet. Hệ thống câu hỏi thi chưa được chia đều cho mỗi bài học Phương hướng phát triển của đồ án Để khắc phục những tồn tại hiện có của hệ thống học và thi trên và phát triển nó thành một hệ thống E-learning hồn thiện để đưa vào sử dụng trong thực tiễn, cần có một số cải tiến sau đây: Thêm các phần tương tác với các hệ thống, thiết bị mô phỏng phục vụ cho việc cấu hình và xây dựng các hệ thống mạng ảo trên đó Phát triển thành một hệ thống trong đó có chức năng thi để lấy chứng chỉ Hỗ trợ việc sao lưu phục hồi dữ liệu một cách tự động. Tài liệu tham khảo [1] [2] [3] [4] Wessels, “Web Caching” O'Reilly & Associates 2001 [5] [6] Keyton Weissinger, “ASP in a Nutshell: A Desktop Quick Reference” O'Reilly & Associates 1999 [7] Jason Butler, “ASP Data Access for Beginners” [8] Manas Tungare, “A Practical Guide to Microsoft Active Server Pages” Conceicao Rodrigues College of Engineering in October 2000. [9] Marc Johnson, “JavaScript Manual of Style ” [10] Nguyễn Văn Ba “Phân tích và thiết kế hệ thống” Nhà xuất bản đại học Quốc Gia Hà Nội 2003

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

  • docxTin06.docx
Tài liệu liên quan