Web Architecture

889 views

Published on

Web Architecture

Published in: Technology
1 Comment
1 Like
Statistics
Notes
No Downloads
Views
Total views
889
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
14
Comments
1
Likes
1
Embeds 0
No embeds

No notes for slide
  • Component colored green, container colored purple.
  • Web Architecture

    1. 1. Sự phát triển của các Ứng dụng Thương mại
    2. 2. Web Application <ul><li>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. </li></ul><ul><li>Sử dụng giao thức HTTP ( HyperText Transfer Protocol ) làm giao thức để truyền tải chính. </li></ul><ul><li>Webserver và WebBrowse giao tiếp với nhau theo HTTP (hay HTTPs, FTP) </li></ul>
    3. 3. Các mô hình phát triển ứng dụng Web <ul><li>Single tier </li></ul><ul><li>Two tier </li></ul><ul><li>Three tier </li></ul><ul><ul><li>Dựa trên RPC </li></ul></ul><ul><ul><li>Dựa trên Remote Object </li></ul></ul><ul><li>Three tier (trình duyệt HTML và Web server) </li></ul>
    4. 4. <ul><li>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). </li></ul><ul><li>Trong mô hình three tier, có 2 mô hình giao tiếp: </li></ul><ul><ul><li>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. </li></ul></ul><ul><ul><li>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. </li></ul></ul><ul><li>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. </li></ul>
    5. 5. Các thành phần tạo nên ứng dụng thương mại <ul><li>Một ứng dụng thương mại gồm: </li></ul><ul><ul><li>Presentation logic </li></ul></ul><ul><ul><li>Business logic </li></ul></ul><ul><ul><li>Data access logic (and Data model) </li></ul></ul><ul><ul><li>System services </li></ul></ul><ul><li>Tác dụng của sự phát triển các ứng dụng thương mại mang lại: </li></ul><ul><ul><li>Linh hoạt khi muốn thay đổi. </li></ul></ul><ul><ul><li>Nguồn gốc của các system service </li></ul></ul>
    6. 6. Single – Tier (mainframe-based) <ul><li>Dumb terminal kết nối trực tiếp vào mainframe. </li></ul><ul><li>Mô hình tập trung </li></ul><ul><li>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. </li></ul>
    7. 7. Single-Tier Pro&Cons <ul><li>Pro: </li></ul><ul><ul><li>Không đòi hỏi quản lý phía client. </li></ul></ul><ul><ul><li>Tính nhất quán của dữ liệu. </li></ul></ul><ul><li>Cons: </li></ul><ul><ul><li>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. </li></ul></ul>
    8. 8. <ul><li>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. </li></ul><ul><li>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 …). </li></ul>
    9. 9. Two-Tier <ul><li>Các “Fat Client” giao tiếp với database </li></ul><ul><ul><li>“ SQL queries sent, row data returned”. </li></ul></ul><ul><li>Presentation, business logic và mô hình xử lý dữ liệu xảy ra ở ứng dụng phía client. </li></ul>
    10. 10. <ul><li>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. </li></ul><ul><li>Trong two-tier fats client giao tiếp với CSDL và sử dụng giao thức truy xuất SQL. </li></ul><ul><li>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. </li></ul>
    11. 11. Two-Tier Pros & Cons <ul><li>Pros: </li></ul><ul><ul><li>Kết nối CSDL độc lập (so với Single-tier) </li></ul></ul><ul><li>Cons: </li></ul><ul><ul><li>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ì. </li></ul></ul><ul><ul><li>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. </li></ul></ul><ul><ul><li>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. </li></ul></ul><ul><ul><li>DB Connection cho mỗi client  Khó co dãn. </li></ul></ul><ul><ul><li>Dữ liệu thô chuyển đến client để xử lý  lưu lượng mạng cao. </li></ul></ul>
    12. 12. Three-Tier (RPC-based) <ul><li>Thinner client: business và data model tách rời presentation. </li></ul><ul><ul><li>Business logic và data model logic cư trú ở middle tier server còn client điều khiển presentation. </li></ul></ul><ul><li>Middle Tier server đòi hỏi điều khiển System services. </li></ul><ul><ul><li>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)… </li></ul></ul>
    13. 13. Three-Tier (RPC-based) Pros & Cons <ul><li>Pros: Business logic có thể thay đổi linh hoạt hơn two-tier. </li></ul><ul><ul><li>Hầu hết các business logic tập trung ở middle-tier server. </li></ul></ul><ul><li>Cons: </li></ul><ul><ul><li>Phức tạp trong middle-tier server. </li></ul></ul><ul><ul><li>Client và middle-tier server kết hợp chặt chẽ hơn three-tier object based. </li></ul></ul><ul><ul><li>Code không có tính tái dụng (so với object based model). </li></ul></ul>
    14. 14. Three-Tier (Remote Object based) <ul><li>Business logic and data model captured in objects </li></ul><ul><ul><li>Business logic and data model are now described in “abstraction” (interface language) </li></ul></ul><ul><li>Object models used: CORBA, RMI, DCOM </li></ul><ul><ul><li>Interface language in CORBA is IDL </li></ul></ul><ul><ul><li>Interface language in RMI is Java interface </li></ul></ul>
    15. 15. Three-Tier (Remote Object based) Pros & Cons <ul><li>Pros: </li></ul><ul><ul><li>Kết hợp lỏng lẻo hơn mô hình RPC. </li></ul></ul><ul><ul><li>Tính tái sử dụng của code. </li></ul></ul><ul><li>Cons: </li></ul><ul><ul><li>Sự phức tạp trong middle-tier. </li></ul></ul>
    16. 16. Three-Tier (Web server) <ul><li>Trình duyệt quản lý presentation logic. </li></ul><ul><li>Trình duyệt giao tiếp với Web server thông qua giao thức HTTP. </li></ul><ul><li>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. </li></ul>
    17. 17. Three-Tier (Web server based) Pros & Cons <ul><li>Pros: </li></ul><ul><ul><li>Tồn tại nhiều loại client. </li></ul></ul><ul><ul><li>Không quản lý client. </li></ul></ul><ul><ul><li>Hỗ trợ các thiết bị client khác nhau </li></ul></ul><ul><ul><ul><li>J2ME cho phép cell-phone </li></ul></ul></ul><ul><li>Cons: </li></ul><ul><ul><li>Middle-tier vẫn còn nhiều phức tạp. </li></ul></ul>
    18. 18. Single-tier vs. Multi-tier
    19. 19. Monolithic vs. Object-based
    20. 20. Trends (“Khuynh Hướng”) <ul><li>Chuyển từ cấu trúc single-tier sang multi-tier. </li></ul><ul><li>Chuyển từ mô hình monolithic sang mo hình ứng dụng object-based. </li></ul><ul><li>Chuyển từ application-based client to HTML-based client. </li></ul>
    21. 21. Một số công nghệ Web <ul><li>Web tĩnh, CGI, ISAPI, ASP, ASP.NET, Servlet, JSP… </li></ul><ul><li>Web tĩnh: chỉ có khả năng hiển thị những thông tin nhập sẵn. </li></ul><ul><li>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 độ. </li></ul><ul><li>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. </li></ul><ul><li>ASP : (sản phẩm của Microsoft) là các trang web chứa mã lệnh VB, sau đó là ASP.NET. </li></ul><ul><li>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 , </li></ul>
    22. 22. J2EE Components và Container
    23. 23. <ul><li>Sơ đồ trên mô tả J2EE Component và Container. </li></ul><ul><li>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. </li></ul><ul><li>Các component trong môi trường J2EE: </li></ul><ul><ul><li>Client component chạy trên client như: stand-alone hay applet. </li></ul></ul><ul><ul><li>JSP/Servlet là web component chạy trong môi trường web container. </li></ul></ul><ul><ul><li>Các EJB bean – các thành phần thương mại chạy trong EJB container. </li></ul></ul>J2EE Components và Container
    24. 24. Cấu trúc ứng dụng Web <ul><li>Cấu trúc ứng dụng Web trong eclipse: </li></ul><ul><li>WEB-INF/scr: chứa các lớp Java (Servlet, model, …) </li></ul><ul><li>WEB-INF/lib: thư viện cần thiết cho ứng dụng. </li></ul><ul><li>WEB-INF/web.xml: chứa các mô tả deploy (“triển khai”) ứng dụng web. </li></ul>
    25. 25. Cấu trúc file web.xml <ul><li>Prolog </li></ul><ul><li>Alias Paths </li></ul><ul><li>Context and Initialization Paramaters </li></ul><ul><li>Event Listeners </li></ul><ul><li>Filter Mappings </li></ul><ul><li>Error Mappings </li></ul><ul><li>Reference to Environment Entries, Resource environment entries, or Resources </li></ul>
    26. 26. Thứ tự các thành phần trong web.xml <ul><li>Case sensitive </li></ul><ul><li>Order sensitive (in the following order) </li></ul><ul><ul><li>icon, display-name, description, distributable </li></ul></ul><ul><ul><li>context-param, filter, filter-mapping </li></ul></ul><ul><ul><li>listener, servet, servlet-mapping, session-config </li></ul></ul><ul><ul><li>mime-mapping, welcome-file-list </li></ul></ul><ul><ul><li>error-page, taglib , resource-env-ref, resource-ref </li></ul></ul><ul><ul><li>security-constraint, login-config, security-role </li></ul></ul><ul><ul><li>env-entry, ejb-ref, ejb-local-ref </li></ul></ul>
    27. 27. Prolog <ul><li><?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?> </li></ul><ul><li><web-app xmlns=&quot;http://java.sun.com/xml/ns/j2ee&quot; </li></ul><ul><li>xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; </li></ul><ul><li>xsi:schemaLocation=&quot;http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd&quot; </li></ul><ul><li>version=&quot;2.4&quot;> </li></ul>
    28. 28. Alias Paths <ul><li>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. </li></ul><ul><li>URL chứa: context root và alias path </li></ul><ul><ul><li>http://<host>:8080/context_root/alias_path </li></ul></ul><ul><li>Alias_path có thể là: </li></ul><ul><ul><li>/alias-string (đối với Servlet) và </li></ul></ul><ul><ul><li>/*.jsp (đối với JSP) </li></ul></ul>
    29. 29. Alias paths Example
    30. 30. Context and Initialization Parameters (of the web.xml) <ul><li>Trình bày ngữ cảnh của ứng dụng </li></ul><ul><li>Có thể chia sẻ giữa các thành phần trong một file war. </li></ul>
    31. 31. Event Listener (web.xml) <ul><li>Nhận sự kiện về chu trình sống của Servlet. </li></ul>
    32. 32. Filter Mapping (web.xml) <ul><li>Chỉ định các filter áp dụng cho 1 request và thứ tự của các filter. </li></ul>
    33. 33. Error Mapping (web.xml) <ul><li>Ánh xạ mã trạng thái trong HTTP response sang ngoại lệ của java. </li></ul>
    34. 34. Preferences (web.xml) <ul><li>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. </li></ul><ul><li>Ví dụ: khai báo tham khảo đến đối tượng Data source </li></ul>
    35. 35. An example of web.xml <ul><li><?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?> </li></ul><ul><li><web-app xmlns=&quot;http://java.sun.com/xml/ns/j2ee&quot; </li></ul><ul><li>xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; </li></ul><ul><li>xsi:schemaLocation=&quot;http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd&quot; </li></ul><ul><li>version=&quot;2.4&quot;> </li></ul><ul><li><display-name>Web Application Example</display-name> </li></ul><ul><li><servlet> </li></ul><ul><li><servlet-name>helloWorld</servlet-name> </li></ul><ul><li><servlet-class>ex.HelloWorld</servlet-class> </li></ul><ul><li></servlet> </li></ul><ul><li><servlet-mapping><servlet-name>helloWorld</servlet-name> </li></ul><ul><li><url-pattern>/helloWorld</url-pattern></servlet-mapping> </li></ul><ul><li><welcome-file-list><welcome-file>formData.jsp</welcome-file> </li></ul><ul><li></welcome-file-list> </li></ul><ul><li></web-app> </li></ul>

    ×