MỘT SỐ CÔNG NGHỆ VÀ KỸ THUẬT 2.1Microsoft NET
4.2 Các thành phần quan trọng trong SQL Server
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.
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.
2.5 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ì?
“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:
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
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
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 <background> - 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