web architecture

35
Sự phát triển của các Ứng dụng Thương mại

Upload: hiep-luong

Post on 11-Feb-2015

964 views

Category:

Technology


1 download

DESCRIPTION

Web Architecture

TRANSCRIPT

Page 1: Web Architecture

Sự phát triển của các Ứng dụng Thương mại

Page 2: Web Architecture

Web Application

• Là ứng dụng được triển khai (“deploy”) lên trên web và được sử dụng bởi một nhóm người hay rộng khắp thế giới.

• Sử dụng giao thức HTTP (HyperText Transfer Protocol ) làm giao thức để truyền tải chính.

• Webserver và WebBrowse giao tiếp với nhau theo HTTP (hay HTTPs, FTP)

Page 3: Web Architecture

Các mô hình phát triển ứng dụng Web

• Single tier• Two tier• Three tier

– Dựa trên RPC – Dựa trên Remote Object

• Three tier (trình duyệt HTML và Web server)

Page 4: Web Architecture

• Sự phát triển của các framework ứng dụng thương mại bắt đầu từ mô hình single-tier (một tầng) sau đó chuyển sang mô hình two tier (hai tầng), mô hình đầu tiên của khái niệm distributed framework, và sau đó là mô hình three tier (ba tầng).

• Trong mô hình three tier, có 2 mô hình giao tiếp: – RPC (Remote Procedure Call) không dựa trên đối

tượng, các thủ tục được triệu gọi bởi client.– Remote Object: dựa trên nền tảng đối tượng, đối

tượng từ xa được truy xuất bởi client.• Khi Internet phát triển, mô hình 3 tầng có một sự

chuyển đổi hoàn toàn, trình duyệt HTML nói chuyện với Web server và sau đó Web server sẽ nói chuyện với database hay các hệ thống thông tin thương mại.

Page 5: Web Architecture

Các thành phần tạo nên ứng dụng thương mại

• Một ứng dụng thương mại gồm:– Presentation logic– Business logic– Data access logic (and Data model)– System services

• Tác dụng của sự phát triển các ứng dụng thương mại mang lại:– Linh hoạt khi muốn thay đổi.– Nguồn gốc của các system service

Page 6: Web Architecture

Single – Tier (mainframe-based)

• Dumb terminal kết nối trực tiếp vào mainframe.• Mô hình tập trung• Presentation, business logic, data access cùng

tồn tại chung với nhau tạo nên một khối ứng dụng mainframe.

Page 7: Web Architecture

Single-Tier Pro&Cons

• Pro:– Không đòi hỏi quản lý phía client.– Tính nhất quán của dữ liệu.

• Cons:– Do Presentation, business logic và data

access tồn tại chung với nhau nên khó khăn trong việc cập nhật, duy trì và sử dụng lại code.

Page 8: Web Architecture

• Trong mô hình single-tier client là những thiết bị đầu cuối và thậm chí không có bất kỳ xử lý logic nào do đó không cần quản lý client. Data access hoàn toàn được điều khiển bởi ứng dụng mainframe nên bảo đảm tính nhất quán của dữ liệu.

• Mặt hạn chế của single-tier là không có sự tách biệt giữa presentation, business logic và data access. Điều này không thuận tiện cho việc tái sử dụng code vì các hàm viết chung với nhau. Thay đổi business logic hay data access có thể ảnh hưởng đến các phần khác của ứng dụng, khó khăn cho việc thay đổi (ie: thêm chức năng …).

Page 9: Web Architecture

Two-Tier

• Các “Fat Client” giao tiếp với database– “SQL queries sent, row data returned”.

• Presentation, business logic và mô hình xử lý dữ liệu xảy ra ở ứng dụng phía client.

Page 10: Web Architecture

• Mô hình two-tier xuất hiện cùng với sự ra đời của máy tính cá nhân, được sử dụng như nền client thay thế cho các dumb terminal ngày càng nhiều.

• Trong two-tier fats client giao tiếp với CSDL và sử dụng giao thức truy xuất SQL.

• Các client được gọi là “fat” bởi vì nó phải duy trì presentation, business logic và phải hiểu chi tiết trên data model của backend database và cách truy xuất chúng.

Page 11: Web Architecture

Two-Tier Pros & Cons

• Pros:– Kết nối CSDL độc lập (so với Single-tier)

• Cons:– Presentation, data model và business logic tồn tại

chung với nhau ở phía client khó khăn cho việc cập nhật và duy trì.

– Data model kết hợp chặt chẽ với mỗi client thay đổi Schema của CSDL tất cả client gián đoạn.

– Việc cập nhật phải được triển khai đến tất cả các client khó khăn cho việc bảo trì hệ thống.

– DB Connection cho mỗi client Khó co dãn.– Dữ liệu thô chuyển đến client để xử lý lưu lượng

mạng cao.

Page 12: Web Architecture

Three-Tier (RPC-based)

• Thinner client: business và data model tách rời presentation.– Business logic và data model logic cư trú ở middle tier server

còn client điều khiển presentation.

• Middle Tier server đòi hỏi điều khiển System services.– Kiểm soát trùng hợp, thread (tiểu tiến trình), transaction (giao

tác), bảo mật, lưu trữ, đa thành phần, performance(sự thi hành)…

Page 13: Web Architecture

Three-Tier (RPC-based) Pros & Cons

• Pros: Business logic có thể thay đổi linh hoạt hơn two-tier. – Hầu hết các business logic tập trung ở middle-tier

server.

• Cons:– Phức tạp trong middle-tier server.– Client và middle-tier server kết hợp chặt chẽ hơn

three-tier object based.– Code không có tính tái dụng (so với object based

model).

Page 14: Web Architecture

Three-Tier (Remote Object based)

• Business logic and data model captured in objects– Business logic and data model are now

described in “abstraction” (interface language)

• Object models used: CORBA, RMI, DCOM– Interface language in CORBA is IDL– Interface language in RMI is Java interface

Page 15: Web Architecture

Three-Tier (Remote Object based) Pros & Cons

• Pros: – Kết hợp lỏng lẻo hơn mô hình RPC.– Tính tái sử dụng của code.

• Cons:– Sự phức tạp trong middle-tier.

Page 16: Web Architecture

Three-Tier (Web server)

• Trình duyệt quản lý presentation logic.

• Trình duyệt giao tiếp với Web server thông qua giao thức HTTP.

• Business logic và data model được xử lý bằng các công nghệ phát sinh nội dung động như: CGI, Servlet/JSP, ASP.

Page 17: Web Architecture

Three-Tier (Web server based) Pros & Cons

• Pros:– Tồn tại nhiều loại client.– Không quản lý client.– Hỗ trợ các thiết bị client khác nhau

• J2ME cho phép cell-phone

• Cons:– Middle-tier vẫn còn nhiều phức tạp.

Page 18: Web Architecture

Single-tier vs. Multi-tier

Page 19: Web Architecture

Monolithic vs. Object-based

Page 20: Web Architecture

Trends (“Khuynh Hướng”)

• Chuyển từ cấu trúc single-tier sang multi-tier.

• Chuyển từ mô hình monolithic sang mo hình ứng dụng object-based.

• Chuyển từ application-based client to HTML-based client.

Page 21: Web Architecture

Một số công nghệ Web

• Web tĩnh, CGI, ISAPI, ASP, ASP.NET, Servlet, JSP…• Web tĩnh: chỉ có khả năng hiển thị những thông tin nhập

sẵn. • CGI: cung cấp khả năng hiển thị nội dung động bằng

cách cho thục thi chương trình để sinh ra nội dung trả về cho client. Hạn chế của CGI là vấn đề tốc độ.

• ISAPI: Cung cấp cách thức xây dựng các trình CGI ở dạng liên kết động DLL, khắc phục vấn đề tốc độ do chỉ nạp 1 lần lúc Web server khởi động.

• ASP: (sản phẩm của Microsoft) là các trang web chứa mã lệnh VB, sau đó là ASP.NET.

• Servlet: sản phẩm của Sun, tương tự như ISAPI, Servlet chỉ cần nạp 1 lần khi web server khởi động, sau đó là JSP,

Page 22: Web Architecture

J2EE Components và Container

Page 23: Web Architecture

• Sơ đồ trên mô tả J2EE Component và Container.

• Các component chạy bên trong container. Và container cung cấp môi trường thực thi máy chủ cho component.

• Các component trong môi trường J2EE:– Client component chạy trên client như: stand-alone

hay applet.– JSP/Servlet là web component chạy trong môi trường

web container.– Các EJB bean – các thành phần thương mại chạy

trong EJB container.

J2EE Components và Container

Page 24: Web Architecture

Cấu trúc ứng dụng Web

• Cấu trúc ứng dụng Web trong eclipse:

• WEB-INF/scr: chứa các lớp Java (Servlet, model, …)

• WEB-INF/lib: thư viện cần thiết cho ứng dụng.

• WEB-INF/web.xml: chứa các mô tả deploy (“triển khai”) ứng dụng web.

Page 25: Web Architecture

Cấu trúc file web.xml

• Prolog• Alias Paths• Context and Initialization Paramaters• Event Listeners• Filter Mappings• Error Mappings• Reference to Environment Entries, Resource

environment entries, or Resources

Page 26: Web Architecture

Thứ tự các thành phần trong web.xml

• Case sensitive• Order sensitive (in the following order)

– icon, display-name, description, distributable– context-param, filter, filter-mapping– listener, servet, servlet-mapping, session-config– mime-mapping, welcome-file-list– error-page, taglib, resource-env-ref, resource-ref– security-constraint, login-config, security-role– env-entry, ejb-ref, ejb-local-ref

Page 27: Web Architecture

Prolog

• <?xml version="1.0" encoding="UTF-8"?>• <web-app

xmlns="http://java.sun.com/xml/ns/j2ee"• xmlns:xsi="http://www.w3.org/2001/

XMLSchema-instance"• xsi:schemaLocation="http://java.sun.com/xml/

ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"

• version="2.4">

Page 28: Web Architecture

Alias Paths

• Khi Servlet Context nhận một request nó phải xác định web component nào sẽ sử lý request. Nó thực hiện điều này bằng cách ánh xạ url path trong request tới web component.

• URL chứa: context root và alias path– http://<host>:8080/context_root/alias_path

• Alias_path có thể là:– /alias-string (đối với Servlet) và– /*.jsp (đối với JSP)

Page 29: Web Architecture

Alias paths Example

Page 30: Web Architecture

Context and Initialization Parameters (of the web.xml)

• Trình bày ngữ cảnh của ứng dụng

• Có thể chia sẻ giữa các thành phần trong một file war.

Page 31: Web Architecture

Event Listener (web.xml)

• Nhận sự kiện về chu trình sống của Servlet.

Page 32: Web Architecture

Filter Mapping (web.xml)

• Chỉ định các filter áp dụng cho 1 request và thứ tự của các filter.

Page 33: Web Architecture

Error Mapping (web.xml)

• Ánh xạ mã trạng thái trong HTTP response sang ngoại lệ của java.

Page 34: Web Architecture

Preferences (web.xml)

• Cần thiết khi web component tham khảo đến các entry môi trường, entry tài nguyên môi trường, hay các tài nguyên như: CSDL.

• Ví dụ: khai báo tham khảo đến đối tượng Data source

Page 35: Web Architecture

An example of web.xml<?xml version="1.0" encoding="UTF-8"?><web-app xmlns="http://java.sun.com/xml/ns/j2ee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"version="2.4"><display-name>Web Application Example</display-name><servlet><servlet-name>helloWorld</servlet-name><servlet-class>ex.HelloWorld</servlet-class></servlet><servlet-mapping><servlet-name>helloWorld</servlet-name><url-pattern>/helloWorld</url-pattern></servlet-mapping>

<welcome-file-list><welcome-file>formData.jsp</welcome-file></welcome-file-list></web-app>