Новость 15.03.2013
Анонс! Диста-Софт анонсирует новый программный продукт - Диста:REST сервер. Основная цель, которую мы планируем достигнуть выходом этого продукта это - предоставить пользователям системы Диста:ERP новые возможности построения интегрированных решений на базе современных интернет-технологий...
Главной предпосылкой разработки Диста:REST сервераявляется попытка по-новому решить старые, наиболее чувствительные проблемы, неизбежно возникающие при организации взаимодействия интернет ресурсов компаний, таких как интернет-магазины, каталоги товаров, с корпоративной информационной системой (КИС), такой, например, как Диста:ERP.
В чем же суть этих проблем?
Большинство современных WEB сайтов строятся с использованием так называемых CMS-систем (систем управления контентом), которые позволяют дистанционно менять содержимое и форму представления информации на сайте. Среди наиболее популярных CMS можно назвать 1С-Битрикс, Jumla, Drupal, MODx, UNI.CMS и другие. Но в любом случае, построен ли сайт на CMS или каким-то другим образом, он обладает своим информационным хранилищем, из которого извлекается информация, предоставляемая посетителю сайта по его запросу. Это хранилище или точнее - база данных, обычно располагается (или как говорят "хостится"), там же где, собственно, и сам сайт - на серверах интернет-провайдеров.Она не подразумевает частое изменение своей информации, поскольку в большей степени ориентирована на извлечение и предоставление данных. Так, если речь идет о сайте - интернет-магазине, требуется отображать товарный каталог, данные о ценах и наличии товара, список сделанных клиентом заказов и их состояние. Основная операция сбора информации - это регистрация новых клиентских заказов на покупку товара.
Напротив, данные корпоративной информационной системы, располагаются на специально оснащенных компьютерах - серверах баз данных, находящихся, как правило, в локальной сети компании. Для таких баз данных характерна значительно более высокая транзакционность (количество изменений в единицу времени), и обусловлено это тем, что в них регистрируется информация, как правило, по значительно более широкому спектру бизнес-процессов по сравнению с интернет сайтом. Например, это - информация о поступлениях товаров, финансовая информация, внутренняя логистика и т д.
Таким образом, поскольку и сайт, и информационная система - суть два независимых информационных хранилища, основной проблемой является обеспечение своевременной синхронизации их данных. И наиболее важными представляются несколько аспектов этой проблемы:
Во-первых, это задача актуальности информации из КИС, публикуемой на сайте. Ярким примером наиболее чувствительной с точки зрения актуальности является информация о наличии товара, доступного для формирования клиентского заказа на сайте. В общем случае реализация товара осуществляется не только через интернет-магазин, но также и через другие подразделения компании, более того, одновременно могут регистрироваться новые поступления товара, его межскладские перемещения и т д. Все это ведет к тому, что информация о доступном количестве в базе данных КИС постоянно претерпевает изменение и соответственно "устаревает" на сайте. Естественно, возникает потребность как можно быстрее передавать эту информацию в интернет-магазин, с тем чтобы очередной раз не расстраивать клиента, уже разместившего заказ на сайте, последующим сообщением "Нет в наличии".
Обычный способ решения этой проблемы - организация периодической процедуры экспорта(из КИС) - импорта(на сайте) пакетов информации с товарными остатками. Этот обмен может быть оптимизирован по объёму передаваемых данных (когда, например, передаются остаток только тех товаров, у которых количество менялось с момента последнего сеанса), а также периодичности. Понятно, что чем выше периодичность такого обмена, тем выше степень актуальности данных на сайте. Но, тем не менее, такой подход все равно не может обеспечить абсолютную актуальность. И объясняется это тем, что во-первых, сам процесс обмена требует некоторого времени а, во-вторых, его периодичность не может быть очень частой, она выбирается такой, чтобы не нагружать систему - как правило от 5 до 30 мин. В итоге актуальность публикуемых на сайте данных оказывается не постоянной.
Вторая проблема синхронизации связана с передачей клиентских заказов из базы данных сайта в базу данных КИС - т.е с обратным движением информации. Созданные клиентами сайта заказы должны быть обработаны - необходимо провести резервацию заказанных товаров, построить логистические схемы его доставки и т д. Все эти операции могут быть корректно выполнены только в базе данных корпоративной системы и поэтому заказы клиентов должны быть как можно быстрее туда переданы.
Для решения этих задач обычно также применяется метод периодических экспортно-импортных процедур. Передача заказов также производится по некоторому расписанию, при этом запросы на новые заказы, как правило, производится со стороны КИС, а сайт предоставляет эту информацию. Иногда сайт пересылает клиентские заказы после их оформления в виде писем на заданный электронный адрес.
Надо отметить, что системы управления сайтом, как правило, предлагают специальные сервисы, позволяющие организовать шлюзы обмена своими данными с внешней средой. Эти шлюзы строятся на основе разных технологий - это может быть простой файловый обмен, WEB сервисы, основанные на стандарте SOAP, или другие методы. В последнее время часто применяется, так называемая, REST архитектура построения приложений (http://ru.wikipedia.org/wiki/REST) , в которой система организует шлюз для презентации своего состояния и обмена данными. Общаться с системой через такой шлюз можно с помощью стандартных транспортных протоколов интернета, таких как HTTP, а для передачи данных используются стандартные форматы данных, такие как XML, HTML, JSON.
Классический вариант организации обмена КИС с сайтом заключается как раз в использовании REST шлюза сайта. Такие операции как передача товаров, их цен и данных об их остатках, запросы о новых поступивших клиентских заказах производятся путем периодического обращения корпоративной системы к шлюзу сайта. Как уже было отмечено, следствием периодичности является потеря актуальности данных на сайте и задержка поступления информации о заказах, сделанных на сайте, в КИС.
Возникает естественный вопрос - каков же выход из этой ситуации? Напрашивается очевидное решение - для того, чтобы повысить актуальность данных, нужно позволить сайту получить их от КИС в необходимый для предоставления клиенту момент, а новый оформленный клиентом заказ сайт должен быть способен передать в базу данных корпоративной системы сразу после его оформления. Для того,чтобы это было возможно, корпоративная система должна быть снабжнена шлюзом обмена, аналогичным тому, какой имеется у сайта, и способ общения с таким шлюзом должен быть также удобен и прост.
Диста:REST сервер и является таким шлюзом, который предоставляет корпоративная информационная система Диста:ERP для общения с ней. Диста:REST сервер представляет собой самостоятельное приложение, которое может быть запущено на любом компьютере локальной сети, работающем под управлением операционной системы Windows, с которого может быть установлено надежное соединение с сервером базы данных КИС Диста:ERP. В частном случае, это может быть, собственно, сам сервер базы данных. После этого представляется возможным, используя внешний IP адрес, "общаться" с REST сервером "извне". Общение производится на естественном для интернета языке: по протоколу http или, если требуется защищенный режим, по протоколу https, в качестве формата данных используется JSON (http://ru.wikipedia.org/wiki/JSON).
Диста:REST сервер в своем первоначальном варианте реализует набор функций, в первую очередь ориентированные на решение задач взаимодействия Диста:ERP с произвольным интернет- магазином. Среди них:
- Получение данных об остатках на выбранных складах для заданного товара
- Получение данных о ценах заданного товара
- Регистрация нового контрагента в системе
- Регистрация заказа клиента с возможностью установки резерва на всю или часть его товарной спецификации
- Предоставление данных о сделанных конкретным клиентом заказах
- некоторые другие вспомогательные задачи...
Диста:REST сервер выполнен в многопоточной архитектуре, т е позволяет обслуживать одновременно поступающие запросы от множества пользователей с сайта (нескольких сайтов) или из других источников. Он снабжен механизмом регулировки максимальной нагрузки, который может оказаться необходимым для защиты от DDoS атак. Надо отметить, что важной особенностью продукта является возможность работать по защищенным SSL соединениям, с использованием механизма их сертификации.
Пожалуй, одной из главных особенностей данного решения является его универсальность. Вне зависимости от того, какая CMS система применяется для управления контентом сайта, в нее с достаточной простотой могут быть встроены процедуры для взаимодействия с Диста:REST сервером. Это объясняется тем, что любая CMS, как и любое другое web-приложение, в конечном итоге разрабатываются на специальных языках программирования таких, например, как php, ориентированными на использование в среде "стандартного" web-сервера, и де-факто доступных на нем. Встраивание вызовов методов Диста:REST сервера и обработки ответа от него может быть описано на этом языке. Примеры вызовов основных функций на языке PHP можно посмотреть тут.
В перспективе планируется расширять сферу использования Диста:REST сервера. На его базе могут, например, быть реализовано решение для организации мобильной выездной торговли с помощью мобильных устройств, снабженных доступом в интернет.
В настоящее время проходит тестирование beta-версии Диста:REST сервера. Выход первой рабочей версии продукта намечен на второй квартал 2013 года.