Visual Studio Tools for Office: экспансия в корпоративную среду

14 март, 2006 - 00:00Вячеслав Колдовский

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

Хотя Microsoft Office действительно стал де-факто стандартом среди инструментов для работы с документами, его успехи в сфере автоматизации бизнес-процессов (ввода и обработки информации) гораздо скромнее. Программисты предпочитают не связываться с ограничениями Visual Basic for Applications (VBA) и готовы пожертвовать привычным для пользователей интерфейсом и широкими возможностями пакета в угоду простоте построения и большей управляемости конечных решений, к тому же нередко политика безопасности подразумевает полное отключение средств VBA. Альтернативный подход с применением COM также не заслужил особого признания по причине своей сложности, слабой документированности интерфейсов и значительных проблем при отладке готовых продуктов. В лучшем случае приложения Microsoft Office кое-как взаимодействовали с корпоративными системами, но отнюдь не становились центральным звеном.

Выпуск Visual Studio Tools for Office (VSTO) был призван изменить сложившуюся ситуацию, и именно этому пакету посвящена данная статья. Конечно, Microsoft не собирается отказываться от идеи скриптовых языков, одинаково удобных как для начинающих программистов, так и для опытных пользователей, не испытывающих потребности в полноценной среде разработки, каковой является VSTO. Более того, для этих категорий Microsoft планирует выпустить Visual Studio Tools for Applications (VSTA), где наряду с Visual Basic будет поддерживаться C#, а также обеспечиваться доступ ко всем возможностям платформы .NET. Однако в качестве основного инструмента для создания приложений на базе Microsoft Office, особенно когда речь идет о серьезных корпоративных решениях, позиционируется именно VSTO.

Долгий путь от VBA к VSTO

Чтобы по достоинству оценить VSTO, нужно вспомнить, как развивались программные технологии в Microsoft Office. Можно считать, что все началось в 1991 г., когда Microsoft Word 2.0 получил улучшенные инструменты для создания макрокоманд. С того времени было испробовано множество подходов к расширению возможностей офисного пакета: дополнения (add-ins) в виде специальных библиотек (например, .wll и .xla), интерпретируемый VBA, технология COM и даже различные способы построения приложений на платформе .NET Framework, применявшиеся до выхода VSTO.

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

Visual Studio Tools for Office экспансия в корпоративную среду
Создание панелей задач для Microsoft Office ничем не отличается от разработки интерфейса с помощью WinForms

И оно нашлось. Не мудрствуя лукаво, Microsoft обеспечила программирование для Microsoft Office на базе современной универсальной платформы .NET Framework, а комплект соответствующих инструментов был выпущен на рынок под именем Visual Studio Tools for Office (VSTO) – в качестве одного из опциональных компонентов Visual Studio 2003.

Хотя первая версия VSTO вполне справилась со своей основной задачей, она все же не вызвала заметного ажиотажа. Во многом это можно объяснить относительной новизной (на то время) предложенной платформы и консерватизмом разработчиков. Кроме того, пакет нельзя назвать легким в использовании: он требовал достаточно серьезных усилий по освоению новой парадигмы программирования, прилагать которые были готовы далеко не все – в отличие от подкупающего своей простотой VBA, философия VSTO предусматривала гораздо более высокий уровень квалификации.

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

VSTO 2005: проще, нагляднее, лучше

Одновременно с Visual Studio 2005 появилась вторая существенно обновленная редакция VSTO, получившая название VSTO 2005. В целом следует отметить, что основные усовершенствования были направлены на повышение наглядности процесса программирования, что сделало его проще и доступнее даже для начинающих программистов.

Архитектурно VSTO 2005 представляет собой полноценную интегрированную среду разработки, основывающуюся на .NET Framework 2.0 (VSTO 2003 поддерживала .NET Framework 1.1). Для исполнения управляемого кода в рамках приложений Microsoft Office (даже Office 12 реализован Win32-кодом) применяются интерфейсы Primary Interop Assemblies (PIAs).

Существует два типа VSTO-решений – уровня документов и уровня приложений. Первые разрабатываются и распространяются вместе с документами или шаблонами – в VSTO 2005 они доступны для Word и Excel, вторые представляют собой расширения (add-ins) функциональности и могут быть созданы только для Outlook. В любом случае поддерживаются только Microsoft Office 2003 и последующие версии, но не предыдущие.

Visual Studio Tools for Office экспансия в корпоративную среду
Решения для офисных приложений в VSTO 2005 создаются в полностью визуальном режиме – Word или Excel загружаются непосредственно в среду разработки Visual Studio

VSTO позволяет использовать компоненты WinForms, причем они могут размещаться как непосредственно в рабочей области документа, так и на панелях задач. Кроме того, программистам доступны уникальные элементы управления, являющиеся .NET-расширениями «родных» объектов Excel и Word (к примеру, для Excel это NamedRange, а для Word – Bookmark). И те и другие (как и в обычных .NET-приложениях) могут быть созданы и отображены статически в процессе разработки либо динамически при исполнении готового решения.

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

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

Весьма важным нововведением VSTO 2005 является возможность генерирования и манипулирования содержимым офисных документов на сервере без необходимости предварительной установки пакета Microsoft Office (избегать чего настоятельно рекомендует сама Microsoft). Раньше для обеспечения максимальной безопасности разработчикам приходилось обращаться к сторонним компонентам либо промежуточным форматам. Появившаяся в Microsoft Office 2003 поддержка XML стала существенным шагом вперед, однако из-за отсутствия обратной совместимости и ряда других проблем она также не нашла широкого применения. Теперь же компоненты VSTO манипулируют документами, используя такой же базовый программный код, что и соответствующие офисные приложения.

В целом нужно сказать, что VSTO предоставляет практически тот же комплект универсальных инструментов, который доступен и разработчику обычных .NET-приложений (в Visual Studio) – к ним относится и обеспечение доступа к различным источникам данных, и отладка, и многое другое.

Распространение приложений в VSTO 2005

К сожалению, рассмотренные достоинства VSTO в определенной мере омрачаются одним досадным недостатком – сложностью развертывания готовых решений. Нынешний релиз VSTO требует от разработчика значительных усилий по обеспечению правильного распространения программ на клиентские машины. Впрочем, в немалой степени это вызвано довольно строгой моделью безопасности, изначально призванной исключить проблемы с вирусами и другим вредоносным кодом, свойственные, скажем, VBA.

Для того чтобы корректно установить VSTO-решение на клиентскую машину, необходимо, во-первых, обеспечить наличие пререквизитов (.NET Framework соответствующей версии, среды исполнения VSTO Runtime, поддержки интерфейсов PIAs и требуемых обновлений для Microsoft Office); во-вторых, предоставить права на выполнение кода в сборке посредством модификации политик безопасности .NET и – если нужно – самих документов (этот процесс может быть довольно противоречивым, поэтому не лишним будет свериться с результирующими политиками); в-третьих, проконтролировать, чтобы путь к сборке, заданный во внедренном в документ манифесте приложения, соответствовал ее реальному размещению (разночтения могут возникнуть, например, когда пользователь пытается сохранить локально документ, открытый из сетевой папки).

Visual Studio Tools for Office экспансия в корпоративную среду
Хотя на текущий момент нет доступной для тестирования версии VSTO для Office 12, с некоторыми ограничениями вполне можно применять и VSTO 2005

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

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

VSTO 3: еще больше офиса и .NET

Вполне предсказуемо, что третья версия VSTO, ориентированная уже на Office 12, продолжит курс на упрощение создания приложений и всемерное использование возможностей популярного офисного пакета в бизнес-среде. К сожалению, на текущий момент Microsoft не распространяет тестовых версий VSTO 3, хотя ранний альфа-релиз был продемонстрирован еще на конференции PDC 2005 в сентябре прошлого года. Однако это вовсе не означает, что в настоящее время разработчики не могут создавать приложения для Office 12 – с этой задачей справляется и VSTO 2005, хотя и не позволяет использовать все нововведения. Необходимость обеспечения обратной совместимости была одним из главных ориентиров при разработке очередной версии Microsoft Office – такой подход защищает инвестиции и прибавляет уверенности программистам, избравшим данную технологию.

Тем не менее наиболее принципиальные моменты VSTO 3 известны уже сегодня.

Так, будет обеспечена возможность создания расширений (add-ins) для всех приложений офисного пакета (а не только Outlook, как это было в VSTO 2005). Панели задач станут поддерживаться на уровне не только отдельных документов, но и самого приложения, что, безусловно, позволит реализовать более универсальные решения. Полностью будут задействованы все специфические функции Office 12, среди которых особенно важны XML-формат и новый пользовательский интерфейс.

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

Visual Studio Tools for Office экспансия в корпоративную среду
Использование смарт-тегов в VSTO позволяет создавать контекстно зависимые команды

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

Вообще VSTO 3 будет поддерживать серверные технологии в той же мере, как и сам Office 12. Тем более что и SharePoint Services, и Groove изначально ориентированы на программное расширение функциональности за счет, скажем, новых workflow-моделей, поддерживаемых технологией WWF.

Задачи, решаемые с помощью VSTO

Используя VSTO, можно строить различные решения, начиная с дополнений для приложений Microsoft Office, спектр которых по мере роста популярности XML-форматов наверняка расширится. Но, пожалуй, самая логичная и привлекательная сфера его применения – корпоративная среда с большим количеством задач по вводу и обработке информации.

Как правило, сотрудники современных компаний применяют в своей практике целый ряд приложений, слабо интегрированных между собой. Очень часто в этом наборе пакет Microsoft Office играет весьма заметную роль, но его использование обычно ограничивается стандартными операциями по вводу первичной информации и подготовке отчетности. Учет специфики бизнес-процессов и взаимодействие с корпоративными системами реализуется главным образом либо заказным ПО, либо посредством Web-интерфейса, что в любом случае подразумевает дополнительные операции.

Теперь, благодаря VSTO, ничто не мешает разработчикам обеспечить интерфейс к корпоративным системам непосредственно в привычных офисных приложениях, что в конечном итоге позволит повысить производительность труда пользователей. Следует отметить, что такие решения сулят значительные преимущества перед популярными в настоящее время «тонкими» клиентами, основанными на применении браузеров, поскольку предлагают более удобный интерфейс и значительное число вспомогательных инструментов. В определенном смысле данный подход объединяет в себе достоинства как «тонких», так и «толстых» клиентов и прекрасно укладывается в современную концепцию «умных» клиентов (smart clients), продвигаемую Microsoft.

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

Заключение

Безусловно, с позиций разработчика инициатива Microsoft по продвижению .NET Framework в качестве основного инструмента при создании приложений для различных программных платформ, будь то операционная система, СУБД или офисный пакет, заслуживает одобрения. Ведь кроме возможностей использовать богатую библиотеку базовых компонентов и выбирать наиболее удобный язык программирования, он получает в свое распоряжение фактически универсальные концепции и инструменты, пригодные для решения любых задач.

Еще одно заметное преимущество – легкость интеграции сторонних разработок с продуктами самой Microsoft, что особенно хорошо заметно на примере Microsoft Office. На наш взгляд, именно VSTO (вместе с некоторыми новациями Office 12) позволит офисному пакету окончательно завоевать признание в корпоративном секторе, где очень важно уменьшить количество клиентских приложений и сократить время, затрачиваемое на обучение персонала.