Replication - Cơ chế tạo bản sao (Replica)
Giả sử có một database dùng để chứa dữ liệu được các ứng dụng thường xuyên cập nhật. Nếu muốn có một database giống y hệt như thế trên một server khác để chạy báo cáo (report database)_cách làm này thường dùng để tránh ảnh hưởng đến performance của server chính). Vấn đề là report server cũng cần phải được cập nhật thường xuyên để đảm bảo tính chính xác của các báo cáo. Không thể dùng cơ chế back up and restore trong trường hợp này. Thế thì phải làm sao? Lúc đó cơ chế replication của SQL Server sẽ được sử dụng để bảo đảm cho dữ liệu ở 2 database được đồng bộ (synchronized).
Data Transformation Service (DTS) - Dịch vụ chuyển dịch dữ liệu rất hiệu quả
Trong một công ty lớn dữ liệu được chứa trong nhiều nơi khác nhau và ở các dạng khác nhau cụ thể như chứa trong Oracle, DB2 (của IBM), SQL Server, Microsoft Access.Chắc chắn công ty sẽ có nhu cầu di chuyển dữ liệu giữa các server này (migrate hay transfer) và cũng muốn định dạng (format) nó trước khi lưu vào database khác, khi đó DTS sẽ giải quyết công việc trên dễ dàng.
Analysis Service - Một dịch vụ phân tích dữ liệu rất hay của Microsoft
Microsoft cung cấp một công cụ rất mạnh giúp cho việc phân tích dữ liệu trở nên dễ dàng và hiệu quả bằng cách dùng khái niệm hình khối nhiều chiều (multi-dimension cubes) và kỹ thuật "đào mỏ dữ liệu" (data mining).
Meta Data Service
Dịch vụ này giúp cho việc chứa đựng và sử dụng Meta data dễ dàng hơn. Meta Data là gì? Meta data là những thông tin mô tả về cấu trúc của data trong database như data thuộc loại nào String hay Integer., một cột nào đó có phải là khóa chính hay không.Bởi vì những thông tin này cũng được chứa trong database nên cũng là
129 trang |
Chia sẻ: netpro | Lượt xem: 1949 | Lượt tải: 5
Bạn đang xem trước 20 trang tài liệu Khóa luận Xây dựng và triển khai giải pháp Chợ điện tử, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
và chọn đường dẫn tới file .dll như hình dưới
Hình 2.13 - Cách Add một file .dll vào ứng dụng Web
Phát hành
Khai báo trong web.config
<add tagPrefix="DataGrid" assembly="MN120507.Controls"
namespace=”MN120507.Controls” />
Khai báo trong ascx
Sử dụng Control trong trang web (trang ascx hoặc aspx)
Lựa chọn lớp kế thừa: Việc lựa chọn các lớp kế thừa cũng có mức ảnh hưởng đến control được viết ra, sau đây có các loại chọn lớp kế thừa.
Chọn lớp Control
Không có giao diện trực quan cho thiết kế
Chọn lớp WebControl
Có giao diện trực quan cho thiết kế
Lớp WebControl hỗ trợ sẵn một số style như: Font, Color, Class….
Chọn các lớp Server Control có sẵn
Khi muốn thay đổi hoặc mở rộng chức năng cho các Control đó như: Label, TextBox….
Đưa Custom Control vào Toolbox
Mở trang .aspx trong chế độ thiết kế
Kích phải vào cửa sổ Toolbox, chọn Choose Items …
Sau đó chọn tab “.Net Framework Components”
Kích “Browse…” để chọn đường dẫn tới Control
Kích OK để đóng cửa sổ
Hình 2.14 - Đưa Custom Control vào Toolbox
So sánh giữa Custom Control và User Control
Sự giống nhau
Custom Control và User Control đều được thừa kế từ lớp Control.
Custom Control và User Control đều được sử dụng trong ứng dụng bởi các nhà lập trình viên với các mục đích khác nhau.
Sự khác nhau
Nếu không có loại ASP.NET server control nào có được đầy đủ nhu cầu, chức năng trong ứng dụng web thì các nhà lập trình có thể tạo ra hai dạng control là: Web User Control và Web Custom Control để đáp ứng điều đó. Điểm khác biệt chính giữa hai dạng control này là cách tạo & cách sử dụng chúng. Sau đây là bảng liệt kê các sự khác biệt chính giữa hai loại Control này:
Web User Controls
Web Custom Controls
Dễ xây dựng control
Khó xây dựng control hơn
Giới hạn sự hỗ trợ khi lập trình viên sử dụng công cụ thiết kế giao diện
Không giới hạn
Mỗi ứng dụng web (trang web) cần phải có một phiên bản của control.
Chỉ có duy nhất một phiên bản control được dùng trong global assembly cache.
Không thể thêm Control vào Toolbox trong bộ Visual Studio .NET
Có thể thêm Control vào Toolbox trong bộ Visual Studio .NET
Dùng tốt cho sự bố trí trang web tĩnh
Dùng tốt cho sự bố trí trang web động
Bảng 2.1 - Các điểm khác nhau giữa Custom Control và User Control
Microsoft SQL Server 2000
Giới Thiệu SQL Server 2000
SQL Server 2000 là một hệ thống quản lý cơ sở dữ liệu (Relational Database Management System_RDBMS) sử dụng Transact-SQL để trao đổi dữ liệu giữa Client computer và SQL Server computer. Một RDBMS bao gồm databases, database engine và các ứng dụng dùng để quản lý dữ liệu và các bộ phận khác nhau trong RDBMS.
SQL Server 2000 được tối ưu để có thể chạy trên môi trường cơ sở dữ liệu rất lớn (Very Large Database Environment) lên đến Tera-Byte và có thể phục vụ cùng lúc cho hàng ngàn user. SQL Server 2000 có thể kết hợp "ăn ý" với các server khác như Microsoft Internet Information Server (IIS), E-Commerce Server, Proxy Server....
SQL Server có 7 editions:
Enterprise : Chứa đầy đủ các đặc trưng của SQL Server và có thể chạy tốt trên hệ thống lên đến 32 CPUs và 64 GB RAM. Thêm vào đó nó có các dịch vụ giúp cho việc phân tích dữ liệu rất hiệu quả (Analysis Services)
Standard : Rất thích hợp cho các công ty vừa và nhỏ vì giá thành rẻ hơn nhiều so với Enterprise Edition, nhưng lại bị giới hạn một số chức năng cao cấp (advanced features) khác, edition này có thể chạy tốt trên hệ thống lên đến 4 CPU và 2 GB RAM.
Personal: được tối ưu hóa để chạy trên PC nên có thể cài đặt trên hầu hết các phiên bản windows kể cả Windows 98.
Developer : Có đầy đủ các tính năng của Enterprise Edition nhưng được chế tạo đặc biệt như giới hạn số lượng người kết nối vào Server cùng một lúc.... Ðây là edition mà các bạn muốn học SQL Server cần có. Edition này có thể cài trên Windows 2000, NT.
Desktop Engine (MSDE): Ðây chỉ là một engine chạy trên desktop và không có user interface (giao diện). Thích hợp cho việc triển khai ứng dụng ở máy client. Kích thước database bị giới hạn khoảng 2 GB.
Win CE : Dùng cho các ứng dụng chạy trên Windows CE
Trial: Có các tính năng của Enterprise Edition, download free, nhưng giới hạn thời gian sử dụng.
Các thành phần quan trọng trong SQL Server 2000
SQL Server 2000 được cấu tạo bởi nhiều thành phần như Relational Database Engine, Analysis Service và English Query.... Các thành phần này khi phối hợp với nhau tạo thành một giải pháp hoàn chỉnh giúp cho việc lưu trữ và phân tích dữ liệu một cách dễ dàng.
Hình 2.15 – Mô hình mô tả các thành phần của SQL Server
Relational Database Engine - Lõi của SQL Server
Ðây là một engine có khả năng chứa dữ liệu ở các quy mô khác nhau dưới dạng bảng (table) và hỗ trợ tất cả các kiểu kết nối dữ liệu (data connection) thông dụng của Microsoft như: ActiveX Data Objects (ADO), OLE DB, và Open Database Connectivity (ODBC). Ngoài ra nó còn có khả năng tự điều chỉnh (tune up) ví dụ như sử dụng thêm các tài nguyên (resource) của máy khi cần và trả lại tài nguyên cho HĐH khi một user log off.
Replication - Cơ chế tạo bản sao (Replica)
Giả sử có một database dùng để chứa dữ liệu được các ứng dụng thường xuyên cập nhật. Nếu muốn có một database giống y hệt như thế trên một server khác để chạy báo cáo (report database)_cách làm này thường dùng để tránh ảnh hưởng đến performance của server chính). Vấn đề là report server cũng cần phải được cập nhật thường xuyên để đảm bảo tính chính xác của các báo cáo. Không thể dùng cơ chế back up and restore trong trường hợp này. Thế thì phải làm sao? Lúc đó cơ chế replication của SQL Server sẽ được sử dụng để bảo đảm cho dữ liệu ở 2 database được đồng bộ (synchronized).
Data Transformation Service (DTS) - Dịch vụ chuyển dịch dữ liệu rất hiệu quả
Trong một công ty lớn dữ liệu được chứa trong nhiều nơi khác nhau và ở các dạng khác nhau cụ thể như chứa trong Oracle, DB2 (của IBM), SQL Server, Microsoft Access....Chắc chắn công ty sẽ có nhu cầu di chuyển dữ liệu giữa các server này (migrate hay transfer) và cũng muốn định dạng (format) nó trước khi lưu vào database khác, khi đó DTS sẽ giải quyết công việc trên dễ dàng.
Analysis Service - Một dịch vụ phân tích dữ liệu rất hay của Microsoft
Microsoft cung cấp một công cụ rất mạnh giúp cho việc phân tích dữ liệu trở nên dễ dàng và hiệu quả bằng cách dùng khái niệm hình khối nhiều chiều (multi-dimension cubes) và kỹ thuật "đào mỏ dữ liệu" (data mining).
Meta Data Service
Dịch vụ này giúp cho việc chứa đựng và sử dụng Meta data dễ dàng hơn. Meta Data là gì? Meta data là những thông tin mô tả về cấu trúc của data trong database như data thuộc loại nào String hay Integer..., một cột nào đó có phải là khóa chính hay không....Bởi vì những thông tin này cũng được chứa trong database nên cũng là một dạng data nhưng để phân biệt với data "chính thống" người ta gọi nó là Meta Data.
SQL Server Tools – Các công cụ SQL Server (DBA _Database Administrator)
Enterprise Manager. Ðây là một công cụ cho thấy toàn cảnh hệ thống CSDL một cách rất trực quan.
Query Analyzer. Ðây là một môi trường làm việc khá tốt vì có thể đánh bất kỳ câu lệnh hay Stored Procedure của SQL nào và thực thi chúng.
SQL Profiler. Nó có khả năng "chụp" (capture) tất cả các sự kiện hay hoạt động diễn ra trên một SQL server và lưu lại dưới dạng file Text rất hữu dụng trong việc kiểm soát hoạt động của SQL Server.
Ngoài ra còn có osql và bcp (bulk copy) trong command prompt.
AJAX (Asynchronous JavaScript+CSS+DOM+XMLHttpRequest)
Nguồn gốc Ajax
Nguồn gốc của AJAX được bắt đầu từ khi Microsoft phát triển công nghệ Remote Scripting vào năm 1998. Tuy nhiên, phương pháp tải không đồng bộ nội dung trên một trang Web đã xuất hiện trong thành tố IFRAME của Internet Explorer 3 (1996) và thành tố LAYER của Netscape 4.0 năm 1997. Khi giới thiệu Internet Explorer 4.0, Microsoft đã sử dụng mô hình đối tượng tài liệu DOM khác biệt. Đến năm 2000, Netscape hoàn toàn đánh mất thị trường trình duyệt vào tay hãng phần mềm của Bill Gates và thành tố LAYER cũng không còn được các chuyên gia phát triển Web chú ý tới. Vài năm sau, AJAX lại lôi kéo được sự quan tâm của giới công nghệ và trở thành công cụ cải tiến giao diện người dùng cho ứng dụng Web. Thuật ngữ này xuất hiện vào tháng 2/2005 trong bài viết nổi tiếng của Jesse James Garrett trên trang Adaptive Path. Từ đó, AJAX trở thành trung tâm trong mọi câu chuyện liên quan đến thế hệ Web 2.0.
Ajax là gì?
Đây là định nghĩa của Garrett về AJAX:
“AJAX không phải là một công nghệ. Nó là tập hợp của nhiều công nghệ với thế mạnh của riêng mình để tạo thành một sức mạnh mới”
AJAX bao gồm:
Thể hiện Web theo tiêu chuẩn XHTML và CSS
Nâng cao tính năng động và phản hồi bằng DOM (Document Object Model )
Trao đổi và xử lý dữ liệu bằng XML và XSLT và dữ liệu sẽ được lấy về từ Server
Truy cập dữ liệu theo kiểu bất đồng bộ (asynchronous) bằng XMLHttpRequest
Và tất cả các kỹ thuật trên được liên kết lại với nhau bằng JavaScript
Tại sao phải lựa chọn Ajax
Với Ajax không những có thể xây dựng được một trang Web động và nhanh , mà còn tiết kiệm được tài nguyên (Ví dụ, khi người dùng gởi yêu cầu lên server, server sẽ hồi đáp lại mà không refresh lại toàn bô trang, dữ liệu sẽ được load ngầm)
Với nguồn tài nguyên chia sẻ giúp tận dụng năng lực của tất cả máy tính client hơn là chỉ sử dụng duy nhất một server và mạng. Ajax cho phép thực hiện việc truy xuất trên máy client (trong JavaScript) với dữ liệu được lấy về từ server
Tiến trình của một trang Web trước đây chỉ từ một phía server, sử dụng dịch vụ Web (Web services) hoặc PHP scripts, trước đây toàn bộ trang được gởi trong vòng một mạng. Nhưng với công nghệ Ajax có thể chọn, chỉnh sửa chỉ một phần của trang được hiển thị bời trình duyệt, và cập nhật nội dung của nó mà không cần phải load lại (reload) lại toàn bộ dữ liệu giống như với các: images, menus, v.v…
Chiều sâu Ajax
Ajax là nột tập hợp các công nghệ, được hỗ trợ bởi trình duyệt Web, bao gồm các yếu tố sau:
HTML và CSS cho trình diễn
JavaScript cho tiến trình cục bộ, và DOM (Document Object Model) để truy xuất dữ liệu bên trong trang Web hoặc truy xuất các thành phần của file XML đọc trên Server (với phương thức getElementByTagName)…
Lớp XMLHttpRequest đọc hoặc gởi dữ liệu trên Server một cách không đồng bộ.
Bên cạnh đó còn có các tuỳ chọn khác như:
Lớp DomParser
PHP hoặc các ngôn ngư kịch bản khác có thể được sử dụng trên Server
XML và XSLT để xử lý dữ liệu được trả về dưới định dạng XML
SOAP có thể được sử dụng để đối thoại với Server
Từ “Asynchronous - (bất đồng bộ)” nghĩa là sự phản hồi lại từ Server được sẵn sàng xử lý mà không cần chờ và đóng băng sự hiển thị của trang Web.
Sự khác biệt giữa AJAX và trang Web truyền thống
Hai mô hình dưới đây minh họa 2 cơ chế làm việc hoàn toàn khác nhau: một bên là cơ chế của các ứng dụng Web truyền thống và một bên là ứng dụng Web sử dụng công nghệ Ajax.
Hình 2.16 (a) -Mô hình cổ điển của
một ứng dụng Web
Hình 2.16 (b) – Mô hình sử dụng Ajax
Rõ ràng điểm khác biệt là thay vì phải tải cả trang Web thì với AJAX bạn chỉ cần tải về phần của trang Web mà bạn muốn thay đổi. Điều này giúp cho ứng dụng Web của bạn phản hồi nhanh hơn, thông minh hơn. Điểm đặc biệt quan trọng trong công nghệ AJAX nằm ở chữ A (Asynchronous) – bất đồng bộ.
Một trong những điểm mấu chốt của công nghệ Ajax là bạn không tương tác trực tiếp với máy chủ như cách truyền thống mà là qua một lớp trung gian của Ajax. Có 3 lý do:
Không phải lúc nào bạn cũng cần phải tương tác với máy chủ. Như trong trường hợp của Gmail, một khi giao diện của Gmail đã được tải về xong thì những tác vụ như chuyển từ thư mục này sang xem thư mục khác không nhất thiết phải hỏi lại máy chủ (tất nhiên với điều kiện dữ liệu đã có sẵn)
Bằng cách chỉ nhận những thông tin cần thiết (ở dạng XML), dung lượng truyền tải giữa máy tính của bạn và máy chủ sẽ giảm đi rất nhiều. Sau khi giao diện đã được tải về 1 lần, Ajax sẽ không cần phải tải lại toàn bộ giao diện đó mỗi khi tương tác với máy chủ. Thay vào đó, Ajax sẽ gởi yêu cầu đến máy chủ và nhận kết quả từ máy chủ về những gì đã thay đổi sau khi máy chủ thực hiện yêu cầu đó. Ajax sau đó sẽ thông báo cho phần giao diện (thông qua các lời gọi Javascript) thực hiện các thay đổi tương ứng trên giao diện.
Tương tác giữa phần giao diện và Ajax là tương tác nội bộ bên trong trình duyệt, giúp cho các thay đổi sẽ được thể hiện gần như tức thì.
Cốt lõi của Ajax
Các ứng dụng Web thông thường làm việc trên mô hình đồng bộ, nghĩa là khi có yêu cầu Web của ai đó thì đi cùng với nó là một đáp ứng thực hiện một vài hành động trong lớp trình diễn (presentation).
Ví dụ, việc click một link hay nhấn nút submit sẽ tạo ra một yêu cầu đến Web server với các tham số có liên quan. Thói quen “click và wait” này đã giới hạn sự tương tác của các ứng dụng. Vấn đề này được làm giảm bớt bằng việc sử dụng công nghệ Ajax. Với mục đích của bài viết này chúng tôi chỉ xem Ajax như một phương thức gọi không đồng bộ của nó tác động đến Web server mà không phải refresh toàn bộ trang Web. Loại tương tác này có thể thực hiện được bởi ba thành phần: ngôn ngữ scripting trình khách, đối tượng XmlHttpRequest(XHR) và XML.
Ngôn ngữ scripting trình khách: Để khởi tạo các lệnh gọi đến server, sau đó để truy cập chương trình và update DOM bên trong trình duyệt của trình khách. Sự lựa chọn phổ biến nhất trên trình khách là Javascript vì sự hiển thị của nó với các trình duyệt là khá tốt.
XHR - đây mới thực sự là trái tim của kỹ thuật này. Javascript sử dụng đối tượng XHR để gửi các yêu cầu đến Web server ẩn dưới kịch bản và sử dụng HTTP như một trung gian truyền tải. XML sẽ định dạng dữ liệu cho các messages mà có thể thay đổi.
XML: Nhiều trang sử dụng JSON (Javascript Object Notation) trong phần XML bởi vì cú pháp của nó dễ hơn. Khi sử dụng Javascript để phân tích cú pháp JSON thì nó đơn giản nhiều. Mặt khác ai đó cũng có thể sử dụng Xpath để phân tích quay trở lại cú pháp XML. Cũng có nhiều trang Ajax không sử dụng XML hay JSON, thay vào đó chỉ gửi những mẩu HTML đã được chèn động tính vào trong trang Web.
Trong thực tế, tất cả các yêu cầu XHR vẫn được xử lý bởi server side frameworks điển hình như các chuẩn giống J2EE, .Net và PHP. Tính không đồng bộ của các ứng dụng Ajax được thể hiện trong hình dưới đây.
Hình 2.17 – Tương tác giữa Client và Server
Hoạt động của Ajax
Từ lâu, mọi người đã tưởng tượng ứng dụng máy tính rồi sẽ được lưu và chạy hoàn toàn trên Web thay vì nằm bó buộc trong ổ cứng. Dù vậy, viễn cảnh đó vẫn chưa thể xảy ra do ứng dụng Web bị hạn chế bởi nguyên lý rằng tất cả các thao tác phải được thực hiện thông qua HTTP (HyperText Transfer Protocol - Giao thức truyền tải siêu liên kết).
Những hoạt động của người sử dụng trên trang Web sẽ tạo ra một yêu cầu HTTP tới server. Máy chủ thực hiện một số khâu xử lý như lấy lại dữ liệu, tính toán, kiểm tra sự hợp lệ của thông tin, sửa đổi bộ nhớ, sau đó gửi lại một trang HTML hoàn chỉnh tới máy khách. Về mặt kỹ thuật, phương pháp này khá bất tiện và mất thời gian vì khi server đang thực hiện vai trò của nó thì người dùng sẽ phải chờ đợi.
Hình 2.18 – Ứng dụng Web truyền thống (trái) và Ajax (phải)
Để khắc phục hạn chế trên, các chuyên gia phát triển giới thiệu hình thức trung gian - cơ chế xử lý AJAX - giữa máy khách và máy chủ. Điều này giống như việc tăng thêm một lớp giữa cho ứng dụng để giảm quá trình "đi lại" của thông tin và giảm thời gian phản ứng. Thay vì tải lại (refresh) toàn bộ một trang, nó chỉ nạp những thông tin được thay đổi, còn giữ nguyên các phần khác. Vì vậy, khi duyệt một trang hỗ trợ AJAX, người dùng không bao giờ nhìn thấy một cửa sổ trắng (blank) và biểu tượng đồng hồ cát - dấu hiệu cho thấy máy chủ đang thực hiện nhiệm vụ. Ví dụ: trong một Website ảnh, với ứng dụng truyền thống, toàn bộ trang chứa các ảnh sẽ phải mở lại từ đầu nếu có một thay đổi nào đó trên trang. Còn khi áp dụng AJAX, DHTML chỉ thay thế đoạn tiêu.
Jesse James Garrett đã viết "Mọi thao tác của người sử dụng sẽ gửi lệnh JavaScript tới bộ xử lý AJAX, thay vì tạo ra một yêu cầu HTTP (HTTP request) và truy vấn tới máy chủ. Nếu cần gì từ server, như tải về bổ sung mã giao diện hay nhận dữ liệu mới, AJAX sẽ truyền yêu cầu tới máy chủ một cách không đồng bộ, thông thường sử dụng XML, mà không làm gián đoạn sự tương tác của người dùng với ứng dụng Web".
Hình 2.19 – Tương tác đồng bộ trong ứng dụng web truyền thống (trên) và
dị bộ trong ứng dụng AJAX. (Adaptive Path)
Các yếu tố trong Ajax
JavaScript
JavaScript là một ngôn ngữ lập trình đa năng, nó tương đối giống C. JavaScript được biết dưới dạng một ngôn ngữ có kiểu tự do, thông dịch.
CSS
(Cascading Style Sheets)
CSS đưa ra một phương pháp định nghĩa giao diện người sử dụng cho các thành phần của trang Web.
Trong một ứng dụng của Ajax, các kiểu giao diện người sử dụng có thể được chỉnh sửa thông qua CSS.
DOM
(Document Object Model)
DOM giúp phân tích một tài liệu (một trang web chẳng hạn) phục vụ cho cơ chế của JavaScript. Sử dụng DOM, cấu trúc của tài liệu có thể được phân rã theo cấu trúc cây và thao tác theo các nút
Đối tượng XMLHttpRequest
(XHR)
XHR không phải là một chuẩn, nên có những sự khác biệt nhỏ trong các trình duyệt về hỗ trợ đối tượng này, tuy nhiên hầu hết các phương thức và thuộc tính của nó đều được hỗ trợ. Hiện thời, Firefox, Safari, Opera, Konqueror, và Internet Explorer tất cả đều hỗ trợ XHR tương tự nhau.
Bảng 2.2 – Các yếu tố trong AJAX
Hình 2.20 - Bốn thành phần chính của Ajax
JavaScript
Cách thức Ajax làm việc với JavaScript
Trong trình duyệt, code được viết trong Javascript có thể lấy dữ liệu về từ Server.
Khi quá nhiều dữ liệu được lấy về từ Server, Javascript sử dụng một item đặc biệt được hỗ trợ bởi trình duyệt đó là đối tượng XmlHttpRequest (XHR).
Javascript trong trình duyệt không dừng mọi việc để chờ đợi dữ liệu được lấy về từ Server. Nó có thể chờ dữ liệu trong một background để đưa dữ liệu vào trang Web khi dữ liệu xuất hiện (đây là một hình thức load dữ liệu ngầm từ Server - Sự bất đồng bộ).
Ajax không phải là một công nghệ phức tạp! Điểm mấu chốt của Ajax nằm ở XMLHttpRequest. Đây là một kỹ thuật do Microsoft khởi xướng và tích hợp lần đầu tiên vào IE5 dưới dạng một ActiveX . Mozilla tích hợp công nghệ này vào Mozilla 1.0/Netscape 6 sau đó. Và dĩ nhiên tất cả các version của Firefox đều hỗ trợ XMLHttpRequest , hiện nay đã có trong trình duyệt Safari 1.2 (Apple) và Opera 8 trở lên.
Thông thường, khi người dùng có một yêu cầu thay đổi dữ liệu trên trang Web, yêu cầu thay đổi được gửi về server dưới dạng HTTP request (hay còn gọi postback), server sẽ xử lý yêu cầu này và gửi trả lại trang HTML khác thay thế trang cũ. Qui trình này được mô tả là nhấp-chờ và tải lại (click-wait-and-refresh).
Giới thiệu về DOM
DOM giúp phân tích một tài liệu (một trang web chẳng hạn) phục vụ cho cơ chế của JavaScript. Sử dụng DOM, cấu trúc của tài liệu có thể được phân rã theo cấu trúc cây, có các phần tử là các nút, các nút con và thao tác theo các nút (đệ qui). Đây là một khả năng đặc biệt hữu ích để viết một ứng dụng Ajax. Trong các ứng dụng web truyền thống, trình duyệt phải tái nạp các trang HTML theo một luồng từ server.
Trong một ứng dụng AJAX, sự thay đổi giao diện người dùng chủ yếu được tạo ra bởi DOM. Các thẻ HTML trong trang web được tổ chức theo cấu trúc cây. Gốc của cây là thẻ , để biểu diễn tài liệu. Trong đó thẻ biểu diễn phần thân của tài liệu, là gốc của phần hiển thị của tài liệu. Trong thân của tài liệu, có các bảng, paragraph, list, và các loại thẻ khác với các thẻ ở mức thấp hơn nữa.
JavaScript làm việc với nút gốc của trang web hiện thời qua một biến toàn cục gọi là document, biến này là điểm bắt đầu của mọi thao tác trên DOM. Phần tử DOM đã được đặc tả bởi W3C. Mỗi phần tử DOM có một phần tử cha duy nhất, có hoặc không có các phần tử con, và có một số bất kỳ các thuộc tính, chúng được lưu trữ trong mảng móc nối.
Mối quan hệ giữa các phần tử DOM có thể được đối chiếu bởi danh sách các thành phần HTML. Mối quan hệ này là hai chiều. Sửa đổi mô hình DOM sẽ thay đổi cấu trúc HTML và dẫn đến thay đổi cách biểu diễn một trang web.
Giới thiệu về XmlHttpRequest (XHR)
XHR được đưa ra ban đầu trong Internet Explorer 5 như là một ActiveX component. Nó chỉ hoạt động trong Internet Explorer làm cho số ít các nhà phát triển làm việc với XHR, cho tới khi nó trở thành một chuẩn không chính thức trong Mozilla 1.0 và Safari 1.2.
Một điều rất quan trọng cần chú ý là XMLHttpRequest không là chuẩn của W3C nên có những sự khác biệt nhỏ trong các trình duyệt về hỗ trợ đối tượng này, tuy nhiên hầu hết các phương thức và thuộc tính của nó đều được hỗ trợ. Hiện thời, Firefox, Safari, Opera, Konqueror, và Internet Explorer tất cả đều hỗ trợ XMLHttpRequest tương tự nhau.
Tạo một thể hiện của đối tượng XMLHttpRequest
var xmlHttp; function createXMLHttpRequest() { if (window.ActiveXObject) { xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); } else if(window.XMLHttpRequest){ xmlHttp = new XMLHttpRequest();} }
Việc tạo một đối tượng XMLHttpRequest khá đơn giản. Trước tiên, tạo một biến toàn cục xmlHttp để lưu trữ một tham chiếu đến đối tượng. Phương thức createXMLHttpRequest thực hiện việc tạo một thể hiện của XMLHttpRequest. Đoạn chương trình này chứa một câu lệnh rẽ nhánh đơn giản để xác định cách thức tạo một đối tượng.
Lệnh gọi window.ActiveXObject sẽ trả về một biến kiểu object hay giá trị null, tương đương với điều kiện true hay false của câu lệnh if, đây là dấu hiệu chỉ ra cho ta biết trình duyệt hỗ trợ ActiveX control, đó là Internet Explorer. Nếu vậy, XMLHttpRequest được tạo ra là một thể hiện của ActiveXObject, truyền một chỉ báo kiểu string để xác định loại đối tượng ActiveX cần tạo. Trong thể hiện này, ta cung cấp tham số “Microsoft.XMLHTTP” cho hàm tạo, để chỉ ra rằng cần tạo một thể hiện của XMLHttpRequest.
Nếu lệnh gọi tới window.ActiveXObject không được thực thi (điều kiện false của lệnh if), lệnh JavaScript sẽ rẽ nhánh tương ứng với lệnh else, để xác định rằng trình duyệt thực thi XMLHttpRequest dưới dạng một đối tượng JavaScript nguyên thủy. Nếu window.XMLHttpRequest tồn tại, sau đó một thể hiện của XMLHttpRequest được tạo ra.
Kiểu dữ liệu XMLHttpRequest của JavaScript tương thích với rất nhiều trình duyệt khác nhau, có thể truy cập các thuộc tính và phương thức của một thể hiện của XMLHttpRequest mà không cần quan tâm tới cách tạo các thể hiện này. Điều này làm cho việc phát triển các ứng dụng đơn giản hơn và làm cho JavaScript không phụ thuộc vào trình duyệt cụ thể.
Xử lý HttpRequest
Để gửi một HttpRequest đến server bằng JavaScript, bạn cần tạo một đối tượng của lớp cung cấp tính năng này. Trong IE thì lớp này tồn tại dưới dạng một đối tượng ActiveX có tên là XMLHttp. Đối tượng này có từ IE 4.0.
var httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
Nếu MSXML được cài đặt thì bạn cũng có thể gọi:
var httpRequest = new ActiveXObject("Msxml2.XMLHTTP");
Ở Mozilla, Firefox, Opera 8.0, Safari và các trình duyệt khác thì lớp này có tên là XMLHttpRequest. Đối tượng XMLHttpRequest không phải là một chuẩn của W3C (tương lai có thể được W3C chấp thuận). Đối tượng XMLHttpRequest được hỗ trợ ở IE 5.0+, Safari 1.2+, Mozilla 1.0+/ Firefox, Opera 8.0+ và Netscape 7+.
var httpRequest = new XMLHttpRequest();
Do sự khác biệt này, nên để ứng dụng của bạn chạy trên nhiều trình duyệt thì bạn có thể làm như sau:
if (window.XMLHttpRequest) { // Mozilla, Safari, ...
httpRequest = new XMLHttpRequest();
} else if (window.ActiveXObject) { // IE
httpRequest=new ActiveXObject("Microsoft.XMLHTTP");}
Do ActiveX trên IE rất nguy hiểm cho người dùng nên nhiều trường hợp tính năng này được mặc định cấm, vì vậy bạn cần kiểm tra trình duyệt của người sử dụng trước khi gọi đối tượng xmlhttp. Việc kiểm tra này được thực hiện qua giá trị của window.ActiveXObject. Ví dụ,
if (window.ActiveXObject) {
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP")
} else { ...}
Một số phiên bản của trình duyệt Mozilla không làm việc đúng khi nhận đáp trả từ server không có header chứa XML mime-type. Để khắc phục vấn đề này, bạn có thể sử dụng phương thức định nghĩa lại phần header do server gửi đến trong trường hợp nó không phải là text/xml.
httpRequest = new XMLHttpRequest();
httpRequest.overrideMimeType(text/xml);
Tiếp theo, bạn cần xác định muốn làm gì sau khi nhận được đáp trả (response) từ server. Giai đoạn này, bạn chỉ cần báo cho đối tượng HttpRequest biết hàm JavaScript sẽ làm công việc xử lý đáp trả. Điều này được thực hiện bằng cách thiết lập thuộc tính onreadystatechange của đối tượng thành tên của hàm JavaScript:
httpRequest.onreadystatechange = nameOfTheFunction;
Chú ý không dùng cặp ngoặc đơn () sau tên hàm và không truyền tham số vào hàm đó. Thêm nữa, thay vì trao tên hàm thì bạn có thể sử dụng kĩ thuật định nghĩa hàm động:
httpRequest.onreadystatechange = function()
{ // do the thing };
Sau khi đã khai báo những gì sẽ diễn ra lúc nhận được response, bạn tiến hành gửi request. Bạn cần gọi các phương thức open() và send() của lớp HttpRequest:
httpRequest.open(GET, true);
httpRequest.send(null);
Tham số GET là phương thức HttpReques
Các file đính kèm theo tài liệu này:
- Xây dựng và triển khai giải pháp Chợ điện tử.doc