成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

laravel-hprose(rpc框架)

incredible / 1512人閱讀

摘要:基于開發(fā)的擴展版本要求安裝或者編輯配置在注冊和無需手動注冊配置文件監(jiān)聽地址列表,字符串格式數(shù)組是否啟用方法,開啟關閉,開啟后將自動對外發(fā)布一個遠程調(diào)用方法客戶端可調(diào)用創(chuàng)建配置和路由文件應用根目錄下的目錄下會自動生成新文件

Laravel-hprose

基于 hprose/hprose-php 開發(fā)的Laravel擴展:laravel-hprose

版本要求
Laravel>=5.2
安裝
composer require "zhuqipeng/laravel-hprose:v1.0-alpha"

或者編輯composer.json

"require": {
    "zhuqipeng/laravel-hprose": "v1.0-alpha"
}
配置

在 config/app.php 注冊 ServiceProvider 和 Facade (Laravel 5.5 無需手動注冊)

"providers" => [
  // ...

  ZhuqipengLaravelHproseServiceProvider::class,
]
"aliases" => [
  // ...

  "LaravelHproseMethodManage" => ZhuqipengLaravelHproseFacadesHproseMethodManage::class,
]

配置.env文件

監(jiān)聽地址列表,字符串json格式數(shù)組

HPROSE_URIS=["tcp://0.0.0.0:1314"]

是否啟用demo方法,true開啟 false關閉,開啟后將自動對外發(fā)布一個遠程調(diào)用方法 demo

客戶端可調(diào)用:$client->demo()

HPROSE_DEMO=true // true or false

創(chuàng)建配置路由文件:

php artisan vendor:publish --provider="ZhuqipengLaravelHproseServiceProvider"
應用根目錄下的config目錄下會自動生成新文件hprose.php

應用根目錄下的routes目錄下會自動生成新文件rpc.php

使用 路由
laravel 路由的用法相似,基于 dingo/api 的路由代碼上做了簡單修改

路由文件

routes/rpc.php

添加路由方法

LaravelHproseRouter::add(string $name, string|callable $action, array $options = []);

string $name 可供客戶端遠程調(diào)用的方法名

string|callable $action 類方法,格式:AppControllersUser@update

array $options 是一個關聯(lián)數(shù)組,它里面包含了一些對該服務函數(shù)的特殊設置,詳情請參考hprose-php官方文檔介紹 鏈接

發(fā)布遠程調(diào)用方法 getUserByNameupdate

LaravelHproseRouter::add("getUserByName", function ($name) {
    return "name: " . $name;
});

LaravelHproseRouter::add("userUpdate", "AppControllersUser@update", ["model" => HproseResultMode::Normal]);

控制器


客戶端調(diào)用

$client->getUserByName("zhuqipeng");
$client->userUpdate("zhuqipeng");

路由組

LaravelHproseRouter::group(array $attributes, callable $callback);

array $attributes 屬性 ["namespace" => "", "prefix" => ""]

callable $callback 回調(diào)函數(shù)

LaravelHproseRouter::group(["namespace" => "AppControllers"], function ($route) {
    $route->add("getUserByName", function ($name) {
        return "name: " . $name;
    });

    $route->add("userUpdate", "User@update");
});

客戶端調(diào)用

$client->getUserByName("zhuqipeng");
$client->userUpdate("zhuqipeng");

前綴

LaravelHproseRouter::group(["namespace" => "AppControllers", "prefix" => "user"], function ($route) {
    $route->add("getByName", function ($name) {
        return "name: " . $name;
    });

    $route->add("update", "User@update");
});

客戶端調(diào)用

$client->user->getByName("zhuqipeng");
$client->user->update("zhuqipeng");
// 或者
$client->user_getByName("zhuqipeng");
$client->user_update("zhuqipeng");
啟動服務
php artisan hprose:socket_server

文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉載請注明本文地址:http://systransis.cn/yun/29302.html

相關文章

  • RPC框架是啥?

    摘要:知乎的點贊,應該還是可以參考的。除了網(wǎng)絡通信,還需要有高效的序列化框架,以及一種尋址方式,如果是帶會話狀態(tài)的調(diào)用,還需要有會話的狀態(tài)保持的功能。一般來說,框架實現(xiàn)的架構原理都是類似的。服務端響應主要是服務端業(yè)務邏輯實現(xiàn)。 本博客 貓叔的博客,轉載請申明出處 在我剛剛了解分布式的時候,經(jīng)常對RPC和分布式有些混淆,甚至一直以為兩者對等,所以我們先看看他們有什么區(qū)別? RPC實現(xiàn)了服務消費...

    xietao3 評論0 收藏0
  • RPC框架是啥?

    摘要:知乎的點贊,應該還是可以參考的。除了網(wǎng)絡通信,還需要有高效的序列化框架,以及一種尋址方式,如果是帶會話狀態(tài)的調(diào)用,還需要有會話的狀態(tài)保持的功能。一般來說,框架實現(xiàn)的架構原理都是類似的。服務端響應主要是服務端業(yè)務邏輯實現(xiàn)。 本博客 貓叔的博客,轉載請申明出處 在我剛剛了解分布式的時候,經(jīng)常對RPC和分布式有些混淆,甚至一直以為兩者對等,所以我們先看看他們有什么區(qū)別? RPC實現(xiàn)了服務消費...

    didikee 評論0 收藏0
  • RPC框架原理及從零實現(xiàn)系列博客(一):思路篇

    摘要:等之所以支持跨語言,是因為他們自己定義了一套結構化數(shù)據(jù)存儲格式,如的,用于編解碼對象,作為各個語言通信的中間協(xié)議。 前段時間覺得自己一直用別人的框架,站在巨人的肩膀上,也該自己造造輪子了 一時興起 就著手寫起了RPC框架 這里寫了系列博客拿給大家分享下 這篇是開篇的思路篇 項目最終的代碼放在了我的github上https://github.com/wephone/Me... 歡迎sta...

    tracy 評論0 收藏0
  • 分布式下的遠程通信技術(RPC)的一些理解

    摘要:都是分開部署,單獨上線的。序列化畢竟是遠程通信,需要將對象轉化成二進制流進行傳輸。服務化架構的演進架構當業(yè)務規(guī)模很小時,將所有功能都不熟在同一個進程中,通過雙機或者負載均衡器實現(xiàn)負債分流此時,分離前后臺邏輯的架構是關鍵。 showImg(https://segmentfault.com/img/bVbiI2F?w=2250&h=1500); 前言 為什么需要RPC,而不是簡單的HTTP...

    EastWoodYang 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<