IML, 5 причин использовать

disclamer: статья дает ликбез по самым интересным возможностям Incoding Meta Language, но не является документацией.

No JS

Динамическая составляющая языка JаvaScript плохо сказывается на поддержке приложения в дальнейшем, а также требует от разработчика постоянно учитывать все тонкости динамической типизации (null, undefined, ‘undefined‘, this). После опыта разработки крупных проектов был построен первый прототип типизированного построителя JavaScript сценариев, который перерос в полноценный декларативный язык IML.

Листинг кода демонстрирует выполнение Ajax запроса на сервер в момент появления (только первый раз) элемента на странице с последующей вставкой полученных данных через template.

Стандарт

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

Типизация

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

Листинг кода демонстрирует типизированный построитель шаблонов, который может использовать все преимущества visual studio intellisense.

Синтаксический сахар C#

Язык C# обладает, наверное, одним из самых богатых функционалов среди типизированных языков, и это положительно сказывается при использовании «синтаксического сахара» в рамках Razor-страницы – анонимные функции, лямбда-выражения и многое другое позволяет проводить рефакторинг Вашего приложения.

Основные преимущества

Основные преимущества:

  • возможность разрабатывать свои Html extensions, которые потом использовать в рамка View страницы.

  • анонимные функции для построения MvcHtmlString, прямо во View

REST API и JSON

Последнее время подход REST API стал очень распространен и, конечно же, многие javascript framework поддерживают этот подход. Однако, не во всех из них есть встроенная работам с шаблонами (template), без которых полученный JSON на html-странице не имеет смысла. IML имеет богатый набор функций для работы с полученными JSON-данными, а также типизированный построитель шаблонов (template).

 

Что же дальше ?

Уже сейчас IML является законченным решением, способным покрыть большую часть веб-сценариев, и применяется в десятках реальных проектов. Но мы так же понимаем, что без постоянного развития не получится построить по-настоящему идеальный инструмент. Поэтому для целей усовершенствования Incoding Framework мы используем bug tracker, где каждый член команды (не обязательно нашей) может оставить свои пожелания и замечания, которые потом будут учтены при выпуске новой версии framework. Следующей версией будет 1.1, выпуск которой запланирован на 1 декабря и по большей части будет расширять существующий функционал, а также исправлять ошибки, найденные в процессе применения на проектах.

IML 2.0

Версия 2.0, выход в свет которой намечается на начало 2014 года, будет содержать ряд изменений в синтаксисе. Я стараюсь всегда сохранять публичный API в библиотеке, чтобы изменения в проектах были минимальны при переходе с одной версии на другую, но новые “фичи”, которые будут доступны в 2.0, требуют глобальных изменений. Версия 2.0 будет основана на улучшении следующих параметров кода библиотеки:

  1. Длина конструкций.
  2. Лаконичность.
  3. Прозрачность.
  4. Близость к C# (относится только к IML).

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

  • Inc-221 – упрощения построения условий и приведения их к более “нативному” поведению C#

  •  Inc-174 – переименования ( приведу только несколько )

Изначально при разработке IML названия по большей части строились на основании опыта написания C#-кода, то есть я старался как можно более четко передавать в имени назначение enum или class, однако, т.к. в рамках декларативного языка можно использовать более короткие значения, некоторые конструкции будут изменены.

Vlad Kopachinsky

I am a Senior developer at Incoding Software in Russian Federation. I created the Incoding Framework for rapid development

More Posts - Website - Twitter - Facebook - LinkedIn

Leave a Reply