Сообщество русскоговорящих пользователей
CMS DotNetNuke


Краткое описание DotNetNuke (с примером:)

Это opensource (является и был им с момента своего появления) проект. Написан под ASP.NET на VB.NET и как таковой требует виндового хостинга, хранит данные в базе MS SQL. Выпускается по модифицированной лицензии BSD.

В настоящий момент это платформа для создания веб-приложений, в архитектуре которой чётко прослеживается несколько абстрактных уровней. Функциональность DNN легко расширяется за счёт дополнительных модулей. В комплекте инсталляционного дистрибутива DNN находится ряд "ядровых" модулей ("core modules" - называются так по аналогии с "костяком" команды разработчиков DNN ("core team")) (то есть модулей, разработанных теми же людьми, что делают платформу DNN - естественно, они железно будут работать с данной версией дистрибутива и число ошибок в них теоретически минимально), при помощи которых DNN чрезвычайно легко превратить в CMS (я имею в виду именно CMS, так как в NMS (News Management System) DNN при помощи "ядровых" модулей превратить вряд ли получится, потребуются модули сторонних разработчиков).

Я постараюсь рассказать о некоторых наиболее существенных отличиях DNN от других CMS/NMS. Хочу сразу оговориться, что свои "исследования" я производил более года назад. Тогда я искал "движок", подходящий для моего сайта, и перебрал множество решений. Вполне возможно, что особенности, которые я буду описывать ниже, за прошедшее время уже успели появиться в некоторых из них в той или иной форме. Но на момент моих поисков они были по моему мнению уникальны.

Многопортальность. Что это значит? Допустим, я работаю в некой фирме, именуемой "Хомяк". А зовут меня, допустим, Вася. И вот подходит ко мне директор и говорит: "Как есть мы солидная контора пора нам задуматься о представительстве в сети интернет. Займись, Вася." Я иду к местному виндовому прову и беру у него дисковое пространство и базу, потом регистрирую доменное имя "hamster.ru", нацеливаю его на мою учётку у хостера и на счёт раз поднимаю простой портальчик-визитку с броским заголовком "Всё сожрал хомяк!", описанием, фотоальбомом, гостевухой и прочими делами (в комплекте изначально есть и собственный форум). Естественно, после установки портала у хостера остаётся ещё до черта места. Поэтому я опять иду к регистратору, беру доменное имя "vasea.info", опять-таки нацеливаю его в ту же самую папку хостера, где уже лежит DNN. Потом авторизируюсь в DNN и прописываю новый портал, откликающийся на имя "vasea.info". Таким образом, при заходе по адресу "hamster.ru" DNN будет отображать один портал (с собственным оформлением, с собственными пользователями и так далее), а при заходе с "vasea.info" - совершенно другой. Все это будет делать тот же самый скрипт, и все свои данные он будет хранить в той же самой базе. Число порталов ограничено только ресурсами железа, на котором находится DNN. Естественно, DNN уверено работает при числе пользователей в сотни тысяч и при соответствующем числе хитов.

Как и полагается проекту, построенному в соответствии с рекомендациями Майкрософт, DNN использует юникод для хранения и отображения информации, поэтому никаких проблем с кодировками не возникает.

До недавнего времени для обеспечения сжатия исходящего трафика приходилось использовать сторонние утилиты, но не так давно его встроили непосредственно в платформу.

Добавление новых модулей производится весьма просто. Пользователю с соответствующими правами достаточно указать путь к зазипованному файлу на локальном компьютере и нажать на кнопочку "Установить". DNN сам закачает архив на сайт, распакует, распихает файлы по предписанным папкам (и создаст их в случае необходимости), выполнит необходимые SQL-скрипты. Удаление модулей также производится одним нажатием кнопки.

Установка и удаление дополнительных языковых пакетов DNN происходит столь же легко, что и установка модулей - в один клик. Их можно редактировать и дополнять непосредственно из административного меню портала. DNN не боится частичных переводов - в случае, если в переводе какие-то из строк отсутствуют, он безо всяких необработанных исключений берёт англоязычный вариант строки, железно исходно присутствующий в портале. Поэтому без проблем для более поздней версии можно использовать языковой пакет от более ранней. Есть встроенный механизм поиска и вывода непереведённых значений. Помимо установки языковых пакетов DNN сам умеет создавать их для указанного языка из языковых файлов вашего портала (причём в различной комплектации). После установки или модификации языкового пакета интерфейс и служебные команды портала или модуля начинают отображаться на нужном языке (по умолчанию берётся язык локали системы пользователя или язык, указанный в языковых предпочтениях браузера; пользователь также может самостоятельно выбрать язык). Все "ядровые" модули, а также модули сторонних разработчиков (если они, конечно, следовали рекомендациям команды разработчиков DNN), поддерживают свою локализацию.

"Шкурки" для DNN создаются предельно просто (за исключением меню, с которым, вероятно, придётся повозиться). Достаточно создать HTML-шаблон оформления (со стилями, картинками...), добавив в него в нужных местах элементы вроде "[CURRENTDATE]", "[LOGO]", "[USER]", "[LOGIN]" и так далее. После загрузки этого шаблона на сайт DNN сам отпарсит его, автоматически приведя к своему "внутреннему" виду, который он непосредственно использует в работе. Точно так же создаются контейнеры модулей. Есть даже функция "предварительный просмотр" - кликаешь по ссылке, и в новом окне появится вариант оформления с выбранной вами шкуркой и контейнерами. Шаблоны оформления можно задавать как для сайтов в целом, так и прописывать для отдельных страниц в индивидуальном порядке.

Портал использует редактирование "на месте". Это значит, что размещение/перемещение страниц и модулей производится не из отдельного админского меню (в результате чего иногда затруднительно представить, как выглядит конечный результат манипуляций), а в том же окне, где находится контент. После авторизации пользователя (если он обладает необходимыми привилегиями) прямо на модулях появляются менюшки и кнопки управления ими (настройка свойств, перемещение, удаление, редактирование текста и так далее), а над страницей появляется меню управления страницами, пользователями, свойствами сайта и так далее (также дополнительные пункты появляются в меню сайта (конечно, если включено его отображение)).

Благодаря наличию нескольких уровней иерархии организации программного кода в движке более "низкие" уровни перехватывают и корректно обрабатывают исключительные ситуации (проще говоря - ошибки) в более "верхних" уровнях. Например, в случае возникновения необработанной исключительной ситуации в модуле платформа выдаст пользователю краткое уведомление об ошибке в модуле в том месте сайта, где он должен был располагаться (пользователю с административными привилегиями вместо уведомления будет выдана подробная информация об ошибке). Также, в журнал событий сайта будет записано сообщение с подробной диагностикой ошибки и (опционально) администратору отправится сообщение по электронной почте.

Продолжу приведённый в самом начале пример с фирмой. Допустим, в один из дней приходит ко мне директор и говорит: "Надо бы поместить на наш сайтик побольше информации, а то как-то голо там, одни словеса общие. Сделай-ка отдельную страничку для замдиректора, он будет передавать тебе актуальные материалы для размещения на сайте по поводу современных тенденций рынка в нашей области. И сделай страничку для отдела логистики - он будет давать тебе инфу о том, какие товары в данный момент есть на складе. А ещё сделай по страничке..." И тут я говорю: "Ни фига! У каждого из этих людей/подразделений фирмы есть компьютер. Посему назначаем для каждой страницы/раздела сайта ответственного за её/его информационное наполнение, и каждому из них я даю права на модификацию только его собственной страницы/раздела." Да товарищи, именно так - можно задавать права доступа различным группам пользователей, причём не только на уровне страниц, но даже и на уровне модулей. Это дьявольски удобно в описанной и в ряде других ситуаций - ведь юзеры по-прежнему сидят под юзерами и никаких модификаций в портал (и, как следствие, запороть его) при всём желании внести не смогут, они смогут производить только предписанные администратором действия в строго определённых им местах. Таким образом, можно раздавать права на модификацию контента, редактирование записей или добавления новостей в блог даже совсем "тёмным" личностям, ибо в комплекте с порталом идёт превосходный текстовый редактор (FCK). Данная "фича" для меня лично является второй по ценности после многопортальности.

Далее про фирму. Предположим, директор опять вваливается ко мне (Причём в самый неподходящий момент. Я, понимаешь, поднимаю свой профессиональный уровень изучением очередного хакерского сайта, который, как водится, весь обвешан порнушной рекламой, а он думает обо мне чёрт знает что. ("Как ни зайдёшь к нему - порнуху смотрит. Хорош работничек!") Вот так зарабатывается репутация сексуального маньяка.) и сообщает: "Открыли мы в славном городе Кирове наше подразделение. Дай-ка кировскому админу доступ к сайту." Для успешного решения данной задачи нужны 2 вещи:

  1. Сайт подразделения должен быть логически отделён от сайта головной фирмы, но в то же время являться его частью.
  2. Квалификация кировского админа мне неизвестна, следовательно, надо дать ему административные права так, чтобы он не мог испортить или обрушить сайт головной фирмы.

DNN позволяет решить обе эти задачи одновременно и с минимумом усилий.

  1. Иду к регистратору, создаю поддомен kirov.hamster.ru, и опять нацеливаю в ту же самую учётку на сервере нашего хостера. Экспортирую сайт головной фирмы как шаблон. Создаю новый портал, откликающийся на адрес kirov.hamster.ru, с использованием шаблона сайта головной фирмы. В качестве администратора пропысываю данные админа из Кирова. Вуаля! Единый стиль и оформление, другие админ и пользователи. Будут даже созданы страницы и модули по образу и подобию исходного сайта (опционально - вместе с контентом). Кировскому админу останется только добавить пользователей, раздать им права доступа - и они смогут немедля приступать к модификации контента.
  2. Необходимо знать, что в DNN есть 2 типа админов. Один - админ данного сайта. В пределах этого (и только этого) сайта он может всё. Всё, кроме установки и удаления модулей (имеются в виду программные модули, а не выводимый результат их работы). Второй же, именуемый "хост" - суперадмин. Он может совсем уж всё. Он имеет доступ ко всем сайтам в DNN как админ, а ещё он админит только одному ему (или другому пользователю с правами "хоста") доступную хостовую часть DNN, где задаются свойства и настройки самой платформы, производится установка и удаление программных модулей и всё остальное.

Думаю, из вышеописанных примеров ясно, что "Вася" работал с DNN на уровне хоста, а когда потребовалось - дал админу из Кирова уровень админа. В результате кировский админ не получит доступ к сайту головной фирмы, а также не сможет внести перебои в работу самой платформы, имея в то же время неограниченный доступ к редактированию контента кировского сайта. Что и требовалось.

У DNN есть ещё много "фишек" (встроенная система учёта посещаемости, банеропоказы, платная регистрация новых порталов с автоматическим биллингом через различные электронные средства перевода денег, возможность создания шаблонов сайтов вместе с содержимым, возможность переброски модулей со страницы на страницу или их копирования, возможность восстановления из "корзины" удалённых модулей и страниц и так далее). В комплекте есть даже "ядровые" модули для организации интернет-магазина. Проект "живой", команда из нескольких десятков разработчиков изо дня в день целенаправленно работает над платформой, стремясь сделать её не только функциональной, но и максимально простой в управлении. Поэтому, если вы хотите получить более полное представление о DNN, я советую установить его у себя на компьютере и попробовать ознакомиться с ним лично.

В ближайшее время ожидается реализация в ядре платформы встроенной поддержки контроля версий контента модулей и локализации контента (имеется в виду возможность размещения версий контента на нескольких языках одновременно).

Теперь о, так сказать, "недостатках" DNN.

Потребуется виндовый хостинг, а он либо дороже линуховского, либо за те же деньги вы получите на порядок меньше дискового пространства.

Валидацию соответствия стандартам HTML DNN в данный момент пройти не в состоянии. Уйти от этой неприятности в силу специфики ASP.NET пока полностью не представляется возможным. Над этим моментом разработчиками ведётся работа.

DNN очень требователен к ресурсам железа, на котором выполняется. Крайне желательно, чтобы хостер изначально заявил свою поддержку данного движка, тем самым демонстрируя знание того, на что он идёт.

Предупреждая вопросы о возможности использования DNN на линуховой платформе скажу, что теоретически (а иногда и практически) это возможно. Уже есть бесплатный аналог ASP.NET для линуха. Но вот аналога MS SQL под линухом нет. К счастью, DNN так лихо спроектирован, что позволяет использовать альтернативные "коннекторы" для использования других БД. Одной из БД, для которых уже существует готовый "коннектор", является Oracle. Вот только "коннектор" для неё бесплатно не распространяется...


Примечание: я ни в коем случае не являюсь и не считаю себя специалистом по DNN (им является человек, который любезно предоставил мне в пользование соответствующий домен). Я просто использую DNN на протяжении ряда лет и в процессе, что называется, "нахватался".

Пояснение

Описанный в тексте пример и есть не более чем пример. Уверен, что после ознакомления с возможностями DNN вы также сможете найти немало вещей, весьма просто решаемых с его помощью и крайне сложно (если вообще решаемых) - с помощью чего-то другого.

Обратное также справедливо. Конечный пользователь работает не с платформой как таковой, а с модулями, установленными на неё. DNN настолько хорошо подходит для решения ваших задач, насколько хорошо они решаются имеющимися в вашем распоряжении модулями (исключения: вы намерены в случае необходимости написать модули самостоятельно либо приобрести или заказать их).


Готов рассмотреть на предмет размещения на сайте ваши отзывы о DNN (с указанием стажа использования DNN и ссылок на сделанные под ним сайты).

 
OpenedBorderBoxed Small width layoutMedium width layoutMaximum width layout Small textMedium textMaximum text