Рубрики
Без рубрики

Атомарный сервер – быстрый и модульный способ разработки клиент-серверного приложения

Всем привет, я надеюсь, что у вас отличный день. Презентация и Генезис Позвольте мне войти… Помеченный как show dev, java.

Всем привет, я надеюсь, что у вас отличный день.

Позвольте мне представиться, Грегуар ТАЯ, 21 год, увлечен технологиями уже около десяти лет. Я всегда приходил в ужас, видя, как каждый день копируется и вставляется неприличное количество кода. Кроме того, сегодняшняя гиперконнективность подталкивает нас к внедрению дорогостоящих архитектур клиент-сервер или веб-сервисов, таких как REST, которые дешевле, но быстро ограничены неспособностью WebService уведомлять клиента без отправки клиентом какого-либо запроса. Это источник атомарного сервера.

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

Были реализованы различные концепции:

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

Вот как отправить и получить пакет json с помощью атомарного сервера:

/**** Send Packet from server side ****/
// 1. Create json to send with javax.json
JsonObject json = Json.createObjectBuilder()
                .add("message", "Hello World")
                .add("type", "INFO")
                .build();
// 2. Send the packet to all client
server.broadcastPacket(new JsonPacket(json));

/**** Receive Packet from client side ****/
public class ChatListener implements Listener {
    @EventHandler
    public void onPacketReceive(PacketReceivedEvent event) {
        // Check the type of packet
        if (event.getPacket() instanceof JsonPacket) {
            // Cast into JsonPacket
            JsonPacket jsonPacket = ((JsonPacket)event.getPacket());

            // Get JsonObject
            JsonObject json = jsonPacket.getJsonValue().asJsonObject();

            // Get the data
            json.getString("message"); // "Hello World"
            json.getString("type"); // "INFO"
        }
    }
}

Вот и все!

Как вы можете видеть, это довольно большой проект. Основные функциональные кирпичики уже есть, и вы уже можете экспериментировать с ними. Однако еще многое предстоит сделать, прежде чем это станет производственным проектом:

  • Шифрование коммуникаций (пока все понятно).
  • Разработка клиентской библиотеки для основных платформ (Node, PHP, Android и iOS).
  • Улучшите безопасность плагинов (контейнерные плагины в соответствующих папках).
  • Реализация модульных тестов/тестов свойств.
  • Улучшение Вики и документа.
  • Добавляйте функции в соответствии с различными потребностями пользователей.

Проект, конечно же, с открытым исходным кодом (лицензия X11), и все вклады приветствуются.

Большое вам спасибо за то, что нашли время прочитать эту презентацию, и я надеюсь, что вам понравится проект.

Я с нетерпением жду ваших отзывов:)

Веб-сайт и форум: https://www.atomicserver.io/ Вики: https://www.atomicserver.io/wiki Gitlab: https://gitlab.com/atomic-server/server Документация: Документация:

Оригинал: “https://dev.to/lagregance/atomicserver-a-fast-and-modulable-way-to-develop-a-client-server-app-13jn”