====== Differences from other PHP frameworks ====== First of all: **Innomatic is not (only) a PHP framework**. Also, it is not a CMS by itself (while CMS features can be provided by Innomatic applications). So you can’t directly compare Innomatic with frameworks such as [[http://www.symfony-project.org/|Symfony]], [[http://cakephp.org/|CakePHP]], [[http://framework.zend.com/|Zend Framework]] and so on, which are very good, first class PHP frameworks; nor Innomatic wants to compete with them. Instead, you can use and integrate your favourite framework with Innomatic, if the ones provided by Innomatic are not a good fit for your requirements. A common PHP framework generally serves the purpose of speeding up a single Web site/application development, providing a structured files skeleton, standardized APIs, already available implementation of design patterns such as MVC, coding standards and so on. This is true for a certain part of Innomatic too, but the latter is a new system of its own. **You can think of Innomatic as a container of multiple, shared Web based [[Applications and Domains|applications]] made accessible to separated customer’s/organization’s profiles (called [[Applications and Domains|“Domains”]]) within the same Innomatic installation**, in particular administrative-type applications such as a CRM, Intranet, CMS, e-Commerce and so on, with a modular approach, e.g. you can enable certain applications to some Domains only. {{:innomatic_domains_and_applications.png|Relations between Innomatic applications, Domains and Web Apps}} For this purpose, Innomatic provides an [[Desktop|applications desktop]], authentication, localization, [[Managing Web Services|Web services interface]], a security layer, a maintenance system, applications dependencies, [[Install and upgrade applications|applications upgrading]] and many more user ready features, greatly reducing the development overhead. This is like developing standard client applications using widgets (e.g. QT/GTK in Linux, Cocoa in Mac OS X, etc.), but in a Web environment (as you can see yourself in the [[http://www.innomatic.org/demo|Innomatic Demo]]). {{:commercial_app_example_0.png|Example of Innomatic Domain Desktop with some applications enabled}} However, just like a common framework, **with Innomatic you are also able to develop a frontend for a public Web site**, or other administrative-type applications with a system different from the standard Innomatic desktop. For each domain an optional so called [[Web Apps|“Web App”]] is created, handled by one or more [[Innomatic Architecture|Web App Handlers]] following a set of URL based mappings: a Innomatic Web App Handler is the feature most similar to a common Web sites PHP framework. In the MVC paradigm, the Web App Handler is the Front Controller, along with the Innomatic Web App Processor. {{:web_app_server.png|General flows of a Web App in Innomatic}} Innomatic natively provides some Web App Handlers (a static HTML server, a PHP based handler, a Xajax interface), that can be mixed in the same Web App, while other new ones are being made available as Innomatic based applications. **You can also use an external PHP framework as a Web App Handler, and it is already planned to port some frameworks as native Innomatic Web App Handlers**. The Innomatic desktop is a particular case of Web App Handler itself. What is the ideal link between a Innomatic Domain and its own Web App? The Domain Desktop would be the backend (for example the CMS or e-Commerce application) of a Innomatic Web based solution, while the Web App would be the frontend part, with a new Web App Handler provided by the CMS.