Облако моего приложения: демистификация надстроек Microsoft Office

Если вы следили за этой серией, то знаете, что я создаю популярный программный продукт под названием eBook Toolkit. Это приложение работает как надстройка Microsoft Office, которая создает профессиональные электронные книги непосредственно из Microsoft Word. Я планирую преобразовать это приложение только для Windows в веб-службу. Одной из частей этого процесса является перевод моего приложения в новый формат Microsoft. Моя текущая надстройка использует технологию (или ). Переход от VSTO к веб-надстройкам требует совершенно нового мышления, поэтому в этой статье я собираюсь показать вам разницу между этими двумя очень разными приложениями.
Преамбула
Прежде чем я перейду к надстройкам Office, я подумал, что стоит избавиться от некоторой терминологии.
Если вы пишете приложения для Microsoft Windows, у вас есть три варианта (на самом деле их больше, но три, о которых я говорю, наиболее распространены):
- Приложения Windows Forms (Winforms) используют то, что я называю устаревшим пользовательским интерфейсом, который используют многие современные приложения, ориентированные на Windows. С помощью Winforms вы создаете пользовательский интерфейс с текстовыми полями, метками и кнопками. Вы кодируете приложение на своем любимом языке программирования, таком как C# или Visual Basic.
- Приложения Windows Presentation Framework (WPF) — это современный взгляд на Winforms. WPF использует современный, более веб-подход к разработке приложений, где вы используете технологию, которую Microsoft называет для создания внешнего кода. Приложение WPF значительно упрощает отделение бизнес-логики вашего кода от пользовательского интерфейса, привязку данных к вашему проекту и многое другое. Вся идея здесь состоит в том, чтобы разделить ваш код, чтобы он следовал шаблону Model-View-ViewModel (MVVM). Я не буду вдаваться в детали MVVM в этой статье, но достаточно сказать, что это значительно расширяет возможности разработчика программного обеспечения при написании современных приложений.
- Универсальная платформа Windows (UWP) — это взгляд Microsoft на то, как приложение может работать на различных устройствах Windows, таких как ноутбук, планшет, телефон, Hololens, Xbox или любых других устройствах, поддерживаемых Microsoft. Написание приложения UWP по своей природе похоже на написание приложения WPF, но с более строгими правилами макета приложения для пользователя.
Вы можете написать приложение для Windows, используя свой любимый текстовый редактор или очень популярную Microsoft Visual Studio. Visual Studio — это IDE (интегрированная среда разработки), которая поставляется с функциями, позволяющими вам выбрать тип проекта, который вы хотите создать. Как только вы выберете тип проекта, Visual Studio создаст для вас шаблон и структуру.
Представляем VSTO (инструменты Visual Studio для Office)
Точно так же, как вы можете использовать Visual Studio для создания шаблона Winforms, WPF или UWP, вы также можете выбрать надстройку VSTO. Надстройка VSTO — это приложение Windows, которое находится внутри Microsoft Office и имеет [почти] все те же возможности, что и любое приложение Winforms, которое вы можете создать.
На момент написания этой статьи мое приложение представляло собой приложение VSTO, работающее внутри Microsoft Word для Windows. Как видно из следующего изображения, я добавляю специальную вкладку со значком. Когда пользователь щелкает значок , запускается мое пользовательское приложение. Как видите, приложение по сути представляет собой решение, похожее на мастер, которое помогает пользователю выполнить процесс преобразования файлов Microsoft Word в форматы электронных книг.
Мое приложение взаимодействует не только с Microsoft Word, но и с самой Windows. Например, когда вы запускаете мое приложение, я создаю папку на вашем компьютере, а затем создаю в ней файлы ваших электронных книг. Этот доступ к Microsoft Word и операционной системе Windows великолепен, потому что пользователь может делать все на своем компьютере, даже не заходя на другой веб-сайт, чтобы получить файлы своих электронных книг.
К сожалению, вы не можете продавать приложение VSTO в Microsoft Store. Причина, по которой Microsoft ограничивает это, заключается в том, что они хотят, чтобы вы создали приложение, которое может работать в версии Microsoft Office.
Если я хочу, чтобы мое приложение работало в Word для Windows, Mac, iOS, Android и т. д., мой код C# не будет работать, поскольку это технология только для Windows. Apple не позволит Microsoft запускать приложения Windows на устройстве iOS, равно как и Google на своих телефонах Android.
Введите надстройки Office Web
Если вы хотите создать приложение Office, работающее в любой операционной системе, вам необходимо создать веб-надстройку Office.
Веб-надстройка существенно отличается от приложения VSTO. Если вы помните из предыдущего раздела этой статьи, я упомянул Winforms и WPF как наиболее популярные методы создания приложений Windows. С веб-надстройкой вы создаете пользовательский интерфейс, используя комбинацию HTML и JavaScript. Если вы не знакомы с JavaScript (которым не являюсь я), вам придется учиться. К счастью, существует множество отличных бесплатных веб-сайтов и видеороликов, которые помогут вам начать работу, а в Visual Studio есть приличное завершение кода.
Как вы можете видеть на изображении ниже, веб-надстройка ограничивает приложение панелью окна в правой части основного приложения. В моем случае ведущим приложением является Microsoft Word, и оно начинается с кнопки, позволяющей преобразовать открытый в данный момент документ в формат электронной книги.
Говоря о преобразовании файла в электронную книгу, как именно мне это сделать? Если у меня нет доступа к базовой файловой системе, как мне (а) преобразовать файл в формат электронной книги; и (b) сохранить файлы электронных книг для доступа пользователя?
Веб-сервисы в помощь
В моем конкретном приложении мне нужно взять структуру документа Microsoft Office, а затем преобразовать ее в различные форматы электронных книг. Выполнение этого преобразования не так просто, как вы думаете, потому что файлы электронных книг сильно отличаются от того, что создает Microsoft Word. Я, конечно, мог бы написать кучу JavaScript в своем приложении для выполнения преобразования, но я сомневаюсь, что размещение всей этой бизнес-логики в веб-интерфейсе — очень хорошая идея.
На момент написания этой статьи я планирую преобразовать бизнес-логику своего приложения в веб-сервисы. Эти веб-службы будут выполнять различные функции в размещенной среде, такой как Microsoft Azure. С моим кодом на Azure я могу написать функцию практически на любом языке, который пожелаю. Поскольку большая часть моей исходной бизнес-логики написана на C#, я надеюсь сэкономить несколько часов разработки, оставив ее на этом языке и перенеся в Azure.
В старом мире VSTO мой код принимал пользовательский ввод в Winform, а затем вызывал класс C#, который обрабатывает информацию. Как вы можете видеть на следующем изображении, мой новый код должен будет следовать другой модели. Когда пользователь попытается создать электронную книгу, приложение JavaScript должно будет вызвать веб-службу, расположенную где-то в облаке. Затем этот веб-сервис сообщит моему приложению, что он создает файлы электронной книги.
Поскольку у моего приложения не будет доступа к основной операционной системе, в которой оно работает, оно должно будет предоставить пользователю какой-то способ получить свои файлы электронных книг. Приложение может просто сохранить копию электронной книги в облаке в виде ссылки на Azure или отправить файл на любимый облачный диск человека. Как именно я доставляю эти файлы, для меня все еще вопрос, потому что я хочу дать пользователю простой опыт, так что это будет темой для другого дня.
Как вы, возможно, уже знаете, мое приложение будет не только веб-надстройкой, но и полноценным веб-сайтом. У моей надстройки VSTO все еще есть причина для того, чтобы быть такой, потому что она гораздо лучше справляется с расширенными задачами, которые веб-надстройки еще не поддерживают, поэтому часть всех этих усилий заключается в том, чтобы переосмыслить мою бизнес-логику и создать стандартный набор. сервисов, которые может использовать из моих приложений. Мой переход на веб-надстройку — это всего лишь один шаг на этом пути.
Если вы думаете о создании веб-надстройки, обязательно учтите следующее:
- Как вы будете размещать приложение.
- Если вашему приложению требуется доступ к внешним API, нужно ли их создавать? Если да, то какую платформу, язык и подход вы будете использовать для доступа к ним? В моем случае, я полагаю, это будут Функции Azure с использованием Rest и JSON (конечно, я все еще изучаю это, так что еще много мыслей).
- Если вашему приложению требуется доступ к базовой операционной системе, и этого просто нельзя избежать, вам следует рассмотреть возможность использования решения только для Windows с использованием VSTO.
- Вам нужно будет ознакомиться с объектной моделью вашего конкретного хост-приложения (используйте для этого сайт Microsoft MSDN) и быть готовым писать код на HTML и JavaScript.