concrete architecture of mozilla firefox (version 2.0.0.3) iris lai jared haines john,chun-hung,chiu...

20
Concrete Architecture of Mozilla Firefox (version 2.0.0.3) Iris Lai Jared Haines John,Chun-Hung,Chiu Josh Fairhead July 06, 2007

Upload: jasper-hector-garrison

Post on 14-Dec-2015

214 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Concrete Architecture of Mozilla Firefox (version 2.0.0.3) Iris Lai Jared Haines John,Chun-Hung,Chiu Josh Fairhead July 06, 2007

Concrete Architecture of

Mozilla Firefox (version 2.0.0.3)

Iris LaiJared Haines

John,Chun-Hung,ChiuJosh Fairhead

July 06, 2007

Page 2: Concrete Architecture of Mozilla Firefox (version 2.0.0.3) Iris Lai Jared Haines John,Chun-Hung,Chiu Josh Fairhead July 06, 2007

Outline

Modified Conceptual ArchitectureFirefox Conceptual Architecture vs.

Concrete ArchitectureNecko Concrete ArchitectureInterface architecture in NeckoHandling downloads in NeckoNecko Conceptual Architecture vs.

Concrete ArchitectureDesign Patterns and Architecture Styles

Page 3: Concrete Architecture of Mozilla Firefox (version 2.0.0.3) Iris Lai Jared Haines John,Chun-Hung,Chiu Josh Fairhead July 06, 2007

Modified Conceptual Architecture of Mozilla Firefox

Page 4: Concrete Architecture of Mozilla Firefox (version 2.0.0.3) Iris Lai Jared Haines John,Chun-Hung,Chiu Josh Fairhead July 06, 2007

Modified Conceptual Architecture Display backend module not part of Gecko, tightly

couple with local machine, provides widget toolkit API that can be use by UI module

Remove XPCOM from conceptual architecture since every modules relates to XPCOM. Conceptual should focus on main components and conceptual relations.

The dependency between Necko and XML Parser was also eliminated according to our concrete architecture.

Page 5: Concrete Architecture of Mozilla Firefox (version 2.0.0.3) Iris Lai Jared Haines John,Chun-Hung,Chiu Josh Fairhead July 06, 2007

Firefox Concrete Architecture

Page 6: Concrete Architecture of Mozilla Firefox (version 2.0.0.3) Iris Lai Jared Haines John,Chun-Hung,Chiu Josh Fairhead July 06, 2007

Firefox Concrete Architecture

We divide source into nine parts(modules) Runtime Utility -functions (nsUnicharUtils)

User Interface Gecko Data Persistence Java Script Display Backend XML Parser Necko

Page 7: Concrete Architecture of Mozilla Firefox (version 2.0.0.3) Iris Lai Jared Haines John,Chun-Hung,Chiu Josh Fairhead July 06, 2007

Conceptual vs Concrete Architecture

The concrete architecture shows more relations and dependencies than the conceptual architecture.

There are two more components in the concrete architecture: Runtime and Utility.

Page 8: Concrete Architecture of Mozilla Firefox (version 2.0.0.3) Iris Lai Jared Haines John,Chun-Hung,Chiu Josh Fairhead July 06, 2007

Necko Concrete Architecture

Page 9: Concrete Architecture of Mozilla Firefox (version 2.0.0.3) Iris Lai Jared Haines John,Chun-Hung,Chiu Josh Fairhead July 06, 2007

Necko Concrete Architecture

Network ServiceProtocol HandlerSocket TransportStream ConverterSecurityURL HandlerNecko Utility

Page 10: Concrete Architecture of Mozilla Firefox (version 2.0.0.3) Iris Lai Jared Haines John,Chun-Hung,Chiu Josh Fairhead July 06, 2007

Necko Concrete Architecture

Network Service Network Service contains essential modules

nsIOService provides major Necko services. It manages protocol handlers and provides interface for creating URI objects from URI strings.

nsSocketTransportService manages socket transport service which builds physical connections protocol handlers and the Internet.

Page 11: Concrete Architecture of Mozilla Firefox (version 2.0.0.3) Iris Lai Jared Haines John,Chun-Hung,Chiu Josh Fairhead July 06, 2007

Necko Concrete Architecture

Protocol Handler In Protocol Handler layer, the corresponding

protocol is selected according to the URI schema.

Protocol Handler can handle requests that use ftp, http, or gopher protocol.

Socket Transport Socket Transport is a layer between Protocol

Handler and the Internet.

Page 12: Concrete Architecture of Mozilla Firefox (version 2.0.0.3) Iris Lai Jared Haines John,Chun-Hung,Chiu Josh Fairhead July 06, 2007

Necko Concrete Architecture

Stream Converter Stream Converter provides stream conversion

services to Protocol Handler.Security

Uses Mozilla PSMURL Handler

URL handler is called from Gecko (docshell) when a URI is requested

Page 13: Concrete Architecture of Mozilla Firefox (version 2.0.0.3) Iris Lai Jared Haines John,Chun-Hung,Chiu Josh Fairhead July 06, 2007

Necko Concrete Architecture

Necko Utility DNS Cookie MIME Cache

Page 14: Concrete Architecture of Mozilla Firefox (version 2.0.0.3) Iris Lai Jared Haines John,Chun-Hung,Chiu Josh Fairhead July 06, 2007

Interface architecture in Necko

Page 15: Concrete Architecture of Mozilla Firefox (version 2.0.0.3) Iris Lai Jared Haines John,Chun-Hung,Chiu Josh Fairhead July 06, 2007

Interface architecture in Necko

nsIURL and nsINetService are implemented in Network Service subsystem.

nsIProtocolHandlers are implemented in Protocol Handler subsystem.

nsIprotocolConnection is implemented by channels. Socket transports and file transports are implemented in Network Service subsystem and Socket Transport subsystem.

Necko also handles transport threads. There is a single socket transport thread that manages a pool of

file descriptors for all outstanding socket requests. This is similar to the Master-Slave design pattern. A master is

monitoring all its slaves and talks to clients. In Necko, the masters are located in Network Service package, and slaves are implemented in other subsystems such as Protocol Handler.

Page 16: Concrete Architecture of Mozilla Firefox (version 2.0.0.3) Iris Lai Jared Haines John,Chun-Hung,Chiu Josh Fairhead July 06, 2007

Handling downloads in Necko

Page 17: Concrete Architecture of Mozilla Firefox (version 2.0.0.3) Iris Lai Jared Haines John,Chun-Hung,Chiu Josh Fairhead July 06, 2007

Necko Conceptual Architecture vs. Concrete Architecture

There is no Protocol Connection subsystem in the Necko concrete architecture. The Protocol Connection is implemented by channels.

There are two types of channels: synchronous and asynchronous.

There are extra subsystems in Necko concrete architecture Stream converter Necko Utility. Necko Utility includes DNS, Cookie,

MIME, and Cache.

Page 18: Concrete Architecture of Mozilla Firefox (version 2.0.0.3) Iris Lai Jared Haines John,Chun-Hung,Chiu Josh Fairhead July 06, 2007

Design Patterns

Observer RequestObserver Cache module

Abstract Factory SocketProviderService, StreamConverterService

Singleton IOService, CookieService

Facade SecretKeyFacade

Page 19: Concrete Architecture of Mozilla Firefox (version 2.0.0.3) Iris Lai Jared Haines John,Chun-Hung,Chiu Josh Fairhead July 06, 2007

Architecture Styles

Pipe and Filter

URL

Network Service

Protocol Handler

Protocol Connection Transport

Implicit Invocation

Page 20: Concrete Architecture of Mozilla Firefox (version 2.0.0.3) Iris Lai Jared Haines John,Chun-Hung,Chiu Josh Fairhead July 06, 2007

References

[1] Mozilla: Core Modules & Libraries - http://www.mozilla.org/catalog/libraries/uriloader/

[2] Network library documentation - http://www.mozilla.org/projects/netlib/

[3] http://www.mozilla.org/docs/ [4] http://www.mozilla.org/owners.html [5] Multithreading in Necko -

http://www.mozilla.org/projects/netlib/necko_threading.html

[6] http://www.mozilla.org/docs/netlib/necko.html [7] MDC Glossary -

http://developer.mozilla.org/en/docs/Glossary#SMIME