Я пытаюсь перефразировать то, что вы написали, просто чтобы вы убедились, что я правильно понял ваш вопрос. Вам необходимо создать веб-приложение, которое:
- Реализует некоторые стандартные функции Drupal
- Имеют некоторые пользовательские функции, которые должны "сливаться" с Drupal (те же пользователи, те же разрешения и т. Д.) *
- Возможность загружать / скачивать контент (или данные) из настольных приложений.
Если я вас правильно понял, краткий ответ: Да, вы можете сделать это с Drupal .
Теперь для обширного:
- Drupal имеет буквально тысячи модулей, поэтому я ожидаю, что вы получите большинство вещей, которые вы хотите, просто установив правильную комбинацию легкодоступных модулей.
- Конечно, любой пользовательский функционал может быть легко реализован в виде модуля (вполне стандартная вещь в наши дни).
- Взаимодействие с настольным приложением обычно осуществляется через webservices , а не напрямую обращается к БД. Drupal изначально поставляется с сервером и клиентом xmlrpc, но вы можете перейти на SOAP - если хотите - с помощью пары модулей contrib.
Некоторые дополнительные мысли:
- Если вы решите использовать Drupal и начнете с нуля, вы должны знать, что вам и вашей команде нужно посвятить некоторое время и усилия, чтобы понять, как работает Drupal. Хотя - в отличие от Палантира - я застрял с Drupal, я согласен с ней / с ним в том, что Drupal усложняет усложняет сложность сразу же после биты . Это компромисс, который вы должны заплатить, чтобы иметь платформу, которая - будьте уверены - очень гибкая, чрезвычайно подключаемая и надежная (иначе она не использовалась бы для перепроектирования * 1028) * Белый дом , ни Drupal не получат второй год подряд награду «Лучшая PHP CMS», я полагаю).
- Хорошая новость: есть несколько отличных книг, и я, безусловно, рекомендую «Pro Drupal Development» для всестороннего и всестороннего объяснения системы. Только убедитесь, что получили 2-е издание, поскольку первое имеет дело с уже устаревшими 5-ю серорами. Это сказал ...
- Очень хорошая вещь в Drupal, по крайней мере, на мой взгляд, заключается в том, что большинство настроек, которые вам, возможно, потребуется сделать для существующей функциональности, могут быть реализованы путем подключения к исходному коду из пользовательского модуля. Это IMO - самое большое преимущество Drupal: вам никогда не нужно трогать код других разработчиков для достижения ваших целей, а это означает, например, что вы сможете поддерживать свои основные и дополнительные модули в актуальном состоянии, не нарушая никаких настройка, которую вы могли бы сделать.
- Друпал тяжелый. По сравнению с другими CMS он отнимает много вычислительной мощности и оперативной памяти с вашего сервера, и - если у вас не будет очень маленького сайта - я рекомендую развертывать его вместе с nginx, а не с Apache.
- Drupal хорошо масштабируется, благодаря хорошему механизму кэширования и механизмам «дросселирования». Как ни странно, Drupal очень хорошо масштабируется на сайтах с большим трафиком, так что значительное увеличение трафика не обязательно означает значительное увеличение использования ресурсов.
- Пользовательский опыт на сайте Drupal довольно плохой. В настоящее время проводится огромная работа над этим ( здесь и здесь (видео) ), но улучшения не будут доступны, пока не выйдет D7 [скоро, но тогда вы придется подождать, пока модули будут портированы], поэтому желательно выделить некоторое время для создания административной темы, если администраторы вашего сайта не будут технического типа.
В конце концов, мой совет: если ваш сайт станет большим / сложным / со сложной бизнес-логикой и большим количеством функциональных возможностей, то Drupal, вероятно, является хорошим кандидатом . Если ваш сайт, напротив, является мелкомасштабным со стандартной функциональностью и несколькими пользовательскими элементами, возможно, Wordpress / Joomla подойдет вам лучше (не потому, что они «менее мощные», а потому, что сильные стороны Drupal в этом случае не будут использоваться, в то время как Wordpress / Более простая архитектура Joomla, вероятно, представляет преимущество в этом сценарии]
Другими вариантами, безусловно, могут быть такие фреймворки, как, например, CakePHP или Django, но это - IMO - я бы сказал, совершенно другой подход к этому вопросу.