Changes

Jump to: navigation, search

Components and Interfaces

1,866 bytes added, 23:54, 4 October 2006
Resources
Components and Interfaces define and/or implement small pieces of modular code that can be reused in the codebase.
 
''For example, Necko is the network library which is made up of several components such as HTTP, FTP, and other network protocol definitions and implementations.''
=== Component ===
In Mozilla, there are several technologies used that build the codebase. You will find some lower level programming languages such as C/C++ in the core, and may find some higher level programming languages such as Javascript in extensions, components, etc...
These technologies are connected using the XPCOM, XPConnect, XPIDL, etc... With these frameworks, developers can break up software projects into components.
=== Component ===
Using XPCOM supports the object oriented approach, allowing code to encapsulate and inherent functionality and characteristics.
 
XPCOM allows developers to connect their code to the rest of the Mozilla codebase. It is a cross platform technology which allows the code to be:
 
* reusable
* updateable
* modular
 
''For example, the CookieManager Component can be called from Javascript code''
XPCOM allows developers to connect their code // xpconnect to cookiemanager // get the rest cookie manager component in JavaScript '''var cookiemanager = Components.classes["@mozilla.org/cookiemanager;1"].getService();''' '''cookiemanager = cookiemanager.QueryInterface(Components.interfaces.nsICookieManager);''' // called as part of the Mozilla codebasea largerDeleteAllCookies() function function FinalizeCookieDeletions() { for (var c=0; c<deletedCookies.length; c++) { '''cookiemanager.remove(deletedCookies[c]. It is a cross platform technology which allows the code to be reusablehost, updateabledeletedCookies[c].name, and modulardeletedCookies[c].path);''' } deletedCookies. length = 0; }
These components can be grouped together to become a Module. A component or several components (aka Module) are delivered as binary library. In Windows, libraries are .dll files; whereas, Unix libraries are DSO.
''For example, Necko === Interface ===There are two fundamental issues in component and interface-based programming:* lifetime (aka object ownership) * interface querying (identifing components at run-time). These issues are addressed by the nsISupports interface that every XPCOM object should implement.  The nsISupports interface is similar to the network library which Object and other run-time interfaces built into Java and .NET. The following is made up a simple example of several components such as HTTPan implemented nsISupports interface for the class Sample.  class Sample: public nsISupports { private: nsrefcnt mRefCnt; public: Sample(); virtual ~Sample(); NS_IMETHOD QueryInterface(const nsIID &aIID, FTP, and other network protocol implementations.''void **aResult); NS_IMETHOD_(nsrefcnt) AddRef(void); NS_IMETHOD_(nsrefcnt) Release(void); };
=== Interface ===nsISupports interface is explained well [http://www.mozilla.org/projects/xpcom/book/cxc/html/quicktour2.html#1003494 here].
== Related Links ==
*https://addons.mozilla.org/firefox/2230/
== Examples Resources == Links to Newsgroup:* [news://news.mozilla.org/netscape.public.mozilla.xpcom mozilla.xpcom newsgroup] Links to IRC Channels: * [irc://irc.mozilla.org/developers #Developers]
1
edit

Navigation menu