Использование ASP.NET Forums для создания дискуссионных групп.
Что такое ASP.NET Forums и с чем их едят.
Использование ASP.NET Forums для создания дискуссионных групп.
Недавно видел в одном из форумов сообщение о том, что человек соскучился по сложным способам разработки веб-систем. Он «ревновал», поскольку встроенные в .NET средства разработки приложений настолько просты, что с их помощью даже новичкам под силу быстро создавать мощные приложения. Хочу обрадовать автора сообщения, что и в .NET ему будет чем заняться, поскольку за всей внешней простотой системы лежит сложная внутренняя архитектура, не зная которой трудно создавать профессиональные решения.
Сегодня мы рассмотрим очередной способ упростить себе жизнь и сохранить при этом свой профессиональный уровень. Хочу представить Вам ASP.NET Forums. Этот долгожданный для любого веб-мастера проект полностью оправдывает своё название и представляет собой доступный в исходных кодах проект поддержки дискуссионных групп, написанный на ASP.NET.
С одной стороны этот проект идеально подходит для Вас, если Вам нужно быстрое коробочное решение, поскольку доступен инсталляционный пакет, требующий малейших видоизменений. В этот момент все новички в ASP.NET должны возрадоваться и перейти к разделу инсталляция.
С другой стороны, так как данный проект доступен в исходных текстах, Вы можете делать с ним всё, что Вашей душе угодно – менять дизайн, локализовывать, добавлять или удалять возможности, интегрировать в свой портал и т.п.
Инсталляция.
Скачать проект и посмотреть системные требования можно с сайта www.asp.net по адресу http://www.asp.net/Forums/Download/
Запускаем AspNetForums.exe, следуем инструкциям и…проверяем инсталляцию по адресу http://localhost/AspNetForums/
Если Вы похожи на меня, то увидите следующее жизнерадостное сообщение
<сообщение>
[SqlException: Cannot resolve collation conflict for equal to operation.] System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream) +643 System.Data.SqlClient.SqlCommand.ExecuteReader() +11 AspNetForums.Data.SqlDataProvider.GetSiteStatistics() +109 AspNetForums.Components.Statistics.GetSiteStatistics() +120 AspNetForums.Controls.SiteStats.InitializeSkin(Control skin) +20 AspNetForums.Controls.SkinnedForumWebControl.CreateChildControls() +24 System.Web.UI.Control.EnsureChildControls() +100 System.Web.UI.Control.PreRenderRecursiveInternal() +38 System.Web.UI.Control.PreRenderRecursiveInternal() +125 System.Web.UI.Control.PreRenderRecursiveInternal() +125 System.Web.UI.Control.PreRenderRecursiveInternal() +125 System.Web.UI.Page.ProcessRequestMain() +1470 |
</сообщение>
Не огорчайтесь, если вместо этого сообщения Вы увидите работающие форумыJ и смело переходите к следующему разделу. Я же скажу несколько слов как исправить эту досадную оплошность.
- Идём в ту папку, в которую Вы поставили AspNetForums (может быть это c:\AspNetForums на вашей машине ?)
- Открываем в текстовом редакторе файл AspNetForums.sql
- Запускаем команду replace all: заменяем строку “COLLATE SQL_Latin1_General_CP1_CI_AS” на пустую строку («»). Должно произойти 49 замен
- Запускаем SQL Query Analyzer, соединяемся с сервером, копируем туда изменённый скрипт и запускаем. Если Query Analyzer говорит Вам о том, что база не может быть удалена по причине её текущего использования, то сначала удалите базу (например, через Enterprise Manager), а потом уже запускайте скрипт
После этого мы радостно нажимаем refresh в броузере, ожидая приятную картинку по адресу http://localhost/AspNetForums/ и получаем следующее сообщение о "General Network Error"
Попробуем добавить в SQL Enterprise Manager пользователю ASPNET на локальной машине права db_owner на базу AspNetForums и получим долгожданные работающие форумы.
Что мне с этим делать?
Дальше всё зависит от Вашей фантазии и мастерства. Настройки приложения прописаны в файле web.config. Администрировать форумы можно двумя путями: через веб-интерфейс и через базу. Текущих пользователей и их пароли (включая администратора) Вы всегда можете посмотреть в таблице Users.
Само по себе решение состоит из двух C# проектов и логики в базе:
- AspNetForums (именно на него и смотрит Ваш виртуальный каталог). Является подкаталогом Вашей инсталляции форумов. Представляет из себя веб-интерфейс форумов, со скинами в папке skins.
- Engine. Является подкаталогом Вашей инсталляции форумов. Содержит основную логику работы проекта.
- Уровень хранимых процедур в базе.
Первое, что может прийти Вам в голову – локализовать форумы (перевести их на русских язык). Если это действительно так, то думаю, что вся коммьюнити скажет Вам большое спасибо. Мы готовы Вам в этом посодействовать.
Ещё одна из потенциальных задач – перенос данных из существующих у Вас форумов в ASP.NET Forums. Хотим заметить, что это не сложно. Наше приложение реализовывало следующий алгоритм:
- Просматриваем форумы в старой системе и добавляем ветка за веткой.
- Внутри ветки просматриваем каждое сообщение, проверяем наличие пользователя в локальном хэше. Если пользователь есть, добавляем сообщение в новую систему. Если пользователя нет, добавляем пользователя в новую систему, заносим его в хэш, добавляем сообщение в новую систему.
Самая простая из задач – это модификация дизайна и решается она благодаря использованию скинов в проекте (см. папку AspNetForums\Skins\default).
Надеюсь, этот краткий обзор поможет Вам в приручении кода, написанного командой разработчиков ASP.NET и ускорит процесс создания Вами веб-приложений.
А теперь всё то же самое и по-руccки.
Теперь доступна и русифицированная версия форумов. Скажем спасибо Алексею Кизину.
Андрей Филёв
MCSD.NET
Руководитель проекта dotSITE.ru
Президент Russian .NET User Group
Автор “Professional UML with VS.NET”
|