SharePoint 2010: развязывая руки разработчикам

3 март, 2010 - 19:39Вячеслав Колдовский

Продукты SharePoint, объединив в себе наиболее востребованную функциональность – инструменты коллективной работы, файловое хранилище с поддержкой версий и мощным поисковым механизмом, интеграцию с клиентскими приложениями Microsoft Office, в свое время совершили небольшой переворот и завоевали заслуженную популярность на рынке решений для построения корпоративных порталов. А в новой версии 2010 Microsoft не просто существенно расширяет их возможности, но делает особый упор на построение на их основе сложных проектов.

SharePoint 2010 развязывая руки разработчикам
Visual Studio 2010 изначально включает возможности разработки для SharePoint и большое число готовых шаблонов

Создание SharePoint, корпоративной среды для коллективной работы на основе веб-технологий, да и к тому же предоставляющей широкие возможности для организации документооборота на основе шаблонов и списков самими пользователями, без необходимости привлекать профессиональных программистов, – пожалуй, одно из наиболее заметных достижений Microsoft на корпоративном фронте. Число инсталляций SharePoint растет впечатляющими темпами, уже сейчас счет идет на многие десятки тысяч, а с учетом того, что прямых конкурентов (если говорить о реальных возможностях, а не о позиционировании) практически не сыскать, то будущее SharePoint выглядит весьма безоблачно. Однако с ростом популярности платформы возрастают и запросы пользователей по расширению ее возможностей и гибкой настройке под конкретные потребности. Все предыдущие версии в этом отношении ограничивали разработчиков достаточно узкими рамками, выход за которые нередко заставлял прибегать к недокументированным возможностям и опасным экспериментам с внутренними структурами данных. Поэтому вплоть до настоящего времени SharePoint был не в особой чести у сторонних разработчиков, которые, совершенно естественно, предпочитают полную свободу действий. Вполне закономерно, что в определенный момент Microsoft, активно позиционирующая себя в качестве поставщика именно платформ, решила коренным образом изменить такое положение дел, чтобы добиться еще большего успеха и сделать задел на будущее.

Соответственно, можно выделить три основных направления, в которых произошли наиболее важные улучшения в SharePoint 2010, ориентированные на сторонних разработчиков: инструменты, технологии и развертывание. В первом случае речь идет об увеличении производительности труда за счет новых инструментов и облегченных процессов отладки и настройки готового решения; во втором – о расширенных возможностях построения функционально насыщенных решений благодаря поддержке еще большего числа различных смежных технологий; в третьем – о заметном упрощении развертывания готовых решений за счет управления жизненным циклом приложений и использования механизма безопасного исполнении кода в рамках изолированной песочницы.

Инструменты

Visual Studio 2010

Грядущая версия флагманской IDE компании Visual Studio (VS) 2010 (ko.com.ua/44078) должна стать основным инструментом для множества платформ, в том числе и для SharePoint 2010. В VS 2010, в отличие от прежних версий, поддержка SharePoint (как 2010, так и 2007) реализована «прямо из коробки», без необходимости установки дополнительных SDK. При этом возможно создание решений и для актуальной на сегодня .NET Framework 3.5, и для ожидаемой одновременно с VS 2010 в апреле нынешнего года 4.0.

Пожалуй, первое, на что следует обратить внимание, – значительно расширенное число шаблонов проектов, благодаря чему многое из того, что ранее требовало утомительного ручного кодирования, теперь делается быстро и просто. Помимо дюжины шаблонов для новых проектов, существует также около десятка для таких элементов, как веб-части (Web Part) и списки (List Instance), которые могут быть добавлены в другие проекты для обеспечения доступа к данным SharePoint. При этом Server Explorer из состава VS 2010 позволяет подключаться к серверам SharePoint с помощью механизмов, аналогичных средствам взаимодействия с СУБД, изучать их структуру и доступные ресурсы, публиковать новые компоненты, и все это – не покидая среды разработки.

SharePoint 2010 развязывая руки разработчикам
В окне Server Explorer (слева) появилась возможность просмотра содержимого сервера SharePoint

Другое интересное нововведение – возможность развертывания полноценной среды разработки, включая в том числе и сам сервер SharePoint 2010, на клиентских операционных системах Windows 7 и Windows Vista SP1. Тем самым нет необходимости в дополнительных компьютерах (физических или виртуальных), не нужны лицензии на серверные ОС (по крайней мере на первых этапах, до начала финального тестирования), рабочее место становится более мобильным. Единственным ограничением является требование 64-разрядной ОС, поскольку SharePoint 2010 будет выпущен только в такой разрядности (разумеется, к самому SharePoint 2010 SDK это не относится).

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

SharePoint Designer 2010

Этот инструмент может использоваться как независимо от Visual Studio, так и совместно с этой IDE. По сравнению с предыдущей версией, по сути, являющейся модифицированным HTML-редактором FrontPage, в SharePoint Designer 2010 реализованы кардинальные усовершенствования, в частности совершен переход от непосредственного редактирования HTML/CSS к конструированию SharePoint-решения из отдельных компонентов (списков, рабочих процессов, данных из различных источников и т. п.). Приложение выполнено в духе последних веяний Microsoft Office: заголовок окна совмещен с часто используемыми командами, активно применяется ленточный интерфейс с возможностью максимизации рабочей области, большинство команд можно выполнить минимумом действий мыши или клавиатуры. Новая страница сайта содержит в одном месте все необходимые данные о сервере, на котором он размещен, в частности адрес, версии SharePoint и IIS, а также статистику использования штатного хранилища. Поддерживается полная интероперабельность с Visual Studio.

Поскольку в SharePoint рабочие процессы (workflow) составляют основу документооборота, механизмов обработки данных и коллективного взаимодействия, то их проектированию отводится особая роль. В SharePoint Designer 2010 можно создавать процессы как привязанные к одному конкретному сайту, так и те, что могут использоваться на любых. При этом основное отличие состоит в характере данных – в первом случае их можно произвольно брать с сайта, во втором контроль за ними гораздо более строгий. Однако набор инструментов для создания рабочих процессов не ограничивается Visual Studio и SharePoint Designer, теперь для этих целей можно применять и Microsoft Visio, задействуя все стандартные элементы платформы. При этом интероперабельность обеспечивается универсальным форматом WSP.

Developer Dashboard

Контроль нагрузки на сервер, равно как и выявление проблем в рабочем окружении, может быть достаточно непростой задачей, особенно при создании комплексных решений. Для устранения данной проблемы в SharePoint 2010 появилась весьма интересная функциональность под названием Developer Dashboard, активируемая путем исполнения на сервере соответствующей консольной команды. Затем, после щелчка мышью на специальном значке, «приборная панель разработчика» выводится внизу страницы и позволяет просмотреть время выполнения каждой операции в процессе ее загрузки, список запросов к БД и продолжительность их обработки, информацию о вызове веб-сервисов и загрузке веб-частей, а также о возникающих сбоях и критических ситуациях. Есть также возможность получить максимально детальный текстовый отчет. По умолчанию предоставленная таким образом сводка касается только серверной стороны, но с помощью JavaScript разработчики могут дополнить ее и любой отладочной информацией для клиентского кода.

SharePoint 2010 развязывая руки разработчикам
SharePoint Designer 2010 полностью избавился от наследия FrontPage и теперь максимальным образом сфокусирован на возможностях платформы

Разумеется, Developer Dashboard не призвана заменить полноценные отладчик и профилировщик, однако использование этого компонента достаточно просто, к тому же он доступен с любого компьютера, не требуется даже установка каких-либо дополнительных инструментов. Помимо прочего, к услугам приборной панели будут прибегать не только разработчики, но и администраторы, следящие за работой сервера. Неудивительно, что бета-тестеры SharePoint 2010 восприняли Developer Dashboard с большим энтузиазмом и уже приступили к созданию различных расширений. Например, целью проекта с открытыми исходными кодами devdashvis.codeplex.com является графическое представление информации, что будет серьезным шагом по сравнению с нынешним табличным.

Технологии

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

LINQ for SharePoint

Технология строго типизированного доступа к данным в декларативном стиле LINQ (ko.com.ua/36977), впервые увидевшая свет в составе Visual Studio 2008, оказалась одной из наиболее заметных инноваций в программировании за последние годы. Неудивительно, что Microsoft решила осчастливить ею и SharePoint-разработчиков, сущей головной болью которых до 2010-й версии была работа со слаботипизированными данными, каковыми является практически все содержимое, генерируемое пользователями. В частности, достаточно серьезная проблема в создании решений, оперирующих с пользовательскими данными, состоит в применении имен списков и полей, которые впоследствии могут быть изменены, что приведет к некорректному поведению ссылающегося на них кода. К тому же выявлена эта проблема будет только во время исполнения, поскольку ссылки на названия полей списков не проверяются в процессе компиляции. С появлением LINQ for SharePoint, предоставляющего возможность отобразить модель данных SharePoint на строго типизированные сущности в виде классов и их свойств, локализация проблем, возникающих вследствие изменения пользователем структуры данных, должна существенно упроститься. И это не считая того, что сам по себе LINQ значительно облегчает манипулирование данными и повышает читабельность кода.

SharePoint 2010 развязывая руки разработчикам
Developer Dashboard отображает максимум информации, необходимой в процессе отладки решения

На практике за генерацию классов, обеспечивающих доступ к данным SharePoint, отвечает консольная утилита SPMetal, входящая в SharePoint Foundation 2010. Вызвать ее можно прямо в Server Explorer из контекстного меню интересующего объекта SharePoint (правда, для обеспечения этой возможности необходимо дополнительно установить расширение Imtech Get SPMetal Definition Extension из Visual Studio Gallery на сайте MSDN.com). При этом SPMetal создаст соответствующие объектам на сервере классы, использовать которые, кстати, можно не только в LINQ-запросах.

Впрочем, несмотря на очевидные достоинства, у LINQ for SharePoint есть некоторые ограничения и подводные камни, на что следует обратить внимание. В первую очередь это касается совместимости типов данных .NET Framework и SharePoint – для ряда из них нет прямого соответствия, что ограничивает их использование в запросах. Далее, следует знать, что в текущей реализации LINQ for SharePoint запросы сначала переводятся на язык CAML и лишь затем исполняются сервером. Из-за этого разработчики из Microsoft сознательно ограничили возможности LINQ for SharePoint только той функциональностью, которую может обеспечить CAML. С одной стороны, это позволило избежать вероятных перегрузок сервера вследствие выполнения таких ресурсоемких операций, как, например, объединение, в оперативной памяти, но с другой – ограничивает сферу применения технологии.

Клиентская объектная модель

Когда перед разработчиком, использующим прежние версии SharePoint, вставала задача реализации приложения, программная логика которого исполняется на клиентском компьютере, ему требовалось обеспечить доступ ко всем необходимым данным и объектам сервера посредством веб-сервисов. В то время как для достаточно простых решений подобный подход вполне приемлем, разработку комплексных он существенно усложнял. К счастью, начиная с SharePoint 2010 у разработчиков появляется гораздо более удобный инструмент – клиентская объектная модель (Client Object Model), представляющая собой программный интерфейс к централизованно хранящимся данным и объектам SharePoint, доступный из кода на клиентском компьютере и перенимающий на себя обязанности взаимодействия с сервером. На практике это означает, что в приложении, реализованном на основе клиентских технологий (JavaScript, WPF, Windows Forms, Silverlight), достаточно сослаться на библиотеку клиентской объектной модели и написать код подключения к серверу, после чего обеспечивается доступ практически ко всем серверным возможностям, без необходимости создания веб-сервисов.

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

Поддержка Silverlight

Microsoft весьма активно продвигает Silverlight (ko.com.ua/46997), и было бы удивительно, если бы эта технология не появилась в SharePoint. Впрочем, основная заслуга в том, что интегрировать Silverlight в проекты для SharePoint 2010 стало намного проще, на самом деле принадлежит рассмотренной выше Client Object Model – отпала потребность генерировать объекты доступа на серверной стороне и объявлять их в виде веб-сервисов, в Silverlight-проекте достаточно лишь подключить API, реализующий клиентскую объектную модель.

Учитывая, что написание кода для Silverlight с использованием .NET-языков на порядок приятнее, чем решение тех же задач с помощью JavaScript с последующей отладкой под различными браузерами, а переносимость этого кода куда выше, чем проектов с применением WPF и Windows Forms, вполне предсказуемо ожидать значительный рост популярности проектов, в которых серверная часть на основе SharePoint 2010 сочетается с богатым пользовательским интерфейсом клиентской именно на Silverlight.

Поддержка REST API

Протокол REST (REpresentational State Transfer) нынче особо популярен для формирования синдицированного контента на основе RSS и ATOM. В SharePoint 2010 появилась возможность выводить содержимое списков через REST, формируя таким образом стандартные новостные ленты, доступные для чтения в любом подходящем внешнем приложении, будь то Google Reader или Microsoft Outlook. Помимо прочего, запрашивать и использовать данные в XML-формате через REST могут и программы, которым эти данные необходимы для последующей обработки, – в силу своей простоты REST для подобных целей подходит гораздо лучше, чем, к примеру, SOAP. К тому же при создании REST-запросов SharePoint 2010 позволяет формировать результат, включающий данные из нескольких списков, а также отфильтровывать информацию, избегая излишней нагрузки на каналы передачи.

Улучшенные рабочие процессы

На самом деле изменился сам механизм реализации и исполнения рабочих процессов в SharePoint Foundation 2010. Расширен набор возможных действий, из которых строится рабочий процесс, и стандартных событий, на которые он реагирует. Дополнительно появилась возможность создавать произвольные события, в том числе и за счет механизма Pluggable Workflow Services, чтобы реагировать на происходящее вовне системы.

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

Также рабочие процессы теперь можно ассоциировать с новыми сущностями SharePoint 2010 под названием Document Sets, которые аналогичны папкам и могут содержать несколько документов, объединенных по определенному признаку. За счет этого теперь, к примеру, можно создать рабочий процесс, отвечающий за согласование и утверждение всего комплекта документации как единого целого.

Следует упомянуть, что в SharePoint 2010 рабочие процессы могут исполняться с привилегиями, отличными от тех, которыми обладает инициатор, – это позволяет, к примеру, в завершение операции утверждения скопировать документ в хранилище, даже если у самого создавшего его сотрудника нет такого права.

Business Connectivity Services

SharePoint 2010 развязывая руки разработчикам
При построении клиентских приложений для SharePoint 2010 новый подход с использованием клиентской объектной модели (справа) заметно проще прежнего, основанного на веб-сервисах (слева)

В то время как рабочие процессы могут оперировать контентом SharePoint, Business Connectivity Services (BCS) расширяют границы, к которым сервер может «дотянуться» за данными. С их помощью разработчики смогут более тесно интегрировать SharePoint-решения в информационную инфраструктуру предприятия. Хотя Microsoft изначально уделяла особое внимание взаимодействию SharePoint с настольными приложениями Microsoft Office, на практике SharePoint 2010 становится гораздо более прозрачным для любых информационных потоков, поскольку BCS обеспечивает двусторонний обмен данными. Встроенный механизм кэширования на основе SQL Server CE делает привлекательным сценарий использования BCS для обеспечения работы удаленных и мобильных сотрудников с нестабильными каналами связи. А широкий выбор всевозможных механизмов подключения, к тому же расширяемый, позволяет предположить, что BCS войдет в число наиболее востребованных функций у разработчиков.

Развертывание

Развертывание и управление жизненным циклом сложного решения является не менее ответственной задачей, чем его создание. И хотя обычно головная боль за этот участок работы достается администраторам, определенные действия, осуществленные на этапах разработки, могут в значительной мере облегчить их задачу. В SharePoint 2010 появилось несколько весьма многообещающих усовершенствований в этом направлении.

Управление жизненным циклом

В сложных проектах это действительно важная задача, но особенно актуальна она для тех систем, которые подвергаются совершенствованию прямо в процессе эксплуатации, что весьма типично для любых корпоративных решений, и SharePoint – не исключение. Всерьез этим вопросом Microsoft озадачилась еще в SharePoint 2007, предоставив набор инструментов и подходов для упрощения управления жизненным циклом на основе Visual Studio Team System 2008. В SharePoint 2010 произошло дальнейшее совершенствование этих механизмов, уже на основе VS 2010. По сравнению с прежней версией теперь должно значительно сократиться количество операций, исполняемых вручную, к примеру, Team Foundation Server 2010 будет иметь возможность осуществить все операции по сборке проекта вплоть до генерации WSP-файла, а поддержка автоматизированного тестирования в виртуальной среде обещает значительно снизить трудоемкость выполнения полномасштабных проверок функционирования решения.

Использование песочницы

Один из существенных недостатков прежних версий SharePoint состоял в потенциальной угрозе, которую несет код, исполняемый в общей памяти на сервере. В частности, речь может идти даже о целенаправленной атаке на данные сервера, исходящей, к примеру, от веб-частей, загруженных из Интернета, хотя более типичны перебои в работе сервера, вызванные некачественно написанным кодом собственными сотрудниками компании. В SharePoint 2010 появился мощный механизм, способный если не полностью исключить подобные неприятности, то хотя бы значительно уменьшить вероятность их возникновения. Это так называемая песочница (Sandbox), изолирующая код, исполняемый в ее рамках, и тем самым защищающая сервер. Теперь при создании кода в Visual Studio можно выбрать режим, при котором он будет исполняться в песочнице и не требовать для своей установки прав администратора сайта. Разумеется, в таком режиме код имеет определенные ограничения: ему запрещено обращаться к файловой системе и вызывать веб-сервисы, ограничиваются доступ к объектной модели сервера, а также процессорные ресурсы, которые он может задействовать. Тем не менее для многих задач и этого хватит.

Заключение

Даже беглого взгляда на список основных новшеств, которые предоставит разработчикам очередная версия SharePoint, достаточно, чтобы констатировать существенный прогресс платформы. Программисты наконец-то получат полноценный арсенал инструментов и технологий для того, чтобы приступить к воплощению своих идей в готовые решения. Благодаря выпуску специальных редакций «for Internet Sites» также следует ожидать активного выхода SharePoint за рамки сугубо корпоративных проектов. И хотя рынок CMS выглядит достаточно насыщенным, SharePoint 2010 вполне может существенно изменить расстановку сил на нем. Конечно, простым и в своей массе открытым CMS, по большому счету, ничего не грозит, а вот у коммерческих тяжеловесов есть повод для беспокойства, поскольку конкурент обещает совершенно новый уровень возможностей.

Сайт автора – koldovsky.com