Я продолжаю писать о новинках, представленных на конференции по SharePoint 2010 в Лас Вегасе.

Сегодня я хотел бы затронуть тему разработки приложений под SharePoint. Причём хотелось бы рассказать о подходах для wss 3.0/moss 2007 в сравнении с SharePoint Foundation 2010 и SharePoint Server 2010, а также об инструментах разработки в Visual Studio 2005, Visual Studio 2008 и Visual Studio 2010.

Хотелось бы напомнить читателям о том, какие есть возможности для разработки для SharePoint.

Можно пойти следующими путями: модифицировать и создавать что-то через веб браузер, разрабатывать «кастомизации» в Visual Studio, настраивать и адаптировать в Microsoft Office SharePoint Designer 2007. Можно даже заглянуть вглубь директорий узла 12 (C:\Program Files\Common Files\microsoft shared\Web Server Extensions\12) и что-то изменить в XML или других файлах.

Что же мы можем создавать или изменять/адаптировать, что является передовым опытом (best practices)?

Давайте разложим всё по полочкам. Вначале всё происходит от шаблона сайта, по шаблону создается сам сайт. Вместе с созданием сайта, создаются и другие объекты – списки, колонки, типы содержимого, рабочие процессы, веб части, обработчики событий, дополнительные веб страницы, задания службы таймера, пункты меню в различных местах сайта и т.д.

Как все эти изменения предлагается создавать и разворачивать в SharePoint? Через решения, возможности и модули.

Начнём с элементарного – модулей (module). Модуль – единица функциональности в SharePoint. Это хорошо известные:

  1. шаблон сайта (site template) – на основе шаблона создается сайт,
  2. шаблон списка (list template) – на основе шаблона создается список,
  3. экземпляр списка (list instance) – экземпляр на основе шаблона,
  4. тип содержимого (content type) – набор метаданных, свойств, привязка к рабочим процессам,
  5. обработчик события (event receiver) – аналог триггера для элемента списка, списка, сайта,
  6. рабочий процесс (workflow) – бизнес процесс с вовлечением пользователей,
  7. веб часть (web part) – компонент пользовательского интерфейса для работы с информацией,
  8. собственный тип поля (field type) – тип поля со своими настройками и способом отображения при просмотре, редактировании и создании элементов списка,
  9. произвольный файл – файл, добавляемый на сайт или файловую систему для кастомизации,
  10. произвольное действие (custom action) – дополнительные пункты меню (например, действия узла).

Модули группируются в возможности (features). Заглянув в папку 12/templates/features Вы можете увидеть много возможностей при установленном портале moss 2007, чуть меньше в wss 3.0.

В пользовательском интерфейсе возможности можно увидеть через веб интерфейс центра администрирования и страницы управления сайтом и коллекцией сайтов. Возможности можно создавать на четырёх уровнях – ферма, веб приложение, коллекция сайтов, сайт. Все кастомизации, связанные с возможностями можно увидеть на соответствующих административных страницах. Там представлен список возможностей с указанием графической иконки, названия, описания и возможностью активировать или деактивировать возможность. Некоторые возможности по желанию их разработчиков скрыты из интерфейса и управляются исключительно программно. При активации возможности, например, может быть создан новый список со специальной веб частью и обработчиками событий для него.

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

Теперь, когда понятно, как описывается функциональность в SharePoint, следует задаться вопросом о том, как установить все эти изменения в систему. Придётся попотеть. Нужно будет скопировать все созданные файлы в директории узла 12, но это только начало. Если был написан код для веб частей, рабочих процессов или чего-то ещё, нужно будет подписать .NET сборку (DLL) со строгим именем (strong key assembly signing), скопировать её в GAC – Global assembly Cache (C:\windows\assembly) или директорию bin веб приложения нужного Вам сайта, в файле web.config в секции <safeControls> указать все классы, которые Вы используете. Но и это ещё не всё, нужно выполнить команды stsadm –o installfeature и stsadm –o activatefeature чтобы Ваши возможности как-то себя проявили и оказались доступны в административном интерфейсе доступны для управления. Согласитель, не так-то просто. А что если у Вас 2, 3, 4 веб сервера (WFE – Web Front End)? На них придётся проделать тоже самое. А что Вы будете делать, если понадобится удалить ранее установленное решение?

И тут нам на помощь приходит механизм SharePoint называемый решения – Solutions! Это файлы с расширением .WSP, которые, по сути, являются CAB файлами (архивы – можно переименовать и посмотреть что внутри). Они содержат все файлы модулей и возможностей, дополнительные настройки и скомпилированный код в виде DLL библиотек. Такой файл загружается на сервер при помощи команды stsadm –o addsolution с указанием пути к файлу, а всё остальное управление осуществляется из веб интерфейса. Можно легко установить решение на указанные веб приложения. В ходе установки DLL копируется в GAC, копируются файлы возможностей и вспомогательные файлы, изменяется файл web.config. И Вас не волнует, сколько у Вас WFE. Всё происходит автоматически.

Однако, как создать чудо файл .wsp с решением? Все очень просто, создаете файлы возможностей, xml манифест решения со списком возможностей и библиотек, потом создаёте ddf файл с сопоставлением путей файловой системы и виртуальных путей в CAB архиве, запускаете утилиту makecab для создания CAB файла с расширением .wsp с использованием ddf файла, далее выполняете несколько stsadm команд, перезагружаете веб сервер IIS или нужный вам рабочий процесс w3wp.exe (application pool worker process). Вуаля! Всё готово!

Что? Не нравится сложность процесса??? Нет проблем – используйте Microsoft SharePoint Extensions for Visual Studio. Вы сможете создать проект SharePoint, добавить возможности, автоматически подписать сборку, автоматически сгенерировать файл решения и установочный файл setup.bat со всеми необходимыми командами stsadm. Кроме того Вам будут доступны различные полезные функции непосредственно из Visual Studio, Вы сможете отлаживать код.

Итак, вот то, что Вам понадобится для работы:

Для wss 3.0 и moss 2007

Visual Studio 2005 Standard, Professional, Team System + SharePoint Extensions 1.2

Visual Studio 2008 Standard, Professional, Team System + SharePoint Extensions 1.3

Всё это можно скачать с сайта www.microsoft.com/downloads

Для SharePoint Server 2010 и SharePoint Foundation 2010

Visual Studio 2010 (расширения не требуются – всё уже встроено)

Загрузить Visual Studio 2010 Beta 2 Вы можете по адресу http://msdn.microsoft.com/en-us/evalcenter/default.aspx

А вот SharePoint 2010 Beta будет доступен в ноябре. Можно предварительно зарегистрироваться на уведомление о выходе версии по адресу http://sharepoint2010.microsoft.com/try-it/Pages/Trial.aspx

Теперь перейдём собственно к передовым методам работы с wss 3.0 и moss 2007.

Если Вам нужно разработать шаблон списка или сайта, то можно начать создавать сайт или список через веб интерфейс доступными средствами. Это сэкономит Вам много времени на написание xml вручную. Некоторую работу по настройке Вы можете проделать в SharePoint Designer 2007. Далее необходимо установить WSS 3.0 SDK, который содержит инструмент Solution Generator. Это генератор решений проектов Visual Studio для SharePoint. При запуске Вы указываете интересующий Вас сайт или список, директорию, в которую хотите сохранить файлы проекта. После этого открываете решение в Visual Studio, дорабатываете проект, добавляете ингредиенты по необходимости, производите более точную настройку, которая недоступна через веб интерфейс и теперь можете получить .wsp файл и setup.bat с минимальными затратами.

А что добавилось в Visual Studio 2010 для поддержки проектов SharePoint 2010?

Если раньше Microsoft делала намёки на необходимость создавать кастомизации с применением решений .wsp, то теперь это просто необходимо взять за правило!

Вы использовали ранее сторонние решения для разработки проектов? Или делали всё вручную? Забудьте! SharePoint Extensions для Visual Studio 2008/2008 и Visual Studio 2010 умеют практически всё. А всё что не умеют – можно подкорректировать в сгенерированных файлах.

В общем, всё очень похоже, но стоит выделить, что совсем новое, а чего не хватает.

Что нового?

Visual Web Part – разработка веб части визуальными средствами.

Ирония в том, что Beta Visual Studio 2010 не содержит пока веб дизайнера, только aspx разметка редактируется. Но это обязательно скоро появится. Так или иначе есть возможность создавать веб часть по-старинке, а можно визуальную веб часть. На самом деле просто в элемент веб части добавляется файл пользовательского ASP.NET элемента управления .ascx, который позволяет визуально накидывать туда кнопки, поля ввода, таблицы и другую начинку, а в код метода CreateChildControls веб части добавляются строки, загружающие элемент управления:

Control с = this.LoadControl( путь к .ascx файлу );

this.Controls.Add(c);

Лично я так и раньше делал, просто это требовало пары лишних операций.

Далее, если Вам вдруг нужно добраться до кнопки внутри элемента управления, поменять её свойства или установить источник данных для таблицы, то Вы можете написать:

Button b = c.FindControl( ID элемента ) as Button;

If (b!=null) b.Text = "Hello!";

А есть ли Silverlight web part? Есть, но не в Visual Studio. Эта веб часть одна из немногих новых веб частей в SharePoint 2010. Вы можете сделать любой проект в Visual Studio с SilverLight, упаковать его в .xap файл, загрузить этот файл в библиотеку SharePoint, добавить на веб страницу веб часть SilverLight, а в настройках части указать путь к Вашему файлу. Если хотите сделать всё в Visual Studio, то создаёте в решении ещё один проект с SilverLight, добавляете .xap файл в проект SharePoint, в веб части добавляете объект SilverLight, программно загружаете в него .xap файл. На стенде Microsoft я долго приставал с вопросами к разработчикам инструментов Visual Studio 2010 для SharePoint 2010, они сказали, что работают над этим. Смею надеяться, что либо при выходе SharePoint 2010, либо с service pack для него или VS 2010 сделают и Visual SilverLight Web Part.

Импорт решений

Теперь импорт сайтов можно сделать прямо из Visual Studio 2010. Можно также импортировать и .wsp файл. Что интереснее всего – при сохранении сайта или списка в веб интерфейсе в качестве шаблона создается не .stp файл, а .wsp файл!

Что с рабочими процессами (workflow)?

Вы по-прежнему можете создавать рабочие процессы, как последовательные (Sequential), так и автоматы состояний (State machine). Новость заключается в том, что добавление форм инициации и ассоциации на ASP.NET стала гораздо проще – щелкаете в контекстном меню процесса и выбираете добавление формы, форма создается в Вашем проекте, просто работаете с ней и радуетесь.

Сильно улучшились рабочие процессы, которые создаются в SharePoint Designer. Но об этом в отдельной статье. Сейчас хочется отметить, что теперь они тоже экспортируются в .wsp файл и далее могут быть импортированы в Visual Studio 2010 и изменены.

Решения в песочнице – Sandboxed solutions

Теперь есть альтернатива размещению решений в общем хранилище – размещение их в специальной песочнице – галерее решений на каждом сайте, где эти решения работают с ограниченными привилегиями. При создании проекта в Visual Studio есть выбор размещения в общем хранилище или песочнице.

Business Connectivity Services – BCS

Это наследие Business Data Catalog - BDC. Напомню, что ранее при помощи BDC в виде xml файлов можно было описать модель внешней системы, к которой можно было обратиться через базу данных или xml http веб сервис. Эти модели можно было использовать в следующих сценариях:

  1. Отображение данных на сайте
  2. Подключение источника данных для поиска
  3. Импорт профилей пользователей

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

Теперь есть специальный дизайнер сущностей и методов доступа к данных. Но это не всё! Новая версия BCS вводит в обращения понятия внешнего списка (external list), внешнего типа содержимого (external content type), сущности (entity) . BCS позволяет не просто выводить данные из внешних систем при помощи специализированных веб частей, но отображать их в виде стандартных списков в стандартной таблице со стандартным меню и панелью с кнопками.

На какой платформе будет работать новая версия?

Вы сможете работать только на 64 битной платформе. Это может быть Windows Server 2008/2008 R2, а также это может быть и Vista SP 2 или Windows 7.

Visual Studio 2010 будет 32 битной.

SharePoint 2010 написан на .NET 3.5, а не 4.0!

Собственный процесс сборки решения и поддержка в TFS – Team Foundation Server

Вы можете настраивать собственный процесс развёртывания в Visual Studio и не ограничиваться тем, что есть в стандартной поставке.

Кроме того, в TFS 2010 появился процесс пакетного построения решения SharePoint, который Вы можете встроить в Build. Ура!

Об этом и о многом другом я также хотел бы рассказать в отдельной статье.

Читайте далее:

  1. Поддержка LINQ for SharePoint
  2. REST Services
  3. WCF Services
  4. InfoPath
  5. Access Web Databases
  6. FAST Search
  7. Новое в Business Intelligence
  8. SharePoint Designer 2010

И так далее!