ВЕБ-РАЗРАБОТКА
Одной из ключевых компетенций компании "Кросс-Информ" является веб-разработка. В своей работе над веб-проектами мы используем следующие технологии.
HTML – язык гипертекстовой разметки, неизменная основа всего веб-программирования.
CSS – каскадные таблицы стилей, фактически язык описывающий визуальное представление объектов HTML. Если HTML задает структуру представления, то стили определяют как они должны выглядеть.
CSS препроцессоры – так называемый синтаксический сахар для CSS, позволяющий структурировать и упростить разработку стилей за счет использования возможностей недоступных в CSS. CSS препроцессоры трансформируют код написанный на своем языке в обычный CSS совместимый с современными браузерами. Наиболее известные препроцессоры: LESS, SASS
JavaScript – интерпретируемый язык, обработка которого обеспечивается веб-браузерами, позволяет реализовать интерактивные сценарии взаимодействия с пользователем, серверной частью приложения и сторонними сервисами.
TypeScript – язык программирования разработанный Microsoft, дополняющий возможности JavaScript современными подходами к программированию. TypeScript является обратно совместимым в JavaScript и по факту компилируется в него, поэтому совместим с любым современным веб-браузером.
jQuery – библиотека расширений для JavaScript, предоставляющая удобные инструменты для работы с объектной моделью HTML и также API для работы с AJAX и REST сервисами.
SPA фреймворки – библиотеки для разработки веб-приложений типа single page application (SPA). Обеспечивают полностью динамический контент, страница в веб-браузере способна полностью изменять свою структуру в зависимости от действий пользователя и взаимодействия с сервером, без необходимости полной перезагрузки и повторной инициализации в браузере. Предоставляет улучшенное юзабилити, работу с динамическими данными и структурами, возможности url роутинга, поддержку кеширования, и лучшее время отклика. Загрузка страницы происходит только один раз, в дальнейшем вся логика и весь контент работают и подгружаются по мере необходимости в процессe работы пользователя с приложением. Основные фреймворки: Angular, Vue, React.
WebSockets – технология двунаправленной коммуникации между сервером и клиентом, в данном случае браузером, является частью спецификации HTML5. Позволяет реализовать обмен данными в режиме реального времени.
JSON – java script object notation, открытый стандарт формата данных в человеко-читаемом виде для передачи объектов между разными системами. Лежит в основе всей коммуникации между клиентской частью приложения (в веб-браузере) и серверной частью (backend сервисами).
REST - архитектурный стиль взаимодействия компонентов распределённого приложения в сети. Используется как при разработке серверной части веб-приложения (backend) так и при создании распределенных приложений на микросервисной архитектуре. Фактически REST – это спецификация из набора URL методов, типов HTTP запроса (GET, POST, PUT, DELETE, PATCH), JSON схем описывающих структуры запросов и ответов сервиса, и возможные статусы кодов. Как правило, веб-сервисы реализуются в виде RESTful сервисов, ранее использовались веб-сервисы на основе SOAP/XML – но сейчас практически вытеснены, из-за неудобства их использования в том числе в веб-браузерах. В качестве стандарта описания REST сервисов обычно используется спецификация OpenAPI (Swagger) либо RAML. Спецификация позволяет автоматически сгенерировать клиентскую библиотеку работы с удаленным API практически для любого современного языка.
gRPC – более новый стандарт взаимодействия для сервисов от компании Google, в основе которого лежит:
- Использование HTTP/2 (в REST используется HTTP/1.1).
- Бинарный протокол сериализации данных protobuf, что уменьшает нагрузку на сеть за счет меньшего размера передаваемых данных и увеличивает производительность обработки запросов.
- Встроенные возможности двусторонней коммуникации клиента и сервера.
В качестве недостатка можно считать более сложную интеграцию для frontend приложений (Angular, Vue, React): из-за использования бинарного формата передачи данных и использования HTTP/2 требуется промежуточная прослойка между веб-браузером и gRPC сервисом. Проблема решается за счет технологии gRPC-Web, по сути, это gateway встроенный в ASP.NET Core для поддержки браузеров, либо второй вариант - за счет перекодирования в gRPC JSON – при котором браузеры способны вызывать методы сервиса используя традиционные подходы REST.
ASP.NET MVC - фреймворк для разработки веб-приложений, реализующий известный шаблон проектирования Model-View-Controller. Схема архитектуры MVC разделяет приложение на три основных компонента: модель, представление и контроллер. Платформа ASP.NET MVC представляет собой альтернативу подходу веб-форм ASP.NET при создании веб-приложений, и является легковесной платформой отображения с широкими возможностями юнит тестирования.
ASP.NET Core – дальнейшее развитие фреймворка для создания как классических ASP.NET MVC Core приложений, так и REST или gRPC сервисов, используемых в качестве бэкенда для веб-приложения или в качестве самостоятельного сервиса, с поддержкой разворачивания решения на Linux и Windows операционных системах.
Технологии веб-разработки непрерывно развиваются. Специалисты компании "Кросс-Информ" прошли все этапы от разработки проектов с использованием классического ASP/ASP.NET, затем ASP.NET MVC и современного подхода с использование SPA фреймворков для фронтенда и REST сервисов для бэкенда построенного на ASP.NET Core, и gRPC/gRPC-Web для построения распределенных приложений на базе микросервисов.