AppSuite:Architecture Overview: Difference between revisions

From Open-Xchange
No edit summary
No edit summary
Line 1: Line 1:
__NOTOC__
This page gives an overview of the most important internal components, plugin capabilities, public interfaces (APIs) and data communication streams of the Open-Xchange server.
[[File:appsuite_architecture_diagram_2.png|1200px]]
[[File:appsuite_architecture_diagram_2.png|1200px]]
=<span style="background:#052d4b">User and client based communication flow                                </span>=
*'''1''' All communication from and to the users client is purely based on HTTP. It is strongly recommended to use only encrypted HTTPS. For security reasons, some modules require HTTPS connections in the default configuration. The HTTP/S communication is terminated at Apache.
*'''2''' Within Apache, the mod_proxy_ajp module is used to convert the HTTP requests to the AJPv13 protocol and to forward the request to the OX server. The OX server contains an own AJP servlet, accepting this protocol as input stream. mod_proxy_ajp can also be used to configure session stickiness and load balancing in clustered environments.
*'''3''' OX Web UI & Mobile Web Interface
** The [[HTTP API]] is the core API for all user functionality. Every function of the Web UI and the Mobile UI is using this API. To to that, all possible user functionality is available in this API and can be used from external applications as well. It is based on JSON via HTTP/S.
** [http://www.open-xchange.com/en/products/ox-hosting-edition/requirements.html Requirements Web UI]
** [[OX Mobile Web App]]
** [[HTTP_API_Examples|Programming Example]], how to use this API to build an Email widget, accessing the HTTP API
*'''4''' The OXtender for Business Mobility is a server based Active Sync Implementation. The "Microsoft Exchange Active Sync" protocol supports Push via HTTPS, therefore the email backend needs to send push events to the OX server. Details, see: [[OXtender for Business Mobility Installation Guide]]  and [[OX_EMail_Push_Introduction|Email Push Introduction]]. Serverside, the synchronization makes use of the "Universal Sync Module", which is a server bundle containing the synchronization logic for several clients. It also communicates via HTTP/S transporting JSON objects.
*'''5''' The [[OXtender 2 for Microsoft Outlook]] is a MAPI plugin, installed in the Outlook client to synchronize data between Outlook and the OX server. It makes use of the same HTTP/S and JSON based communication to the Universal Sync Module, like Active Sync.
*'''6''' [[Caldav carddav Bundles|CalDAV and CardDAV]] interface is available to synchronize calendars and address books with Apple OS X applications, [[SetUpMacCalCardDAVClients|Setup Mac Cal/CardDAV Clients]]
*'''7''' A WebDAV implementation provides the possibility to access the documents in InfoStore directly via any WebDAV client, like the Windows Explorer.
=<span style="background:#FFA500">Administration, provisioning and operations related components and communication flow</span>=
*'''11''' Data Migration and Im-/Export of user data can be done via automated tools, using this interfaces:
** [[Using the import servlet]], [[Building an importer]]
** [[Using the export servlet]], [[Building an exporter]], [[Export_ical/vcard| iCal/vCard]]
** A tool is available to upload data from Outlook profiles or PST files to OX: [http://oxpedia.org/wiki/index.php?title=OX_Outlook_Uploader Outlook Uploader]
*'''12''' All provisioning tasks, like creation and editing users can be done with [http://software.open-xchange.com/OX6/doc/OX6-Provisioning/ Commandline tools]. The command line tools make use of the Java RMI API internally.
*'''13''' The native, central provisioning API is available via Java RMI [http://software.open-xchange.com/OX6/doc/RMI/admin-core/ Core] API, RMI [http://software.open-xchange.com/OX6/doc/RMI/admin-hosting/ hosting] API
*'''14''' Central control panels and billing systems, which are not implemented in Java, can use the RMI API via [[Open-Xchange-SOAP]], [http://software.open-xchange.com/OX6/doc/SOAP/admin/OX-Admin-SOAP.html SOAP API]
** Standard integration via SOAP is available for OPWV Directory
** Parallels Operations Automation, see [[POAIntegrationGuide| POA integration guide]]
** for Parallels Plesk Panel: [[Plesk_Oxtender|Plesk OXtender installation]]
** and for cPanel: [[Open-Xchange_cPanel_Installation| cPanel installation]]
*'''15''' Authentification is implemented as highly customizable plugins, many different standard and custom implementations are available
**[[Authentication IMAP Plugin description]]
**[[OX and Samba Login through LDAP]]
** Database
** custom
*'''16''' Monitoring the OX application is done via JMX interface: [[OX monitoring interface]] and a commandline tool
** An example, how to use the monitoring interface is available as pre-built Scripts for the monitoring tool Munin: [[OX munin scripts]]
=<span style="background:#E5E5E5">Backend related components and communication flow</span>=
*'''21''' All OX data - users, contacts, calendars, tasks and document meta information is stored in a MySQL Database, accessed via JDBC
**'''22''' Native MySQL contacts storage
*'''23''' Addressbooks can also be read from other sources than the internal MySQL storage. Therefore an OSGi bundle needs to be implemented, overriding the standard contact storage.
** Public available is an implementation using LDAP
** Several custom implementations are available on request or can be implemented by partners
*'''24''' Email storage is accessed through the pluggable [http://software.open-xchange.com/OX6/doc/mal/ Mail Abstraction Layer] API
** The default implementation uses IMAP
** Sending Emails is done via SMTP
** Openwave Email MX, Stateless Edition  [http://www.openwave.com/solutions/messaging/index.html OPWV MX]
** When Active Sync or Outlook are used, the email backend needs to send push requests to the OX server: [[OX_EMail_Push_Introduction|Email Push Introduction]]
** Several custom implementations are available on request or can be implemented by partners
*'''25''' Documents in the InfoStore are accessed via an API, which allows customized implementations.
** The default in large environments is to use NFS
** In small environments, the local filesystem is used
** [http://www.scality.com/ Scality Storage] is a good scaling implementation
** Several custom implementations are available on request or can be implemented by partners
=<span style="background:#00FF00">Social/Public Data related components, plugins and communication flow</span>=
A <span style="background:#E5E594">subscription based plugin system</span> allows to access data from external systems like webmail systems or social messaging. The underlying concept is called [[SocialOX]], a list of some plugins can be found here: [[SupportedCrawler]] The messaging-, contact- and calendar-integration are done via the official API of the respective 3rd-party-service wherever there is one. For authentication OAuth is used wherever available for security and privacy control. All plugins use HTTP/S connections to the external service only. Access to the external email systems is done via IMAP/S, POP3/S, depending on the service.
*'''31''' For subscription to an external calendar, a plugin to subscribe to Google Calendar is available.
*'''32''' External messaging services (Facebook, Twitter, SMS/MMS)
*'''33''' Contacts integration (Xing, LinkedIn, MSN/Windows Live, Yahoo, Facebook, google, gmx.de, web.de)
*'''34''' External email accounts can be integrated (POP3, IMAP)
** preconfigured for mail-account plugin: google, Yahoo, msn/WindowsLive, gmx.com , gmx.de , web.de , freenet.de
** [[Install and configure the mail-account plugin]]
=<span style="background:#D8E5E5">Public Available Plugins</span>=
* An overview of the existing public plugins can be found here: [[Open-Xchange Plugin Overview]]. Many others are available on request or through partners.

Revision as of 09:10, 24 May 2013

This page gives an overview of the most important internal components, plugin capabilities, public interfaces (APIs) and data communication streams of the Open-Xchange server.

Appsuite architecture diagram 2.png


User and client based communication flow

  • 1 All communication from and to the users client is purely based on HTTP. It is strongly recommended to use only encrypted HTTPS. For security reasons, some modules require HTTPS connections in the default configuration. The HTTP/S communication is terminated at Apache.
  • 2 Within Apache, the mod_proxy_ajp module is used to convert the HTTP requests to the AJPv13 protocol and to forward the request to the OX server. The OX server contains an own AJP servlet, accepting this protocol as input stream. mod_proxy_ajp can also be used to configure session stickiness and load balancing in clustered environments.
  • 3 OX Web UI & Mobile Web Interface
    • The HTTP API is the core API for all user functionality. Every function of the Web UI and the Mobile UI is using this API. To to that, all possible user functionality is available in this API and can be used from external applications as well. It is based on JSON via HTTP/S.
    • Requirements Web UI
    • OX Mobile Web App
    • Programming Example, how to use this API to build an Email widget, accessing the HTTP API
  • 4 The OXtender for Business Mobility is a server based Active Sync Implementation. The "Microsoft Exchange Active Sync" protocol supports Push via HTTPS, therefore the email backend needs to send push events to the OX server. Details, see: OXtender for Business Mobility Installation Guide and Email Push Introduction. Serverside, the synchronization makes use of the "Universal Sync Module", which is a server bundle containing the synchronization logic for several clients. It also communicates via HTTP/S transporting JSON objects.
  • 5 The OXtender 2 for Microsoft Outlook is a MAPI plugin, installed in the Outlook client to synchronize data between Outlook and the OX server. It makes use of the same HTTP/S and JSON based communication to the Universal Sync Module, like Active Sync.
  • 7 A WebDAV implementation provides the possibility to access the documents in InfoStore directly via any WebDAV client, like the Windows Explorer.

Administration, provisioning and operations related components and communication flow

  • 12 All provisioning tasks, like creation and editing users can be done with Commandline tools. The command line tools make use of the Java RMI API internally.
  • 13 The native, central provisioning API is available via Java RMI Core API, RMI hosting API
  • 16 Monitoring the OX application is done via JMX interface: OX monitoring interface and a commandline tool
    • An example, how to use the monitoring interface is available as pre-built Scripts for the monitoring tool Munin: OX munin scripts

Backend related components and communication flow

  • 21 All OX data - users, contacts, calendars, tasks and document meta information is stored in a MySQL Database, accessed via JDBC
    • 22 Native MySQL contacts storage
  • 23 Addressbooks can also be read from other sources than the internal MySQL storage. Therefore an OSGi bundle needs to be implemented, overriding the standard contact storage.
    • Public available is an implementation using LDAP
    • Several custom implementations are available on request or can be implemented by partners
  • 24 Email storage is accessed through the pluggable Mail Abstraction Layer API
    • The default implementation uses IMAP
    • Sending Emails is done via SMTP
    • Openwave Email MX, Stateless Edition OPWV MX
    • When Active Sync or Outlook are used, the email backend needs to send push requests to the OX server: Email Push Introduction
    • Several custom implementations are available on request or can be implemented by partners
  • 25 Documents in the InfoStore are accessed via an API, which allows customized implementations.
    • The default in large environments is to use NFS
    • In small environments, the local filesystem is used
    • Scality Storage is a good scaling implementation
    • Several custom implementations are available on request or can be implemented by partners

Social/Public Data related components, plugins and communication flow

A subscription based plugin system allows to access data from external systems like webmail systems or social messaging. The underlying concept is called SocialOX, a list of some plugins can be found here: SupportedCrawler The messaging-, contact- and calendar-integration are done via the official API of the respective 3rd-party-service wherever there is one. For authentication OAuth is used wherever available for security and privacy control. All plugins use HTTP/S connections to the external service only. Access to the external email systems is done via IMAP/S, POP3/S, depending on the service.

  • 31 For subscription to an external calendar, a plugin to subscribe to Google Calendar is available.
  • 32 External messaging services (Facebook, Twitter, SMS/MMS)
  • 33 Contacts integration (Xing, LinkedIn, MSN/Windows Live, Yahoo, Facebook, google, gmx.de, web.de)

Public Available Plugins

  • An overview of the existing public plugins can be found here: Open-Xchange Plugin Overview. Many others are available on request or through partners.