В рамках imi-фреймворка происходит интеграция разработки Hprose-сервисов. В настоящее время поддерживается взаимодействие по протоколам TCP и Unix Socket.
Планируется реализация следующих функций:
Данный проект можно установить с помощью composer. Используется автоматическое правило загрузки psr-4. Для этого в файле composer.json необходимо добавить следующий код:
{
"require": {
"imiphp/imi-hprose": "^1.2"
}
}
Затем выполняется команда composer update для установки.
В файле config/config.php проекта производится настройка:
[
'components' => [
// 引入RPC组件以及本组件
'Rpc' => 'Imi\Rpc',
'Hprose' => 'Imi\Hprose',
],
]
Если используется главный сервер:
[
// 主服务器配置
'mainServer' => [
'namespace' => 'XXX\MainServer', // 你的命名空间
'type' => 'Hprose', // 必须设为 Hprose
'port' => 8080,
],
]
Если применяется подчинённый сервер:
[
// 子服务器(端口监听)配置
'subServers' => [
// 子服务器名
'XXX' => [
'namespace' => 'XXX\Hprose', // 你的命名空间
'type' => 'Hprose', // 必须设为 Hprose
'port' => 50001,
]
],
]
Imi\Rpc\Controller\RpcController
.
\Imi\Rpc\Route\Annotation\RpcController
.
Использование:
@RpcController
Без префикса:
@RpcController('a_b_')
\Imi\Rpc\Route\Annotation\RpcAction
.
Не имеет параметров.
\Imi\Hprose\Route\Annotation\HproseRoute
.
Параметры:
Документация Hprose: https://github.com/hprose/hprose-php/wiki/06-Hprose-%E5%AE%A2%E6%9C%8D%E5%99%A8#addfunction-%E6%B3%95
[
'pools' => [
'Соединение пула' => [
'sync' => [
'pool' => [
'class' => \Imi\Rpc\Client\Pool\RpcClientSyncPool::class,
'config' => [
// Конфигурация общего пула, см. документацию
],
],
'resource' => [
'clientClass' => \Imi\Hprose\Client\HproseSocketClient::class,
'uris' => 'tcp://127.0.0.1:50001', // Адрес подключения
// Другая конфигурация
]
],
'async' => [
'pool' => [
'class' => \Imi\Rpc\Client\Pool\RpcClientCoroutinePool::class,
'config' => [
// Конфигурация общего пула, см. документацию
],
],
'resource' => [
'clientClass' => \Imi\Hprose\Client\HproseSocketClient::class,
'uris' => 'tcp://127.0.0.1:50001', // Адрес подключения
// Другая конфигурация
]
],
],
],
'rpc' => [
'defaultPool' => 'Имя пула соединения', // Имя пула по умолчанию
],
]
Код вызова:
\Imi\Rpc\Client\Pool\RpcClientPool::getService('Имя службы')->имя метода(параметр);
Вызов аннотации:
class Test
{
/**
* @RpcClient()
*
* @var \Imi\Rpc\Client\IRpcClient
*/
protected $rpcClient;
/**
* @RpcService(serviceName="Имя службы")
*
* @var \Imi\Rpc\Client\IService
*/
protected $xxxRpc;
public function aaa()
{
// Метод один
$this->rpcClient->getService('Служба')->имя метода(параметр);
// Способ два
$this->xxxRpc->имя метода(параметр);
}
}
QQ группа: 17916227 , если у вас есть вопросы, вам помогут ответить и решить их.
imi-hprose следует лицензии MIT и предоставляется бесплатно для использования.
Открытый исходный код не предназначен для получения прибыли, сколько бы то ни было — это выражение признательности, жизнь непроста, так что всё зависит от случая…
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )