1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/wandali-easy-rpc

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Это зеркальный репозиторий, синхронизируется ежедневно с исходного репозитория.
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

easy-rpc

Проект перенесён на GitHub: https://github.com/Daliji/easy-rpc.

Это лёгкий RPC-сервис, который подходит для небольших проектов. Он позволяет вызывать методы на удалённом сервере так же просто, как если бы они были локальными!

Адрес блога и последующих обновлений документации: Блог Да Лицзи.

Если у вас есть вопросы, пожалуйста, отправьте их по адресу:

@MailTo:codelifeliwan@sina.com.

Свяжитесь со мной!

Как использовать

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

1. Как создать сервер

Чтобы создать сервер, вам потребуется всего несколько строк кода:

public static void startServer() throws Exception {
    RPCServer server = new RPCServer();

    // Устанавливаем порт, на котором будет слушать сервер
    server.getConfiguration().setListeningPort(8900);

    // Добавляем bean-компоненты, которые можно выполнить на сервере, и соответствующие классы
    server.getConfiguration().addBean("addBean", SampleDoServerClass.class);

    // По умолчанию сервер работает в однопоточном режиме, что обеспечивает атомарность выполнения
    // Если вы хотите запустить его с использованием многопоточного режима ввода-вывода (многопоточность, высокая эффективность), выполните следующую строку
    server.getConfiguration().setThreadType(ThreadType.MULTI);

    // Запускаем сервер
    server.start();
}

После запуска клиенты могут отправлять запросы на сервер. На разных портах можно создавать разные серверы.

2. Как создать клиент

Для создания клиента также требуется всего несколько строк кода:

public static RPCClient getClient() throws Exception {
    // Создаём экземпляр клиента и указываем адрес и порт сервера (можно указать несколько, будет автоматически балансировать нагрузку)
    RPCClient client = new RPCClient("localhost", 8900);

    // Регистрируем методы, которые клиент может выполнять, через интерфейс
    client.getConfiguration().addBean(SampleDoClientInterface.class, "addBean");

    return client;
}

3. Как вызвать методы на удаленном сервере с помощью клиента

После получения клиента вы можете вызывать методы:

SampleDoClientInterface bean = client.getBean(SampleDoClientInterface.class);
System.out.println("1 + 2 = " + bean.add(1, 2));

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

4. Как настроить клиент и сервер с помощью конфигурационного файла

Несколько строк кода позволяют завершить запуск сервера и вызов клиента. Вы можете обратиться к примерам в samples:

package com.codelifeliwan.rpc.samples;

import com.codelifeliwan.rpc.client.RPCClient;
import com.codelifeliwan.rpc.samples.models.cient.*;
import com.codelifeliwan.rpc.server.RPCServer;

import java.io.InputStream;

public class Start {

    public static void main(String[] args) throws Exception {
        startServer();

        RPCClient client = getClient();

        // Вызов удаленного метода
        SampleDoClientInterface bean = client.getBean(SampleDoClientInterface.class);

        System.out.println("10 + 20 = " + bean.add(10, 20));
    }


    /**
     * Получение клиента
     *
     * @throws Exception
     */
    public static RPCClient getClient() throws Exception {
        InputStream inputStream = Start.class.getClassLoader().getResourceAsStream("easyrpc.yml");
        return RPCClient.fromYaml(inputStream);
    }

    /**
     * Запуск сервера
     *
     * @throws Exception
     */
    public static void startServer() throws Exception {
        InputStream inputStream = Start.class.getClassLoader().getResourceAsStream("easyrpc.yml");
        RPCServer server = RPCServer.fromYaml(inputStream);
        server.start();
    }
}

5. Пример конфигурации

# Конфигурация сервера easyrpc
server:
  # Порт прослушивания
  port: 8912
  # Режим потока прослушивания, есть single (однопоточная обработка, выполнение бизнес-логики является атомарным), multi (модель NIO главный-подчиненный, многопоточность, эффективность выше, но пока не реализована)
  thread: multi
  # Класс сериализации сообщений
  serializer: com.codelifeliwan.rpc.core.serializer.DefaultMessageSerializer
  # Зарегистрированный класс, формат: bean-name:bean-class, model (singleton/prototype, по умолчанию singleton)
  beans:
    testBean: com.codelifeliwan.rpc.samples.models.server.SampleDoServerClass
    sortBean: com.codelifeliwan.rpc.samples.models.server.SampleDoSort

# Конфигурация клиента easyrpc
client:
  # Сервер связи, несколько серверов разделяются запятыми, при наличии нескольких серверов будет автоматически распределять нагрузку (случайное значение hash)
  server: localhost:8912
  # Класс сериализации сообщений
  serializer: com.codelifeliwan.rpc.core.serializer.DefaultMessageSerializer
  # Интерфейс, который необходимо создать
  beans:
    testBean: com.codelifeliwan.rpc.samples.models.client.SampleDoClientInterface
    sortBean: com.codelifeliwan.rpc.samples.models.client.SampleSort

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Быстрый и простой RPC-сервис, подходит для использования в небольших проектах. Расширить Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://gitlife.ru/oschina-mirror/wandali-easy-rpc.git
git@gitlife.ru:oschina-mirror/wandali-easy-rpc.git
oschina-mirror
wandali-easy-rpc
wandali-easy-rpc
master