Выбор CMS vs Portal vs MVC + Components?
Мне нужна помощь в выяснении того, было бы хорошей идеей использовать CMS или решение для портала для моего последнего проекта, который (в настоящее время) является приложением ASP.NET MVC, которое должно обслуживать несколько клиентов (являющихся компанией или какой-либо другой объект со списком пользователей) из одной установки (то есть SaaS).
В дополнение к основной функциональности, которая включает в себя управление документами/публикацию, мне также необходимо предоставить основные социальные функции (такие как блог, форум, галерея, опросы и т.д.). Тем не менее, крайне важно, чтобы контент был виден только для клиента, к которому он принадлежит, и моя оценка группы CMS и решений для порталов мало пролила свет на то, поддерживают ли они это. Они довольно сосредоточены на однопользовательских установках, а документация о том, как интегрироваться с существующим решением MVC, довольно тонкая.
По сути, я ищу некоторые рекомендации, которые помогут мне отказаться от тупиковых опций (продукт не отвечает требованиям, накладывает слишком много ограничений, не зрело и т.д.), и найдите неисследованные параметры, прежде чем зайти слишком далеко вперед проект.
Мои требования к архитектуре включают в себя:
- Поддержка нескольких сайтов (с использованием единого домена для хостинга)
- Водонепроницаемое разделение содержимого между клиентами
- Полная интеграция между компонентами/функциями
- SSO (однократный вход)
- Опыт работы с одним сайтом (общий заголовок/нижний колонтитул, унифицированная навигация, унифицированные теги и т.д.).
- Простота разработки и развертывания
- Пользовательская логика будет написана с использованием С# и ASP.NET MVC, и любые продукты должны поддерживать это.
- Я хочу остаться под контролем
- Решение должно предлагать функции, но в остальном оставаться в стороне (например, не навязывать мне глупые идиомы, например настаивать на GUID для первичных ключей)
- Активное сообщество разработчиков
- Нет усилий для одиноких людей.
- Недавняя деятельность по контролю версий.
- Разумные уровни документации и зрелости
- Не нужно открывать исходный код
Я потратил немало времени на оценку продуктов и компонентов, о которых я кратко расскажу здесь:
- Umbraco
- Не поддерживает ASP.NET MVC (пока кто-то связан с комментарием иначе)
- Отличная поддержка сообщества, активное развитие
- Кажется, что нужно много работать.
- Kooboo
- Нет активности источника (нет обновлений в течение почти двух месяцев)
- Лицензия GPL? (нужно что-то, что позволяет использовать приложения с закрытым исходным кодом)
- N2CMS
- Поддержка частичного ASP.NET MVC
- Каждый клиент должен иметь отдельный домен
- Ограниченная деятельность источника (не мертвая, но не яркая)
- Orchard
- спонсируемый Microsoft (что означает, что он, вероятно, будет чрезмерно задуманным, раздутым по коду и медленным, хотя у него есть некоторые хорошо известные и уважаемые участники/лидеры).
- Построено с использованием ASP.NET MVC
- Выглядит многообещающим (но вряд ли будет стабильным на данном этапе).
- AtomSite
- Чувствует себя достаточно зрелым и имеет приличную документацию, хотя и с дырками.
- Построено с использованием ASP.NET MVC
- Ограниченная деятельность источника, один разработчик
- MojoPortal
- Выглядит хорошо для портала, но, вероятно, требуется, чтобы пользовательская логика была построена как модули вокруг продукта (я надеялся избежать такого рода блокировки, если это возможно).
- DotNetNuke (DNN), CommunityServer и Microsoft Office SharePoint Server (MOSS)
- Определенно не моя чашка чая;)
- BlogEngine.NET
- Зрелые и полнофункциональные
- Поддержка ASP.NET MVC
- Интеграция возможна, но не без большого количества Web.config voodoo
- Не уверен, поддерживает ли клиент разделение
Учитывая приведенный выше список, я склоняюсь к AtomSite, N2CMS, Orchard или BlogEngine.NET. Если я пойду с последним, я буду использовать jitbit AspNetForum, который отлично подходит для моих нужд.
Я бы предпочел использовать настраиваемое решение ASP.NET MVC и отдельные компоненты, поскольку это, скорее всего, даст мне наибольшее количество контроля, но, с другой стороны, это сделает сложность сайта и интеграцию сложнее. Какие комбинации вы пытались, что сработало, а что нет? Что-нибудь важное, что я оставляю без оценки? Любой другой соответствующий совет?
Я был бы признателен, если бы ответы были не просто одобрением вашего любимого продукта или способа его выполнения, а тем, что помогло бы мне выбрать или исключить кандидатов на решение, учитывая изложенные выше требования.
Ответы
Ответ 1
С уровнем требований, которые вы указали, я лично буду склоняться к индивидуальному подходу. Вы можете нанять кого-то, чтобы сделать для вас часть дизайна (просмотра) сайта, или вы можете купить тему у интернет-сайта дизайнеров сайта и настроить ее по своему усмотрению. (Иногда просто нужно что-то начинать достаточно для настройки промежуточного уровня).
-
Поддержка нескольких сайтов (с использованием единого домена для хостинга)
- Вероятно, вам захочется управлять своей хостинговой средой, либо VPS (Virtual Private Server), либо выделенным ящиком. Это все еще возможно на общем хостинге, но не рекомендуется.
-
Водонепроницаемое разделение содержимого между клиентами
- Вам, вероятно, придется создать уникальный адд-пул для каждого клиента с собственным пользователем услуг для 100% разделения.
-
Полная интеграция между компонентами/функциями/SSO (однократная регистрация)/Работа с одним сайтом (общий заголовок/нижний колонтитул, унифицированная навигация, унифицированные теги и т.д.)
- Это будет сложная часть. Этот пример может иметь полезную информацию для вас в процессе разработки, но вам понадобится унифицированная служба входа в систему и все сайты будут использовать ее или ссылку на нее.
- Простота разработки и развертывания
- Здесь сложно. Я думаю, что легкость развития исходит из вашего фона. MVC, безусловно, является правильным выбором в этом отношении, тогда, зная много о правильных способах создания сайта в MVC, поможет в этом процессе. Будьте в курсе, читая блоги сообщества и слушайте подкасты, такие как Hanselminutes или DotNetRocks поможет вам поддерживать связь с новейшими и лучшими инструментами/технологиями для быстрого и эффективного создания вашего сайта.
- Развертывание - это сложное место. MSDeploy все еще не совсем там. Но если вы, возможно, захотите создать структуру публикации Dev → Staging → Release, чтобы вы могли протестировать свой код в промежуточной среде (mimiced production).
- Пользовательская логика будет написана с использованием С# и MVC, и любые продукты должны поддерживать это
Я хочу остаться под контролем
- Если вы создаете сайт в ASP.NET-MVC, вы сможете создавать общие библиотеки, которые вы можете использовать не только на своем сайте, но и в своем настраиваемом инструменте. Это значительно уменьшит дублирование кода и поможет обеспечить оперативное единство. (Все работает одинаково).
- Решение должно предлагать функции, но в остальном оставаться в стороне (например, не навязывать мне глупые идиомы, например настаивать на GUID для первичных ключей)
- Пока у вас будет контроль в этой ситуации, я бы сильно рекомендовал основные ключи GUID. Это позволяет Merge Replication, что может помочь вам легко восстановить резервные копии или использовать отказоустойчивые серверы БД, когда ситуация пойдет не так.
- Активное сообщество разработчиков
- У .NET есть отличное сообщество (включая этот), и вы должны получить большую поддержку, если попросите его вежливо.
- Нет усилий одного человека
- Не уверен, что вы имеете в виду здесь, вы были бы единственным человеком, если только не нанимаете помощь, но даже 2 человека могут делать большие вещи, учитывая небольшое время. Даже один человек может делать отличные вещи, но рамки, в которых вы работаете, поддерживаются огромной командой, финансируемой коммерческими организациями.
- Недавняя деятельность по контролю версий
- На самом деле это не относится к .NET, но многие библиотеки, которые вы можете использовать (NHibernate, MVC Contrib, AutoFac, Etc...), будут иметь большую активность и постоянно улучшаться.
- Разумные уровни документации и зрелости
- .NET и большинство библиотек уровня производительности, разработанных для .NET(упоминается выше), действительно имеют довольно хорошую документацию. Там много платных и неоплачиваемых источников информации только для .NET и большинства библиотек (хорошо поддерживаются сообществом и известны в StackOverflow).
- Не нужно открывать исходный код
- Ищите библиотеки поддержки, которые являются LGPL (т.е. вы можете использовать ее в коммерческом программном обеспечении, но если вы измените библиотеку, вы должны освободить новый библиотечный код, если вы выпустили двоичный файл.) Вы здесь довольно безопасны, ваш сайт dosen't должен быть открытым исходным кодом, если вы используете эти библиотеки для поддержки своей разработки.
Хорошо, что мои 2центы. Проект, о котором вы описали, - это небольшая работа, вы смотрите на значительную работу, даже если вы идете с заранее построенным решением (главным образом, взломать его так, как вы хотите). Я предполагаю, что ваши самые большие зависания будут SSO и Security для готовых решений. Не сказать, что это невозможно, просто сложно, и конечный результат может быть не совсем тем, что вы ищете.
Кроме того, посмотрите OpenID, это может быть наилучшим решением для объединения всех ваших сайтов вместе, и большинство готовых систем могут легко портироваться, чтобы использовать его.
Ответ 2
Взгляните еще на MojoPortal. CMS потрясающе, и главный разработчик Джо Аудетта очень отзывчив. У меня есть несколько установок CMS, работающих с одним и несколькими сайтами.
Ответ 3
Я бы склонялся к решению на основе CMS. Наличие протестированного и готового программного обеспечения не только сокращает время разработки, но также помогает в непрерывном обновлении и сокращении количества ошибок.
Если вы спуститесь по этому маршруту, вы можете также рассмотреть Sitefinity. Он не только поддерживает все функции, необходимые вам, но также построен на .NET и поддерживает разработку MVC. Продукт построен Telerik, создателем инструментов UX.
Отказ от ответственности: я нанят Telerik.
Ответ 4
Недавно я встретил phpFox, который является сайтом социальных сетей/форумов/сообщества CMS. Это может пригодиться вам и является довольно недорогим.
Ответ 5
Решение для сайта нашей компании стало EBIZ CMS: полнофункциональный сайт, включающий социальные сети, интернет-магазин, имеет презентацию, форум, создавать HTML-страницы и многое другое, включая обслуживание профессиональной технической поддержки, поэтому нам даже не нужна помощь для установки программистом, и это всего лишь 9 долларов США в месяц!