Во всех проектах, которые я проделал за эти годы, я никогда не сталкивался с таким требованием, хотя на бумаге это выглядит так просто: напишите плагин для многих известных CMS.
Очевидно, что каждая плагин-система (или система расширения) отличается, и для этого требуется специальный код моста через шаблон адаптера. Но ядро должно быть написано один раз. Я не ожидаю, что пользователи WordPress будут использовать модем PHP-Java, и я не ожидаю, что пользователи DotNetNuke будут использовать .NET-родной мост (хотя это легче понять).
Как я вижу, ядро должно быть скомпилировано в трех основных доменах, которые охватывают большинство систем CMS:
- native, промежуточный язык может быть C или С++. Цель может использоваться как расширение PHP.
- MSIL/CIL для языков, основанных на .NET.
- Java-байтовый код для Java-систем.
С# и Java хорошо транслируются и друг от друга, но C и С# намного сложнее. В конечном счете, было бы неплохо добавить другие цели, чтобы не принуждать пользователя WordPress или WikiMedia устанавливать расширение до использования плагина.
Я уверен, что это тоже придумало. Какой общий способ решения таких проблем? Должен ли я сначала определить DSL и использовать DMS или аналогично преобразованию? Другие варианты?