Visual Studio LightSwitch

Создание бизнес-приложений в Visual Studio LightSwitch

Роберт Грин

Продукты и технологии:

Visual Studio LightSwitch, Silverlight, Microsoft Azure, Model-View-ViewModel, Microsoft .NET Framework

В статье рассматриваются:

  • определение данных с помощью сущностей
  • написание собственных правил проверки
  • создание и использование запросов
  • управление операциями, доступными пользователю
  • три модели развертывания в LightSwitch

Исходный код можно скачать по ссылке

Послушайте историю о двух перегруженных работниках. Антонио — старший разработчик в ИТ-отделе крупного банка с сотнями филиалов. Делия — менеджер одного из этих филиалов. Она хочет эффективнее отслеживать имеющиеся активы вычислительной и оргтехники. У кого какой компьютер и насколько давно? Когда был куплен каждый принтер и факс-аппарат и когда их в последний раз обслуживали? Сколько филиал ежемесячно тратит на периферию и расходные материалы?

Делия пишет Антонио по электронной почте и просит создать приложение для отслеживания активов. Антонио соглашается, что это необходимо и могло бы сэкономить банку значительные средства, но он уже полностью загружен другими проектами — у него нет времени на то, чтобы помочь Делии. Тогда Делия сообщает, что в таком случае она намерена сама создать нужное приложение в Excel или другом офисном приложении, и это беспокоит его, потому что она почти наверняка создаст одноуровневое, «замкнутое на себя» приложение, не способное к масштабированию. Но что он может поделать?

Проходит полгода. Делия ходит в героях. Она создала свое приложение и сумела снизить затраты филиала на компьютерную технику на 25%, в то же время повысив производительность труда благодаря более эффективному использованию ресурсов. Менеджмент банка решает, что все филиалы должны внедрить эту систему и что данные следует централизовать. Антонио сообщают, что это нужно сделать к концу месяца, и теперь ему предстоит кошмар с переделкой этого приложения в нечто напоминающее то, что создал бы он сам, будь у него хоть немного времени. Удачи тебе, Антонио!

Введение в Visual Studio LightSwitch

Visual Studio LightSwitch предназначен как раз для таких слишком часто встречающихся ситуаций. LightSwitch — новый продукт в семействе Visual Studio для разработчиков с любой квалификацией, желающих быстро создавать ориентированные на данные бизнес-приложения для настольных систем, Интернета и облака. LightSwitch упрощает процесс разработки, так как берет на себя большую часть всей работы. Вам не нужно писать код для взаимодействия с базами данных и не требуется вручную размечать экраны. Вы можете сосредоточиться на бизнес-логике.

Приложения LightSwitch опираются на Silverlight. Они используют проверенные временем шаблоны многоуровневой архитектуры на основе Model-View-ViewModel (MVVM), а также привычные технологии Microsoft .NET Framework, например Entity Framework и WCF RIA Services. Приложения LightSwitch можно развертывать как настольные или как работающие в браузере. Настольные приложения могут использовать локальные аппаратные ресурсы и работать с такими приложениями, как Microsoft Word и Excel. И настольные, и браузерные приложения LightSwitch можно размещать в IIS и Microsoft Azure.

Основная аудитория LightSwitch — разработчики для конечных пользователей, такие как Делия. Они могут быть информационными работниками, ИТ-специалистами, бизнес-аналитиками и прочими, кому по роду своей деятельности приходится в какой-то мере заниматься разработкой. Они не являются профессиональными разработчиками и хотят плавного выезда на главную дорогу разработки, встроенной инфраструктуры, самостоятельно обрабатывающей общие требования к приложениям, и простых, но гибких способов развертывания. Короче, им нужно быстро создавать ориентированные на данные приложения с хорошо проработанной архитектурой, которые можно легко развертывать и масштабировать.

Многие разработчики, использующие сейчас Visual Studio, найдут LightSwitch полезным пополнением в своем инструментарии. LightSwitch устанавливается поверх Visual Studio 2010 Professional (или выше). Разработчики в Visual Studio могут создавать приложения LightSwitch с нуля или открывать существующие приложения LightSwitch в Visual Studio и расширять их. Если бы Делия использовала LightSwitch для создания своего приложения, то Антонио мог бы открыть его и улучшить. Либо создать то же приложение в LightSwitch за гораздо меньшее время, чем создавая его с нуля.

В этой статье я рассмотрю приложение LightSwitch, используемое строительной компанией — дочерним подразделением вездесущей корпорации Contoso. Компании нужно управлять заказчиками и их проектами. Вы можете скачать обсуждаемое здесь приложение-пример по ссылке code.msdn.microsoft.com/Contoso-Construction-9f944948.

Сущности

Первый шаг в создании приложения LightSwitch — после того как вы выберете язык кодирования (Visual Basic или Visual C#), — определение данных. Вы можете создать новые таблицы или подключиться к внешним источникам данных. Если вы создаете таблицы с нуля, они добавляются в базу данных приложения, которая является базой данных SQL Server Express. Заметьте: когда придет пора развертывать приложение, вы сможете выбрать любую редакцию SQL Server для хостинга данных. Чтобы работать с внешними данными, можно подключиться к внешней базе данных, например SQL Server, SQL Azure или к любой другой, для которой у вас есть провайдер в Entity Framework. Также можно подключиться к спискам SharePoint или к WCF RIA Services.

В приложении-примере содержится сущность (таблица) Customer, как показано на рис. 1.

Сущность Customer
(click to zoom)

Рис. 1. Сущность Customer

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

Вместо того чтобы оставлять у определенных свойств строковый или их исходный тип, можно использовать встроенные типы данных, также называемые собственными бизнес-типами. Свойства Phone и Fax в сущности Customer используют тип данных Phone Number, а свойство Email — тип данных Email Address. Встроенные типы данных обеспечивают проверки и генерируют ошибки в период выполнения в дружественном к пользователю виде. Благодаря этому вам нет нужды писать код для проверки допустимости номера телефона или адреса электронной почты. Кроме того, тип данных Phone Number включает встроенные параметры форматирования, как показано на рис. 2.

Встроенный тип данных Phone Number обеспечивает проверку и форматирование

Рис. 2. Встроенный тип данных Phone Number обеспечивает проверку и форматирование

Также есть типы данных Date, Image и Money, предлагаемые со встроенными редакторами, форматированием и проверкой.

После добавления свойств к сущности вы должны подготовить содержимое для его свойства Summary, описывающего эту сущность. Оно также становится гиперссылкой на экранах поиска.

На этом экране информация обо всех клиентах показывается в сетке. Заметьте, что в столбце Full Name содержатся гиперссылки. Когда пользователь щелкает полное имя, LightSwitch отображает экран подробных сведений для этого клиента. Разработчику в LightSwitch не нужно писать код для такой обработки. На рис. 3 показан экран Search Customers.

Свойство Summary сущности является гиперссылкой на экранах поиска

Рис. 3. Свойство Summary сущности является гиперссылкой на экранах поиска

По умолчанию LightSwitch использует первое строковое свойство в качестве Summary. Если строк нет, будет задействовано первое не строковое свойство. В приложении-примере клиентами являются люди, и первая строка в сущности Customer — LastName. Вместо того чтобы использовать его в качестве Summary, в сущности Customer есть свойство FullName. Это свойство является вычисляемым (computed). Чтобы сделать какое-либо свойство вычисляемым, вы проверяете Is Computed в окне Properties или щелкаете кнопку в верхней части дизайнера, выбираете Edit Method, а затем пишете следующий код для вычисления значения свойства (я буду использовать Visual Basic):

Private Sub FullName_Compute(ByRef result As String)
  result = Me.LastName + ", " + Me.FirstName
End Sub

Чтобы сделать FullName свойством Summary, просто выберите сущность Customer и приравняйте Summary свойству FullName.

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

Чтобы создать отношение между сущностями, щелкните кнопку Relationship в Data Designer. В диалоговом окне Add New Relationship выберите две сущности, тип отношения и поведение при удалении (delete behavior). Сущность Customer имеет отношения «один ко многим», определенные с сущностями Project и Appointment. Следовательно, у Customer есть свойства Projects и Appointments. Эти два свойства являются наборами.

Вы можете создавать отношения между сущностями не только в одном источнике данных, но и в нескольких источниках. LightSwitch будет обрабатывать извлечение всех данных, представляя их пользователям и сохраняя изменения. Возможность создания федеративных отношений — уникальная и просто потрясающая функция LightSwitch.

Собственные правила проверки

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

Вы можете создавать отношения между сущностями не только в одном источнике данных, но и в нескольких источниках.

Чтобы написать код проверки для свойства сущности, можно выбрать свойство в Entity Designer, а затем указать соответствующий метод из списка, открываемого нажатием кнопки Write Code, например Address1_Validate (рис. 4).

Рис. 4. Метод Address1_Validate

Private Sub Address1_Validate(results
  As EntityValidationResultsBuilder)
  ' Предупреждаем пользователя, если поле Address пустое
  If Me.Address1 = "" Then
    results.AddPropertyResult(
      "Address should not be empty. " &
      "Construction project cannot begin unless " &
      "an address is supplied.", ValidationSeverity.Warning)
  End If
End Sub

EntityValidationResultsBuilder — контейнер результатов проверки. Он может содержать информацию проверки, предупреждения и ошибки. Информация проверки и предупреждения предоставляются пользователю, но не блокируют возможность сохранения данных. Однако, если в этом наборе содержится хотя бы одна ошибка проверки, пользователь не сможет сохранить данные.

В приложении-примере пользователь получает предупреждение, если адрес пуст. Пользователь все равно может сохранить эти данные. Но код проверки почтового индекса (рис. 5) не столь снисходителен.

Рис. 5. Метод ZIP_Validate

Private Sub ZIP_Validate(results
  As EntityValidationResultsBuilder)
  If Me.ZIP <> "" Then
    ' Вводим тире, если оно не введено
    ' и строка содержит только девять цифр
    If Me.ZIP.Length = 9 Then
      Me.ZIP = Me.ZIP.Substring(0, 5) + "-" +
        Me.ZIP.Substring(5)
    End If
    ' Проверяем допустимость индекса (формат 5 или 5+4)
    If Not System.Text.RegularExpressions.Regex.IsMatch(
      Me.ZIP, "^\d{5}$|^\d{5}-\d{4}$") Then
      results.AddPropertyError(
        "Please enter a valid US ZIP code. (ex.
        98052 or 98052-1234)")
    End If
  End If
End Sub

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

Пустой адрес приводит к генерации предупреждения, а недопустимый почтовый индекс вызывает ошибку

Рис. 6. Пустой адрес приводит к генерации предупреждения, а недопустимый почтовый индекс вызывает ошибку

Экраны

После определения сущностей следующий шаг в создании приложения LightSwitch — проектирование экранов. LightSwitch включает несколько предопределенных шаблонов экранов.

  • Details Отображает одну сущность и может содержать связанные данные в сетке.
  • Editable Grid Позволяет редактировать один или более элементов в сетке.
  • List and Details Отображает набор элементов в списке. Выбор какого-либо элемента в списке приводит к отображению детальных сведений об этом элементе.
  • New Data Экран для создания нового элемента данных. В него можно также включать сетку для одновременного добавления связанных данных.
  • Search Data Отображает данные, возвращаемые запросом. Каждый элемент включает ссылку для показа экрана Details сущности.

Эти шаблоны являются хорошей отправной точкой для вашей разметки экрана. Чтобы создать экран, вы можете щелкнуть правой кнопкой мыши свое решение или узел Screens в Solution Explorer и выбрать Add Screen. Кроме того, можно щелкнуть кнопку Screen вData Designer. Создавая экран, вы выбираете тип экрана и начальные данные. Можно выбрать какую-либо сущность или запрос, основанный на сущности. Также можно указать связанные данные, которые вы хотите выводить на экране.

Если вы откроете экран Silverlight в Visual Studio, то увидите проектировочный холст и XAML. А когда вы открываете экран в LightSwitch, появляется Screen Designer (рис. 7).

Screen Designer показывает иерархическое представление элементов управления в экране

Рис. 7. Screen Designer показывает иерархическое представление элементов управления в экране

Слева размещен список членов экрана. Он содержит элементы, доступные на экране. К ним относятся элементы данных в каждой сущности, включенной в экран. Также содержатся методы, такие как Close, Refresh и Save. Справа показывается дерево контента экрана. Это иерархическое представление элементов управления в экране и данных, с которыми они связаны. Вы можете добавлять элементы данных по мере необходимости. Элементы управления на экране можно переупорядочивать, а также изменять разметку экрана, например сместить список клиентов вверх, а сведения о заказах вниз. Кроме того, при необходимости вы задаете различные свойства элементов управления, в том числе текст надписей (меток), выравнивание по горизонтали и по вертикали, высоту и ширину, должна ли появляться конкретная метка.

Создав хотя бы один экран, вы можете нажать F5 и запустить приложение. Первый созданный вами экран считается в приложении экраном по умолчанию. Его можно сменить на вкладке Navigation в Application Designer. Приложения LightSwitch автоматически включают оболочку, меню навигации, ленту, область вкладок для экранов и связывания с данными, как показано на рис. 8.

Приложения LightSwitch автоматически включают оболочку, меню и ленту

Рис. 8. Приложения LightSwitch автоматически включают оболочку, меню и ленту

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

Шаблоны экранов LightSwitch предоставляют специфическую функциональность.

Шаблоны экранов LightSwitch предоставляют специфическую функциональность. Например, экран поиска содержит сетку для отображения элементов и кнопку для экспорта этих элементов в Excel. При необходимости можно добавить дополнительные элементы. На экране SearchCustomers (рис. 8) присутствуют две дополнительные кнопки: Add Customer на ленте и Add в верхней части сетки.

Чтобы добавить кнопку на ленту, можно щелкнуть правой кнопкой мыши Screen Command Bar в Screen Designer и выбрать Add Button. Или раскрыть Screen Command Bar и выбрать New Button из раскрывающегося списка кнопки Add, как показано на рис. 9. Чтобы добавить кнопку в сетку, используйте Command Bar в сетке.

Screen Command Bar содержит кнопки на ленте приложения

Рис. 9. Screen Command Bar содержит кнопки на ленте приложения

Когда вы добавляете кнопку, LightSwitch предлагает ввести имя метода, который будет выполняться при щелчке этой кнопки. Вы можете щелкнуть этот элемент управления правой кнопкой мыши и выбрать Edit Execute Code, а затем написать нужный код. Обе кнопки Add на экране SearchCustomers вызывают метод gridAddAndEditNew_Execute, который в свою очередь вызывает метод ShowCreateNewCustomer. Это встроенный в LightSwitch метод, отображающий экран CreateNewCustomer:

Private Sub gridAddAndEditNew_Execute()
  Me.Application.ShowCreateNewCustomer()
End Sub

Как и сущности, экраны имеют ряд событий, которые вы можете обрабатывать (рис. 10).

Обработчики событий экрана, доступные через кнопку Write Code

Рис. 10. Обработчики событий экрана, доступные через кнопку Write Code

Событие Run происходит, когда выдается запрос на отображение экрана. Обработчик этого события включает аргумент handled. Если вы присвоите ему true, то можете блокировать дальнейшую работу экрана. Событие InitializeDataWorkspace генерируется перед самой выборкой данных экрана. Это хорошее место для кода, инициализирующего экран. Прочие события понятны просто по названиям. Возможно, вы подумали, будто события вроде Run или Saving — хорошие места для размещения кода, проверяющего, может ли пользователь выполнять операции наподобие открытия экрана или сохранения данных. Однако такой код следует помещать в соответствующие методы управления доступом (Access Control), например CanRun на уровне экрана или CanUpdate на уровне сущности. Управление доступом — отличная возможность в приложениях LightSwitch, о которой мы поговорим немного позже.

Разработка в LightSwitch задумана как в высшей степени итеративная. Программисты могут редактировать экраны в период выполнения в режиме отладке, щелкнув кнопку Design Screen на ленте. Это приводит к переключению экрана в режим Customization Mode, как показано на рис. 11.

Экраны можно редактировать в период выполнения и сразу же видеть результаты их изменения
(click to zoom)

Рис. 11. Экраны можно редактировать в период выполнения и сразу же видеть результаты их изменения

Пользователи могут переупорядочивать элементы управления и задавать их свойства, а после щелчка кнопки Save тут же видеть результаты своих изменений.

Зная, что приложения LightSwitch являются программами Silverlight, возможно, вас интересует, а где же XAML. Основная цель LightSwitch — резко упростить создание приложений, а потому она не предоставляет XAML на этапе разработки. Вместо этого LightSwitch генерирует XAML в период выполнения на основе дизайна экрана. Это кардинально облегчает пользователям построение приложений. Если вы опытный разработчик в Silverlight, то, вероятно, подумали, что это ограничивает ваши возможности в проектировании экранов.

Разработка в LightSwitch задумана как в высшей степени итеративная.

Это верно, если вы используете только Visual Studio LightSwitch, но при установке LightSwitch поверх Visual Studio 2010 Professional (или выше) вы получаете гораздо большую гибкость. Вы можете создавать свои пользовательские элементы управления Silverlight и добавлять их в экраны LightSwitch, использовать элементы управления, не включенные в LightSwitch, а также создавать составные элементы управления или даже целые экраны с собственной логикой и легко связывать эти пользовательские элементы управления с сущностями экрана.

Другой способ добавления функциональности в приложение LightSwitch — использование расширений. Существует шесть типов расширений LightSwitch: элементы управления, шаблоны экранов, бизнес-типы, оболочки (внешний вид приложения), темы (цвета и кисти для оболочки) и собственные источники данных. Для создания расширений LightSwitch вам потребуется Visual Studio 2010 редакции Professional (или выше) и Visual Studio 2010 SDK, но использовать их в проектах LightSwitch можно независимо от установленной редакции.

Расширения распространяются через пакеты VSIX. Если вы хотите сделать расширение широко доступным, загрузите его в Visual Studio Gallery. Тогда оно появится в Extension Manager в средеLightSwitch. После установки расширение нужно включить на вкладке Extensions в Application Designer. Приложение-пример Contoso Construction использует расширение элемента управления «карты Bing», чтобы отмечать адреса клиентов на карте, как показано на рис. 12.

Вы можете использовать расширения LightSwitch, например Bing Map Control Extension, чтобы предоставлять дополнительный функционал в своих приложениях

Рис. 12. Вы можете использовать расширения LightSwitch, например Bing Map Control Extension, чтобы предоставлять дополнительный функционал в своих приложениях

Запросы

Все экраны основаны на запросах. Запрос для экрана Details возвращает одну запись, запрос для экрана List and Details — одну родительскую запись и все связанные дочерние записи, а запрос для экрана Search или Editable Grid — по умолчанию все записи. Заметьте: запросы, возвращающие множество записей, вовсе не делают этого единовременно. Запросы поддерживают разбиение на страницы по умолчанию. Чтобы сконфигурировать разбиение на страницы, выберите запрос в дизайнере либо экрана, либо запроса и измените свойства, относящиеся к разбиению записей на страницы.

Вы можете фильтровать данные, если запрос экрана возвращает набор сущностей. Для этого щелкните Edit Query в Screen Designer и добавьте блоки Where и Sort. Кроме того, к запросам можно добавлять параметры.

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

Чтобы создать запрос, щелкните правой кнопкой мыши сущность в Solution Designer и выберите Add Query. Вы можете присвоить запросу имя, а затем добавить в него фильтрацию, сортировку и параметры. Запрос CurrentAppointments (рис. 13) возвращает все назначенные встречи, отсортированные по времени начала (от текущего и далее).

Вы можете фильтровать результаты запроса и указывать порядок сортировки

Рис. 13. Вы можете фильтровать результаты запроса и указывать порядок сортировки

LightSwitch использует стандартные провайдеры членства в группах и ролей ASP.NET для поддержки аутентификации как средствами Windows, так и на основе форм.

Создав запрос, вы можете использовать его как основу для экранов и дополнительных запросов. Например, в приложении-примере запрос CurrentAppointmentsByEmployee начинает с запроса CurrentAppointments, а затем фильтрует результаты, чтобы вернуть только информацию о встречах, назначенных для конкретного сотрудника.

Управление доступом

Управление доступом позволяет контролировать операции, разрешенные конкретным пользователям в приложении. LightSwitch использует стандартные провайдеры членства в группах и ролей ASP.NET для поддержки аутентификации как средствами Windows, так и на основе форм. Вы можете авторизовать пользователей на выполнение операций, создавая разрешения, назначая их пользователям, а потом проверяя в коде, есть ли у пользователя конкретное разрешение.

По умолчанию в приложениях LightSwitch все пользователи могут выполнять любые операции. Чтобы изменить это, откройте Application Designer и выберите вкладку Access Control, как показано на рис. 14. Потом выберите аутентификацию Windows или Forms. Встроенное разрешение SecurityAdministration управляет тем, сможет ли пользователь видеть экраны администрирования безопасности в период выполнения. Эти экраны применяются для назначения разрешений пользователей и при необходимости для добавления пользователей. При желании можно создавать дополнительные разрешения. В ходе разработки вы можете отключать разрешения, сбросив флажок Granted for debug. Это позволяет тестировать приложение с использованием различных комбинаций разрешений.

Укажите аутентификацию средствами Windows или на основе форм, а затем задайте дополнительные разрешения

Рис. 14. Укажите аутентификацию средствами Windows или на основе форм, а затем задайте дополнительные разрешения

Вы можете проверять разрешения в коде на уровнях сущности, экрана и запроса. Сущности предоставляют методы CanDelete, CanInsert, CanRead и CanUpdate — все они выполняются на сервере. Эти методы доступны в списке, открываемом щелчком кнопки Write Code в Data Designer. Вы можете выполнять проверку на наличие соответствующего разрешения и возвращать false, если данная операция пользователю не разрешена. Так, в приложении-примере изменять сведения о сотрудниках могут только администраторы:

Private Sub Employees_CanDelete(ByRef result As Boolean)
  result = Me.Application.User.HasPermission(
    Permissions.SecurityAdministration)
End Sub
Private Sub Employees_CanInsert(ByRef result As Boolean)
  result = Me.Application.User.HasPermission(
    Permissions.SecurityAdministration)
End Sub
Private Sub Employees_CanUpdate(ByRef result As Boolean)
  result = Me.Application.User.HasPermission(
    Permissions.SecurityAdministration)
End Sub

Экраны предоставляют метод CanRun, выполняемый на клиенте. С помощью этого метода вы можете блокировать открытие экрана, если данному пользователю не разрешено просматривать или изменять данные этого экрана. Следующий код гарантирует, что экран ManageEmployees смогут открывать лишь администраторы:

Private Sub ManageEmployees_CanRun(ByRef result As Boolean)
  result = Me.User.HasPermission(
    Permissions.SecurityAdministration)
End Sub

При разработке вы указываете имя пользователя и пароль для администратора. В период выполнения администратор создает роли и назначает их пользователям. Затем администратор выдает ролям разрешения.

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

В LightSwitch есть три модели развертывания: двухуровневое и трехуровневое настольные приложения, трехуровневое веб-приложение.

Двухуровневое настольное приложение выполняется полностью на компьютере конечного пользователя как приложение Silverlight вне браузера. UI и все компоненты промежуточного уровня приложения работают локально. Приложение подключается к базе данных напрямую в стиле типичной клиент-серверной архитектуры. Это избавляет от необходимости в наличии веб-сервера. Приложение имеет доступ к локальным ресурсам, в том числе к COM и локальным файлам. Поддержка COM обеспечивает возможность управления приложениями, такими как Word или Excel. Заметьте, что настольные приложения требуют работы в Windows.

Трехуровневое настольное приложение выполняется как приложение Silverlight вне браузера, но размещается в IIS или Microsoft Azure. UI выполняется на компьютере конечного пользователя, а компоненты промежуточного уровня — на сервере хоста.

Трехуровневое веб-приложение выполняется как приложение Silverlight для браузера и размещается в IIS или Microsoft Azure. UI основан на браузере, компоненты промежуточного уровня работают на сервере хоста. Веб-приложения не имеют доступа к COM или локальным ресурсам, зато могут работать во множестве браузеров в операционных системах Mac и Windows.

Чтобы развернуть приложение, сначала опубликуйте его. Для публикации щелкните кнопку Publish на вкладке Application Type в Application Designer, как показано на рис. 15.

Укажите, каким должно быть приложение — двухуровневым настольным, трехуровневым настольным или трехуровневым веб-приложением

Рис. 15. Укажите, каким должно быть приложение — двухуровневым настольным, трехуровневым настольным или трехуровневым веб-приложением

После этого мастер LightSwitch Publish Application Wizard проведет вас по всему процессу публикации.

Если вы публикуете приложение как двухуровневое настольное, то создаете ClickOnce-пакет. Кроме того, генерируется база данных SQL Server, содержащая любые созданные вами локальные таблицы, а также системные таблицы. При этом вы можете указать, где будет размещаться эта база данных. Если приложение используется одним человеком, вы можете разместить базу данных на его компьютере и задействовать SQL Server Express. Если приложение будет использоваться двумя лицами и более, то скорее всего вы предпочтете разместить базу данных на компьютере в сети, на котором выполняется SQL Server.

Если вы публикуете приложение как трехуровневое настольное или веб-приложение, размещаемое в IIS, то можете опубликовать его непосредственно в IIS при условии, что на этом сервере работает служба Microsoft Web Deployment Tool. В ином случае вы можете создать пакет MSDeploy и вручную импортировать его в IIS. Если вы публикуете приложение в Microsoft Azure, мастер запросит ваши идентификатор учетной записи, используемые вами учетные записи сервиса и хранилища, а также нужный вам SSL-сертификат. Подробнее о развертывании и публикации в Microsoft Azure см. раздел по развертыванию в LightSwitch Developer Center на сайте MSDN (bit.ly/jiYov5).

Самое простое средство

В заключение подчеркну, что основная аудитория LightSwitch — разработчики для конечных пользователей, т. е. авторы приложений для поддержки бизнес-функций. Это не профессиональные разработчики, а ИТ-специалисты, информационные работники и другие, кому по роду своей деятельности приходится в какой-то мере заниматься разработкой. Зачастую им нужно создавать приложения, которые управляют чем-либо, например активами вычислительной техники в отделе или парком легковых автомобилей. Им может понадобиться приложение для управления каким-либо мероприятием, скажем, ежеквартальным днем открытых дверей.

LightSwitch — самое простое средство создания приложений, работающих с данными, для настольных систем и облака.

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

LightSwitch — самое простое средство создания приложений, работающих с данными, для настольных систем и облака. Наши Делии всего мира могут создавать нужные им приложения, а затем передавать их таким Антонио для последующего расширения и развертывания. Подробнее о том, как разрабатывать приложения в LightSwitch, см. в LightSwitch Developer Center на сайте MSDN (msdn.com/lightswitch).


Роберт Грин (Robert Green) — технический идеолог в группе Microsoft Developer Platform and Evangelism. Это его второе пришествие в Microsoft. С 2005 по 2010 гг. он был старшим консультантом в MCW Technologies, где основное внимание уделял обучению разработчиков. Автор и соавтор ряда учебных курсов по Visual Studio и .NET для AppDev (appdev.com). До этого он занимался маркетингом Developer Tools в Microsoft, а затем отвечал за взаимодействие группы Visual Basic с сообществом разработчиков

Выражаю благодарность за рецензирование статьи эксперту Бет Масси (BethMassi).