Thứ Năm, 17 tháng 9, 2009

Tìm hiểu Reverse AJAX


Tìm hiểu Reverse AJAX



Cùng với những kỹ thuật lập trình web mới ra đời, AJAX được xem là một ứng cử viên sáng giá trong việc nâng cao khả năng tương tác giữa website và người dùng. Giờ đây một kỹ thuật nữa lại ra đời Reverse AJAX, hứa hẹn sẽ cải thiện đáng kể hiệu suất của ứng dụng web tương tác hiện nay.

AJAX giúp nâng cao tính tương tác và thuận tiện giữa người dùng và ứng dụng web. Reverse Ajax còn làm nhiều hơn thế nữa, nó cho phép trang web có được dữ liệu thời gian thực, giúp giảm lượng request từ client đến server để kiểm tra dữ liệu mới.

Trước khi đi vào phần chi tiết, bạn nên tìm hiểu một chút về AJAX

Tại sao có Reverse AJAX, vấn đề đang gặp phải là gì?

Trước hết ta cần biết về nguyên tắc làm việc của ứng dụng web - giao thức HTTP, nó theo cơ chế: Request - Response. Trước tiên client sẽ gởi request lên server yêu cầu một nguồn tài nguyên nào đó; server sẽ tiếp nhận, xử lý và trả kết quả về (response); lúc đó kết nối hai bên bị ngắt. Server hoàn toàn KHÔNG THỀ chủ động liên lạc với client được, hay nói cách khác nếu server có một thông tin gì đó cần gởi cho client, nó không thể làm được. Nó chỉ có thể gởi cho client nếu như client kích khởi một yêu cầu mới.

Với AJAX ta có thể làm cho quá trình này trong suốt hơn với người dùng - hãy hình dung một chương trình chat - sẽ cấu hình cho client định kỳ gởi request lên server để lấy dữ liệu. Nhưng làm như thế sẽ rất tốn tài nguyên (không thể áp dụng cho hệ thống nhiều user truy cập) vì không phải lúc nào request lên cũng có dữ liệu mới, và không cập nhật tức thời (độ trể (legacy) cao - mỗi lần gởi request lên server phải tạo connection mới).
Thật sự thì Reverse AJAX không thay đổi được cơ chế Request - Response hiện tại của giao thức HTTP. Nó chỉ đơn giản là những mẹo (trick) để giải quyết một vấn đề đang gặp phải.

Reverse AJAX là gì?

Cũng như các kỹ thuật khác như AJAX, Reverse AJAX không phải là cái gì đó mới mẻ, nó là một tập hợp của những kỹ thuật hiện có để Push dữ liệu, ứng dụng các kỹ thuật này vào AJAX ta có Reverse AJAX. Thuật ngữ này được DWR - một thư viện mã nguồn mở của Java đưa ra. Một số thuật ngữ khác như AJAX Push, Two-way-web, HTTP Streaming, HTTP server push đều hàm ý chỉ phương pháp này.
Reverse AJAX cho phép server đẩy dữ liệu về phía client ngay khi cần thiết
Sau đây là mô tả về ba kỹ thuật được sử dụng để giải quyết vấn đề làm cách nào để server push dữ liệu về client

Polling

Hình dung bạn cùng gia đình đi chơi cuối tuần, chở baby theo. Baby cứ ngồi trên xe hỏi liện tục "Tới chưa ba, tới chưa ba", bạn sẽ trả lời là "Chưa tới", và sau đó là "Tới rồi" (đừng trả lời là "Mệt quá hỏi quài nha" - lúc đó là server đang treo đó). Vợ bạn thì ngủ trên xe, tới nơi bạn kêu "Dậy đi má nó " lúc đó vợ bạn thức dậy.


Polling là kỹ thuật định kỳ gởi request lên server hỏi xem có dữ liệu mới không. Như đã nói ở trên, đây là cách cực kỳ tốn kém tài nguyên vì không phải lần request nào cũng có dữ liệu mới và không hiệu quả vì nó gây ra hiệu ứng giống như đang bị DOS


Comet, long lived Http, the slow load technique



Tất cả đều chỉ chung một kỹ thuật. Kỹ thuật này đòi hỏi có một kết nối thường trực giữa server và client. Khi client bắt đầu yêu cầu trang web, server sẽ trả lời một các cực kỳ chậm nhằm duy trì một kết nối càng lâu càng tốt với client.

Nếu vậy chẳng lẻ request lên xong server trả lời từ từ hoài? Vậy làm sao có được nội dung cần thiết? Chắc chắn không có ai làm như thế, chúng ta sẽ dùng một cách khác là sử dụng iframe (inline frame). Trang web sẽ được lồng vào một iframe ẩn, nội dung web vẫn bình thường, chỉ có nội dung iframe là được trả lời càng chậm càng tốt.


Bằng cách này user sẽ có trang nội dung bình thường cộng thêm một kết nối luôn luôn mở. Như vậy với kết nối này server có thể gởi dữ liệu về client, sau đó sẽ được javascript xử lý hiển thị cho người dùng xem. Các hàm sự kiện javascript sẽ cho ta biết lúc nào có dữ liệu mới được server đưa về



Piggyback



Khái niệm này - Piggy-backing - có thể hiểu như bạn làm một việc gì đó mà việc đó dựa vào một việc khác.
Có nghĩa là server sẽ gởi thông tin về client cùng lúc với request của client cho một dữ liệu khác. Khi có thông tin cần gởi cho client, server sẽ lưu lại chờ lần request tiếp theo của client sẽ gởi kèm theo.

Ví dụ tôi muốn thông báo cho bạn A hôm nay nghỉ học nhưng không biết làm sao để thông báo. Tự nhiên bạn A đến nhà tôi hỏi bài, tôi liền nói bạn là hôm nay nghỉ học. Dự định bạn A đến nhà tôi không phải để biết thông tin có đi học không, nhưng ngoài thông tin bạn cần tôi gởi thêm thông tin nghỉ học nữa.


Kết luận

Reverse AJAX không phải là một kỹ thuật mới, và nó cũng không giúp giải quyết được dứt điểm vấn đề. Tuy nhiên việc áp dụng nó sẽ giúp LTV giảm độ trể (legacy) của thông tin cần truyền cho client. Polling và Piggyback là những kỹ thuật được dùng phổ biến lâu nay. Comet là kỹ thuật tốt để giải quyết vấn đề, tuy nhiên việc phải duy trì một never-closed connection cho từng client cũng không phải là chuyện đơn giản đối với ứng dụng đa người dùng.


Socket là giải pháp tốt để giúp truyền dữ liệu từ server về client, chỉ tiếc là socket không thề hoạt động hoàn hảo trên nền web do bị vướng firewall, ...

Các công nghệ mới như Flex, Siverlight có những cách giải quyết của riêng nó, bạn nên tham khảo qua để biết.

Thứ Tư, 16 tháng 9, 2009

Tư vấn miễn phí dịch vụ SEO, quảng bá, Thiết kế Website

Tư vấn miễn phí dịch vụ SEO, quảng bá, Thiết kế Website
SEOlanlinh - Website dịch vụ SEO, quảng bá Web - mong muốn tư vấn miễn phí các giải pháp quảng bá Website cũng như cung cấp các dịch vụ SEO chuyên nghiệp tới các Webmaster Việt Nam quan tâm tới tối ưu hoá thiết kế Website cho máy tìm kiếm.
Trên SEO lanlinh, bạn đọc có thể cập nhật các kiến thức về máy tìm kiếm (Search Engine), các kiến thức thiết kế Web thân thiện máy tìm kiếm và các thủ thuật SEO tối ưu hóa Website cho công cụ tìm kiếm. SEOlanlinh còn hỗ trợ tư vấn miễn phí quảng bá Web cá nhân, cung cấp các gói giải pháp, dịch vụ SEO chuyên nghiệp cho Webstie doanh nghiệp. Hãy theo dõi tin mới RSS hoặc đăng ký nhận bài viết qua email ngay từ bây giờ để cập nhật các bài viết mới. Các bài viết của SEOlanlinh có thể được trích dẫn hoặc đăng lại với yêu cầu bản quyền tác giả. SEOlanlinh do SEO LANLINH quản lý.
SEO - Quảng bá Web
SEO hay tối ưu hóa Website cho máy tìm kiếm nằm trong chiến dịch quảng bá Website là từ viết tắt của "Search Engine Optimization" hoặc "Search Engine Optimizers". Mục đích của SEO là nhằm cải thiện lượng truy cập về cả chất lẫn lượng cho Website, trực tiếp đến từ trang kết quả của các máy tìm kiếm (Google, Yahoo, Microsoft) với một số từ khóa nhất định. Mời bạn hãy ghe thăm www.seolanlinh

About Seolanlinh !

LANLINH TRADING là Công ty TNHH được thành lập theo Luật Doanh nghiệp của Việt Nam vào ngày 25 tháng 09 năm 2006 tại Hà Nội. Tên đăng ký kinh doanh chính thức của Công ty là "Công ty TNHH Thương mại và Dịch vụ Lanlinh". Tên giao dịch quốc tế là LANLINH TRADING AND SERVICE COMPANY LIMITED . Tên viết tắt là LANLINH TRADING CO.,LTD

LANLINH luôn hướng tới việc trở thành một công ty với vai trò đưa Công nghệ vào cuộc sống, đưa việt nam ra nước ngoài, giới thiệu dịch vụ du lịch, khách sạn góp phần đẩy mạnh phát triển kinh tế và ứng dụng thành tựu của ngành Công nghệ thông tin vào hoạt động Sản xuất & Kinh doanh của Doanh nghiệp để tạo Giá trị gia tăng trong thời kỳ đổi mới. Góp phần đẩy mạnh phát triển kinh tế và ứng dụng thành tựu của ngành Công nghệ thông tin vào hoạt động Sản xuất & Kinh doanh của Doanh nghiệp để tạo Giá trị gia tăng trong thời kỳ đổi mới.

Chúng tôi luôn cố gắng để đạt được các giá trị mục tiêu chung của công ty về hình ảnh, sứ mệnh, giá trị và cam kết.

Hình ảnh

  • Góp phần xây dựng cơ sở ứng dụng CNTT, THƯƠNG MẠI, DỊCH VỤ DU LỊCH ngày càng phát triển cho thị trường Việt Nam.
  • Hội nhập vào cộng đồng công nghệ thông tin, thương mại điện tử, dịch vụ du lịch quốc tế - phát triển LANLINH trở thành một Công ty cung cấp dịch vụ công nghệ thông tin, thương mại điện tử và dịch vụ du lịch chuyên nghiệp và hiệu quả.

Sứ mệnh

  • Ứng dụng thành tựu Công nghệ thông tin, thương mại điện tử, dịch vụ du lịch vào hoạt động Sản xuất và Kinh doanh của Doanh nghiệp để tạo Giá trị gia tăng.
  • Nhiệt thành cam kết cung cấp cho khách hàng những sản phẩm và dịch vụ công nghệ thông tin, thương mại điện tử, dịch vụ du lịch chất lượng cao ngang tầm quốc tế, đúng thời hạn và giá thành hợp lý.
  • Mang đến cơ hội phát triển cá nhân và nghề nghiệp quí giá, lâu dài và bền vững cho tất cả mọi người.

Giá trị

  • Tại LANLINH con người là tài sản vô giá.
  • Đạt doanh số bán hàng hàng năm và mang đến lợi nhuận cho các cổ đông.

Cam kết

  • Cam kết đem lại cho khách hàng những giá trị thực sự về năng lực công nghệ thông tin, thương mại điện tử, dịch vụ du lịch, kinh nghiệm thực tế, bản lĩnh nghề nghiệp và phong cách làm việc chuyên nghiệp.
  • Công ty luôn cung cấp những điều kiện vật chất và môi trường làm việc tốt nhất cho các nhân viên nhằm khuyến khích sự sáng tạo và phát triển. Góp phần đẩy mạnh phát triển kinh tế và ứng dụng thành tựu của ngành Công nghệ thông tin vào hoạt động Sản xuất & Kinh doanh của Doanh nghiệp để tạo Giá trị gia tăng trong thời kỳ đổi mới.

Giám đốc công ty

NGUYỄN VĂN KIÊN