Создание web или desktop версии приложения, не переписывая его с нуля

Все мы привыкли к тому, что desktop и web, это две совершенно разные не совместимые между собой платформы.

Платформы на самом деле разные, но так ли они не совместимы? Попытаемся проанализировать этот вопрос и найти на него ответ.

Анализ

Для того чтобы разобраться в данном вопросе рассмотрим состав desktop и web приложения.

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

Последний чаще всего можно разделить минимум на два слоя:

  • Слой бизнес-логики и доступа к данным (обычно разделяется на два слоя);
  • Собственно, интерфейс приложения или представления данных.

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

База данных

Система управления базой данных, даже если она встраиваемая является по сути посредником между хранящейся в базе данных информацией и серверной логикой (если таковая поддерживается), и приложением.

Протоколы для работы с ней как правило унифицированы и реализованы в виде соответствующих библиотек и драйверов. Поэтому для неё не имеет значения используется она для desktop программы и к ней обращается web приложение с сервера.

Для этого слоя платформа конечного приложения не является критичной.

Слой бизнес-логики и доступа к данным

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

Это уже не база данных, но в тоже время на этом слое пользователь данных ещё не видит.

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

Интерфейс приложения или представление данных

Этот слой представляет собой буквально то, что пользователь видит на экране (надписи, кнопки, таблицы и т.д.).

В зависимости от платформы работа с пользователем может происходить либо в собственном окне программы (desktop) либо в окне браузера (web).

Потому, данный слой в противоположность предыдущим полностью зависим от платформы.

Решение

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

Но как это осуществить, если речь идёт о принципиально различных платформах?

На самом деле и здесь все довольно-таки просто. В настоящее время существуют, как минимум, три семейства технологий, которые поддерживают и desktop, и web.

  • .NET Framework от Microsoft (WPF, ASP.NET);
  • Java от Oracle (Java EE);
  • Delphi и C++ Builder от Embarcadero (VCL, FireMonkey, IntraWeb).

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

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

Таким образом мы получаем версию приложения для desktop и web не переписывая значимую часть его исходного кода.

Добавить комментарий

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