CHƯƠNG 2: ỨNG DỤNG CÔNG NGHỆ VR VÀO QUẢNG BÁ SẢN PHẨM TRÊN NỀN WEB
2.2. Hiển thị sản phẩm trên nền web
2.2.1. Kiến trúc tổng quan của Firefox
2.2.1.2. Quá trình phát triển các thành phần của Firefox
Firefox là một dự án mã nguồn mở được phát triển và quản lý bởi tổ chức Mozilla. Mỗi thành phần của nó được chia thành các modul nhỏ. Mỗi modul được sở hữu bởi một cá nhân cụ thể mà ở đó có sự quản lý và phát triển modul đó.
Tổ chức Mozilla giám sát các kiến trúc tổng thể của Firefox và cung cấp các tài liệu thực hành tốt nhất. Quản lý tất cả các chủ sở hữu của các modul và như tạo ra sự phát triển của các ứng dụng, chỉ đạo các chủ sở hữu modul về những thay đổi và những tính năng cần phải thêm vào. Để duy trì một tiêu chuẩn cao, các mã được thêm vào phải được kiểm tra kỹ lưỡng. Chủ sở hữu modul xem xét các mã được đóng góp và có thể yêu cầu các chủ sở hữu modul khác xem xét và bổ sung tùy vào mức độ ảnh hưởng của mã đó tới các modul khác. Điều này để đảm bảo không gây ra lỗi và phù hợp với toàn bộ mã cơ sở của Firefox.
Hình 33 – Chi tiết các thành phần của kiến trúc Firefox. Các thành phần hiển
XPToolkit
Là một tập hợp rời rạc các cơ sở có liên quan, qua đó người viết ứng dụng có thể gỡ và chọn, mỗi phần nó cung cấp một nền tảng API độc lập cho một số nền tảng thường được khai thác cụ thể máy móc. Không phải tất cả các cơ sở nền tảng độc lập đều thuộc các XPToolkit, JavaScript là một ví dụ. Không phải tất cả các nền tảng cụ thể được thực hiện một cách chi tiết có thể được đưa vào XPToolkit. Các úng dụng sẽ vẫn phải cần có mã nền tảng cụ thể, mặc dù họ có thể giảm thiểu số lượng do ứng dụng khai thác XPToolkit.
Bắt đầu với cách tiếp cận từ trên xuống, nếu XPToolkit là thành phần để đi tới UI (User Interface – Giao diện người dùng) và Gecko là phương tiện để thiết kế thì làm thế nào đề chúng tương tác. XPToolkit sử dụng giao diện người dùng XML, ngôn ngữ XUL để xác định thành phần UI, cụ thể đó là các tên vật dụng. Gecko cung cấp các cơ sở để phân tích các tài liệu XUL là một mô hình đối tượng. XPToolkit sử dụng để phân tích cú pháp XUL vào các mô hình đối tượng ứng dụng (AOM – Aplication object model).
Khi XPToolkit có AOM, nó sẽ tạo ra hai lớp “Frames and Widgets” và
“services”. Người tạo ra trước chịu trách nhiệm về việc quan sát và cảm nhận giao diện người sử dụng, trong khi sau này có trách nhiệm thực hiện các nhiệm vụ, chẳng hạn như in ấn. Hai lớp này hoàn toàn độc lập; cách giao tiếp duy nhất là thông qua AOM, người chịu trách nhiệm về các thông điệp quay trở lại và được phát đi.
Browser Enginer
Firefox có hai modul Browser Enginer hoặc NGLayout có trách nhiệm quản lý như nhau khi tải các modul khác nhau, phân tích cú pháp, và áp dụng các kiểu CSS. Khi DOM đã tải được các nội dung, nó sẽ truyền tới Rendering Enginer để hiển thị. Các thành phần NGLayout sử dụng các thành phần nhỏ sau:
Layout: có trách nhiệm quản lý việc bố trí của DOM để dựng hình.
Rendering: có trách nhiệm truyền lại việc tải DOM và thông tin Style tới đối tượng đồ họa ban đầu sau đó vẽ nội dung lên thiết bị hiển thị.
Style: đưa ra các kiểu để phân tích cú pháp HTML. Hệ thống nhỏ Style thay đổi DOM để áp dụng tới CSS1, CSS2, HTML 3.0 và bị giới hạn tới HTML 3.0 để đưa ra các tài liệu phân tích cú pháp HTML.
DOM (Document Object Model): là một giao diện hoặc mặt ngoài, nó cung cấp một lớp trừu tượng trên các thành phần cơ bản đại diện cho trang web. Nó cũng cung cấp các ràng buộc cho JavaScript, Python, C++ và XPCOM.
Hình 34 – Kiến trúc của XPToolkit
HTML Parser: Chịu trách nhiệm nội dung phân tích cú pháp và tải nội dung của DOM.
Các thành phần của chức năng NGLayout giao tiếp với cấu hình hệ thống để kiểm soát các trang được tải lên và cấu hình các chức năng khác mà NGLayout cung cấp.
Rendering Enginer
Là một hệ thống nhỏ của NGLayout và sử dụng một tập hợp các nền tảng
hình. Nó được kiểm soát bởi CSS2 hiện đại của Gecko và được kiết suất bằng cách sử dụng trình dịch Mark II - Phương pháp đánh dấu chỗ trước khi nội dung chưa đến. Phương pháp này cho phép thực thi nhanh các trang.
Có trách nhiệm vẽ giao diện người dùng và nội dung bất kỳ của web lên màn hình. Nó xây dựng nội dung dựa trên một tập hợp các nền tảng độc lập. Cấu trúc dữ liệu bao gồm: các đối tượng hình học nguyên thủy, mầu sắc được định nghĩa, các kiểu font chữ, hình ảnh trừu tượng, nội dung của cảnh, bối cảnh thiết bị, số liệu font chữ, ảnh, các vùng và sự pha trộn alpha.
Data Persistence
Lớp này được chia thành hai thành phần: Browser persisten và user data, chúng hoàn toàn độc lập nhau.
Firefox sử dụng mozStorge để lưu trữ thông tin của trình duyệt, bao gồm các cài đặt cho các phần mở rộng và các thành phần của Firefox. mozStorge là một cơ sở dữ liệu API. Nó tương tác cơ bản với Gecko (các thành phần cơ bản của Firefox) và các phần mở rộng.
Firefox lưu trữ dữ liệu người dùng thông qua các tập tin Cookies, DOM Storge và Flash Local Storge. Cookies được sử dụng rộng rãi trên Internet, nhưng bị hạn chế phần nào. DOM Storge là một chức năng thay thế được giới thiệu bởi các ứng dụng web 1.0, nó cho phép lưu trữ dữ liệu lâu hơn trong một thời gian an toàn. Flash Local Storge yêu cầu một plug – in mở rộng, trong bất kỳ trường hợp nào người sử dụng kiên trì với các thành phần tương tác với Gecko và XPToolkit.
Networking
Modul Networking gồm hai thành phần: thư viện mạng, trước kia được biết đến như là Netlib) và an ninh mạng (NSS và PSM). Necko là một nền tảng API độc lập để xử lý nhiều lớp của mô hình mạng (các tầng mạng, phiên và tầng trình diễn).
NSS (Network Security Services – Dịch vụ bảo mật mạng) là một bộ thư viện được sử dụng để cung cấp cho Firefox với mục đích bảo mật, an ninh mạng.
PSM (Personal Security Manager – Quản lý bảo mật cá riêng tư) thực hiện nhiều chức năng PKI chuẩn, chẳng hạn như thiết lập kết nối SSL và chữ ký xác nhận. PSM được xây dựng trên NSS.
JavaScript Interpreter
SpiderMonkey là một trình biên dịch JavaScript của Mozilla, được thực thi với ngôn ngữ C. Trước đây được biết đến như JS – Ref. Nó xây dựng một bộ DLL chứa các yếu tố JavaScript runtime, và biên dịch một chương trình thông dịch được liên kết tới thư viện để chạy kịch bản. SpiderMonkey không phụ thuộc bất kỳ vào thành phần nào của hệ thống.
XML Parser
Firefox dựa trên bốn trụ cột chính: XUL, một hình thái của XML được sử dụng để xây dựng cấu trúc giao diện người sử dụng; ngôn ngữ kịch bản JavaScript; RDF, một hình thái của XML được sử dụng để lưu trữ dữ liệu; và XPCOM, một đối tượng để khám phá và quản lý hệ thống. Một phân tích cú pháp tách riêng từ một phương ngữ cụ thể để phân tích cấu trúc dữ liệu và để duy trì các mã phân tích cú pháp có hiệu quả.
Display Backen
Quan hệ chặt chẽ với hệ thống hệ điều hành, nó cung cấp một sự chặt chẽ, nền tảng chéo, giao diện được sử dụng bởi User Interface, tất cả các chức năng của bản vẽ và cửa sổ được cung cấp bởi các hệ thống hệ điều hành khác nhau được hỗ trợ bởi Firefox.
Display Backend được chia thành hai thành phần nhỏ: Một hệ thống quản lý việc chuyển đổi đồ họa và hệ thống quản lý các thư viện đồ họa. Bộ chuyển đổi thông dịch bên trong được gọi từ giao diện người sử dụng tới các bộ quản lý thư viện đồ họa của máy chủ. Đối với mỗi hệ điều hành máy chủ là một sự thực hiện khác nhau, nó sử dụng các thư viện đồ họa được cung cấp bởi hệ điều hành.
Sự mở rộng
Firefox có một khả năng mở rộng lớn để thay đổi các hành vi của trình
ngữ XUL và sự kiện các đối tượng XPCOM mới có thể được thêm vào sử dụng làm phần mở rộng. Tuy nhiên Một số mở rộng chạy mà không có giao diện người dùng, do đó, không phải tất cả các phần mở rộng đều tương tác với các lớp giao diện người dùng.
Hình 35 – Thành phần tương tác mở rộng
Tóm lại, kiến trúc trình duyệt web Firefox tương tự như một kiến trúc nhiều lớp. Các thành phần chỉ được phép tương tác với một lớp cụ thể bên dưới.
Ví dụ, User Interface chỉ được phép trao đổi với Gecko browser engine. Kiến trúc này dễ bảo trì và có thể dùng lại như số lượng các thành phần bị ảnh hưởng bởi sự thay đổi về mã cơ sở bị hạn chế.
Phân tích khái niệm kiến trúc bởi trình duyệt qua các tài liệu khác nhau, ta thấy rằng hầu như cũng tương tụ như kiến trúc đã trình bầy ở trên.