Всем привет, я надеюсь, что у вас отличный день.
Позвольте мне представиться, Грегуар ТАЯ, 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”