M3 представляет собой набор модулей для разработки web-приложений на python, функционирующих в частных и открытых облаках. Создаваемые на основе M3 приложения функционируют в трехзвенном режиме: web-браузер в качестве тонкого клиента, сервер приложений и сервер баз данных. Рабочие места и сервера, на которых развертываются такие приложения, могут функционировать под любой распространенной операционной системой (Windows, Linux, MacOS). В качестве серверов баз данных могут использоваться различные СУБД: Oracle, PostgeSQL, MS SQL, MySQL, Firebird. На клиентских рабочих местах могут использоваться любые браузеры (кроме IE 6, поддержка которого ограничена).
Ключевыми особенностями платформы являются:
Приложения на основе М3 базируются на Django. Отличительно особенностью Django является архитектура проекта. Каждый проект состоит из независимых или слабозависимых приложений. Каждое приложение реализует паттерн MTV (Model – Template – View). Model – модель из классического MVC. Template – Django шаблон, аналог представления View из MVC. View – controller из классического MVC.
Каждый проект, в основе которого лежит данный подход состоит из модулей. Каждый модуль является отдельным приложением, которое существует само по себе и может быть встроено в другое приложение или вынесено в другой проект. Архитектура каждого приложения очень похожа на архитектуру приложения в Django. Но имеется серьезные переработки некоторых компонент MTV.
Как уже было сказано, m3 состоит из модулей. Основополагающим модулем является m3-core. Внутри него реализована дополнительная абстракция над концепцией Django. В роли модели выступает обычная Django-модель. В роли контроллера (view из MTV) выступает Action. Action является внутренним классом m3-core. Он пришёл на смену Django-view. Дело в том, что подход, используемый в Django прост и вполне подходит для небольших приложений, однако масштабные корпоративные приложения выдвигают новые требования:
Для решения этих задач механизм URL Dispatcher, используемый в Django был заменен на собственный механизм. Django-view используются только как точки входа в приложение. Т.е. одно приложение – одна view, в которую приходят все запросы, адресованные данному приложению. Далее будем называть её view-controller. На смену остальным view пришли классы Action, ActionPack и ActionController, которые образуют механизм, отвечающий требованиям крупного корпоративного проекта. В качестве представления выступают визуальные компоненты из модуля m3-ext. Эти компоненты представляют собой в большей степени реализацию ExtJS контролов, а так же имеются и свои наработки.