понедельник, 17 сентября 2007 г.

Как перенести Web User Control в Sharepoint

Это скорее напоминание себе, чем полноценоое описание, но и такое описание найти непросто :)
Итак, у вас есть ASP.Net-приложение, простроенное из "пользовательских контролов", или ascx-файлов, и вам хочется это приложение или его часть перенести на Sharepoint-портал. Простой способ выставить любое работающее веб-приложение в интерфейсе портала - стандартная "Веб-часть просмотр страниц", которая отобразит существующее приложение в iframe-е:



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

Вот неполный и весьма поверхностный список задач, выполняемых при переносе интерфейса:

1. Выделите контролы, которые будут размещаться на страницах как веб-части. В грамотно написаном приложении некоторые ascx-контролы "верхнего уровня" прямо соответствуют веб-частям в будущем интерфейсе
2. Поменяйте структуру приложения:
2.1 Все ascx-контролы разместите в папке UserControls или UserControls\имяПриложения
2.2 Файлы ресурсов (картинки, css-стили, js-скрипты) разместите в папке wpresources или wpresources\имяПриложения
2.3 Вынесите весь код из ascx-файлов в code-behind файлы - проще будет потом решать проблемы с моделью безопасности Sharepoint
2.4 Весь код, не относящийся к интерфейсу, вынесите в отдельную сборку
3. Добейтесь работоспособности измененного приложения :)
4. Скачайте и разверните на сервере SmartPart - веб-часть, позволяющую отображать на портале Web user control-ы
5. Выделите участки кода, которые необходимо выполнять с правами пользователя-администратора или с "повышенными правами".
Чаще всего на портале включена имперсонация, поэтому код по умолчанию будет исполняться от имени пользователя - это обычно ломает код работы с БД, код работы с объектной моделью Sharepoint и т.п. Для исполнения кода с чужими правами ищем "user impersonation .net", или используем SPSecurity.RunWithElevatedPrivileges
6. Разверните приложение на сервере Sharepoint:
корень приложения - C:\Inetpub\wwwroot\wss\VirtualDirectories\номерПорта,
используемые сборки копируются в bin,
user controls - в UserControls,
ресурсы - в wpresources.

Asсx-контролы затем размещаются в экземплярах SmartPart на страницах портала.

Комментариев нет: