Просмотров: 6495

Visual Studio LightSwitch 2011: Введение. Часть 2


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

Итак, LightSwitch жестко завязан на известную среди специалистов модель разработки MVC. Я считаю это большим плюсом, ибо, даже если полный новичок в разработке ваяет с помощью LightSwitch своё первое, пусть и несколько синтетическое приложение, система сконструирована таким образом, что сразу заставит его сделать всё правильно — отделяя логику от оформления и так далее. Чтобы быть понятным для неспециалистов (а именно для них в первую очередь и предназначена моя обзорная статья, равно как и обсуждаемый продукт, кстати, тоже), сначала дадим все необходимые определения и пояснения.

LightSwitch Microsoft Visual Studio LightSwitch 2011 2013 визуальное программирование конструктор .NET для новичка для детей RAD разработка программирование VPL среда разработки дшпреыцшеср

Model-view-controller (MVC) — уже стандартная схема использования шаблона проектирования, с помощью которого модель данных приложения, его пользовательский интерфейс и взаимодействие с пользователем — функционально разделены на три отдельных подсистемы так, что дальнейшая модификация или какая-либо корректировка одной из этих подсистем оказывает в худшем случае минимальное воздействие на остальные (а в лучшем и идеальном случае — и вовсе никак не затрагивает их). Данная схема практически повсеместно используется для построения архитектурного и структурного каркаса почти любого современного приложения.

О’кей, заканчивая с этим мудреным для новичка определением, ещё раз подчеркну: любое LightSwitch-приложение автоматически создается по этой классической трехуровневой схеме:

  • Уровень представления отвечает за взаимодействие с пользователями, его основная задача — визуализация данных на форме или странице, их редактирование, интерфейс со стороны внешнего мира ко всем публичным возможностям вашего приложения.
  • Уровень логики получает (как правило, от уровня представления) запросы от клиента, обрабатывает их как-то, при этом выполняя все необходимые для этого внутренние операции, связанные с реализацией логики приложения — это мозговой центр, «соображалка программы».
  • Уровень данных отвечает за хранение абстрактных данных приложения — это пассивная память вашей программы.

Давайте посмотрим на картинку-график ниже, которая хорошо суммирует это моё суховатое описание:

LightSwitch Microsoft Visual Studio LightSwitch 2011 2013 визуальное программирование конструктор .NET для новичка для детей RAD разработка программирование VPL среда разработки дшпреыцшеср

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

Тут есть некоторые детали, из многообразия которых я упомяну лишь то, что LightSwitch-приложение для Windows конфигурируется и запускается с повышенными привилегиями из-под спецпроцесса sllauncher.exe (он обеспечивает прямой доступ к ряду сервисов Windows, например, возможность взаимодействия с компонентами Microsoft Office). При работе же в браузере, такое приложение может теоретически выполняться в любом браузере и на любой операционной системе, где установлен плагин Silverlight 4.0, но с целым рядом ограничений.

Далее, уровень логики сделан на основе служб WCF RIA DomainServices, крутящихся под управлением ASP.NET 4.0. При этом вы сами вольны выбирать, где они будут физически расположены:

  • Локально;
  • На выделенном сервере Internet Information Services (IIS);
  • Или это будет облачный инстанс в Windows Azure.

В этом же уровне представления есть несколько способов доступа к хранилищу данных (рассмотренному чуть ниже в свой черед), из которых здесь я бы выделил лишь два: «серьёзный и универсальный способ» — ADO.NET Entity Framework, а также отчасти «офисный протокол» — OData (базирующийся на REST, Atom/XML и JSON, кстати).

И, наконец, третья ступенька в нашем строго ступенчатом стиле рассмотрения — это уровень данных. Тут вариантов превеликое множество (всё зависит от наличия лично у вас провайдера для каждого конкретной БД), но я бы опять же выделил два наиболее вероятных и органичных для решения от Microsoft способа — это более традиционный сервер баз данных SQL Server или его облачный аналог — Microsoft SQL Azure.

Чтобы подбить всю эту груду слов к удобному «итого», опять же давайте взглянем на диаграмму компактно представленную ниже:

LightSwitch Microsoft Visual Studio LightSwitch 2011 2013 визуальное программирование конструктор .NET для новичка для детей RAD разработка программирование VPL среда разработки дшпреыцшеср

Чтобы подвести итог в этом пункте, с помощью Visual Studio LightSwitch можно создавать двухуровневые или трехуровневые приложения для настольных систем, а также трехуровневые веб-приложения. Способ же развертывания такого приложения (диплой) — полностью зависит от выбранного вами типа клиента и топологии сервера.

При этом существует три основных сценария использования LightSwitch:

  • Создание приложений изначально в Visual Studio LightSwitch;
  • Последующая доработка созданного с помощью LightSwitch-приложения в Visual Studio Professional;
  • Расширение приложений созданных с помощью LightSwitch сторонними компонентами и сетевыми сервисами в Visual Studio Professional.

Приближенные к жизни типы полей

LightSwitch использует более приближенные к реальной жизни типы данных, здесь минимум узкоспециализированных программистских понятий. К примеру, вам будут доступны следующие поля для реальных бизнес-приложений: e-mail-адрес, изображение, телефонный номер, денежная сумма и так далее.

LightSwitch Microsoft Visual Studio LightSwitch 2011 2013 визуальное программирование конструктор .NET для новичка для детей RAD разработка программирование VPL среда разработки дшпреыцшеср

Кастомизируем форму прямо не лету

У LightSwitch есть возможность настраивать формы (окна создаваемых приложений) прямо во время исполнения приложения (имеется в виду в среде разработке). В каждом таком запущенном приложении в верхнем-левом уголке появляется следующий значок с надписью «Customize Screen»:

LightSwitch Microsoft Visual Studio LightSwitch 2011 2013 визуальное программирование конструктор .NET для новичка для детей RAD разработка программирование VPL среда разработки дшпреыцшеср

Если щёлкнуть по нему, то появится следующее меню-настройки режима кастомизации, со всеми списками, редактором свойств и экраном предпросмотра:

LightSwitch Microsoft Visual Studio LightSwitch 2011 2013 визуальное программирование конструктор .NET для новичка для детей RAD разработка программирование VPL среда разработки дшпреыцшеср

Генератор интерфейсных форм, не дизайнер

Второе интересное отличие, касающееся конструирования форм: здесь нет визуального дизайнера форм, по-крайней мере в том виде, в котором это представлено в традиционной Visual Studio.

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

LightSwitch Microsoft Visual Studio LightSwitch 2011 2013 визуальное программирование конструктор .NET для новичка для детей RAD разработка программирование VPL среда разработки дшпреыцшеср

Примеры добавления элементов

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

LightSwitch Microsoft Visual Studio LightSwitch 2011 2013 визуальное программирование конструктор .NET для новичка для детей RAD разработка программирование VPL среда разработки дшпреыцшеср

Кроме кнопки в моем случае, для этого придётся всё-таки написать какой-то минимальный кусок кода, вот его пример:

partial void NewAuthor_Execute() 
{ 
this.propAuthor = new Author(); 
this.FindControl("GroupAuthor").IsVisible = true; 
}

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

partial void SaveAuthor_Execute() 
{ 
this.ArticleProperty.Author = propAuthor; 
this.Save(); 
}

В итоге, пройдя череду настройки всех полей формы, последовательного добавления кнопок Добавить (New Author) и Сохранить (Save Author), я получил в итоге примерно вот такую вот форму:

LightSwitch Microsoft Visual Studio LightSwitch 2011 2013 визуальное программирование конструктор .NET для новичка для детей RAD разработка программирование VPL среда разработки дшпреыцшеср

Компиляция... публикация проекта

Поскольку моя разработка уже готова — я должен опубликовать её, то есть подготовить конкретную сборку для выбранной среды (смотрите диапазон для возможного выбора в первой части этой статьи). Самый простой (я бы сказал, что немного бездумный) способ для этого — воспользоваться услугами LightSwitch Publish Wizard. Первое что у вас спросят в этом случае — хотите ли вы получить десктопное или веб-приложение?

LightSwitch Microsoft Visual Studio LightSwitch 2011 2013 визуальное программирование конструктор .NET для новичка для детей RAD разработка программирование VPL среда разработки дшпреыцшеср

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

LightSwitch Microsoft Visual Studio LightSwitch 2011 2013 визуальное программирование конструктор .NET для новичка для детей RAD разработка программирование VPL среда разработки дшпреыцшеср

Прошу понять меня правильно: в этой поверхностной зарисовке цикла создания LightSwitch-приложения, я не ставил перед собой задачу научить чему-то читателя, ибо в таком малом объеме текста это просто невозможно; а рассматривал лишь возможность дать быстрое впечатление о типичных особенностях разработки в LightSwitch.

LightSwitch Microsoft Visual Studio LightSwitch 2011 2013 визуальное программирование конструктор .NET для новичка для детей RAD разработка программирование VPL среда разработки дшпреыцшеср

SQL или LINQ? Ни то и не другое!

LightSwitch, фактически, конструктор для создания приложений баз данных (и разработки самих баз данных тоже). При этом, здесь вы нигде не встретите SQL. Здесь есть полностью визуальный редактор для настройки всего необходимого и связанного с базой данных, при этом главный движущий механизм всего механизма — LINQ (Language Integrated Query), — остаётся где-то в дебрях самой среды, хотя по всем признакам его присутствие ощущается везде и повсюду.

Позвольте пояснить: SQL знают очень многие, но его здесь нет; у LINQ есть определенные преимущества, не спорю, но LINQ — не самая подходящая технология для новичка, поэтому принято решение сделать что-то вроде графико-визуального сборщика LINQ-запросов — Query designer. Лично для меня было бы здорово, если бы дополнительно предоставлялась возможность при этом показывать (и как-то редактировать) конечную полученную строку запроса/подключения (будь это в формате SQL или LINQ), но здесь этого нет, к сожалению.

Для кого написан LightSwitch?

В рамках вышеприведенной констатации, позвольте развить предыдущий пункт до его логического завершения. Итак, здесь нет ни SQL, ни LINQ, что же здесь есть? Предполагается, что такой до предела визуализированный подход сделает разработку серьёзных приложений более доступной и простой для непрофессионала. Давайте посмотрим, что получается в реальной жизни. Я взял для примера базы данных, хотя подобные противоречия имеются и в других местах этой системы проектирования.

С одной стороны — у нас здесь очень доступные и очевидные типы данных (как я описал их выше), с другой — при построении отношений внутри той же базы данных через Relationship Builder, требуется очень хорошее понимание базисных основ устройства реляционных баз данных


Смотрите на скриншоте снизу: здесь нам требуется выбрать отношение многие-к-многим между всеми другими вариантами, а также попутно настроить каскадное удаление для всех экземпляров.

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

И это заставляет реально задаться вопросом: кто действительный клиент этой среды разработки, какова её ниша и область применения?

LightSwitch Microsoft Visual Studio LightSwitch 2011 2013 визуальное программирование конструктор .NET для новичка для детей RAD разработка программирование VPL среда разработки дшпреыцшеср

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

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

LightSwitch Microsoft Visual Studio LightSwitch 2011 2013 визуальное программирование конструктор .NET для новичка для детей RAD разработка программирование VPL среда разработки дшпреыцшеср

У LightSwitch самая низкая цена среди всего семейства продуктов от Visual Studio, при этом нет и не планируется его бесплатная версия.

Заключение: универсальность из коробки

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

LightSwitch Microsoft Visual Studio LightSwitch 2011 2013 визуальное программирование конструктор .NET для новичка для детей RAD разработка программирование VPL среда разработки дшпреыцшеср
Файл ApplicationDefinition.lsml описывающий на автоматически-сгенерированном XAML графическую разметку приложения

Здесь в полной мере реализован уже стандартный модуль управления пользователями (CRUD) и многое-многое другое, что, увы, невозможно рассмотреть в рамках столь ограниченной по объему статьи. Я попытался выборочно рассмотреть лишь отдельные возможности и преимущества этой среды, честно коснувшись и недостатков, а также очертить собственно круг применения MS LightSwitch, предварительно попытавшись представить целевой контекст для подобного рода разработок.

При написании этой статьи мною были частично использованы обучающие материалы от Microsoft — в первую очередь замечательная вводная брошюра "Visual Studio LightSwitch — Первое знакомство" от Алексея Федорова, с которой я и рекомендую всем начать изучение этой замечательной и относительно новой среды разработки для полупрофессионалов, если позволите мне так обозвать категорию продвинутых компьютерных юзеров (но не имеющих, или почти не имеющих опыта в современном традиционном программировании).

twitter.com facebook.com vkontakte.ru odnoklassniki.ru mail.ru ya.ru pikabu.ru blogger.com liveinternet.ru livejournal.ru google.com bobrdobr.ru yandex.ru del.icio.us

Подписка на обновления блога → через RSS, на e-mail, через Twitter

1 комментарий

Следите за комментариями по RSS
  1. Отличная ознакомительная статья, спасибо!

Оставьте комментарий!

Не регистрировать/аноним

Используйте нормальные имена. Ваш комментарий будет опубликован после проверки.

Зарегистрировать/комментатор

Для регистрации укажите свой действующий email и пароль. Связка email-пароль позволяет вам комментировать и редактировать данные в вашем персональном аккаунте, такие как адрес сайта, ник и т.п. (Письмо с активацией придет в ящик, указанный при регистрации)

(обязательно)


⇑ Наверх
⇓ Вниз