ฉันสร้างส่วนหัว C ++ 17 ใหม่เท่านั้น-> json-rpc-cxx
ผู้เชี่ยวชาญ
เฟรมเวิร์กนี้ให้การรองรับการสนับสนุน Cross Platform JSON-RPC (การเรียกขั้นตอนระยะไกล) สำหรับ C ++ มันเข้ากันได้กับ JSON-RPC 2.0 & 1.0 อย่างสมบูรณ์

5 เหตุผลที่ดีในการใช้ Libjson-RPC-CPP ในโครงการ RPC ถัดไปของคุณ
เหตุผลที่ดีอื่น ๆ ในการใช้ libjson-rpc-cpp
make test
Debian (ยืด) และ Ubuntu (15.10 หรือใหม่กว่า)
sudo apt-get install libjsonrpccpp-dev libjsonrpccpp-toolsฟีดอร่า
sudo dnf install libjson-rpc-cpp-devel libjson-rpc-cpp-toolsซุ้มประตู
สำหรับ Arch Linux มี pkgbuild ที่มีให้ใน AUR
sudo aura -A libjson-rpc-cppGentoo Linux
sudo emerge dev-cpp/libjson-rpc-cppmac os x
สำหรับ OS X มีแพ็คเกจ Brew:
brew install libjson-rpc-cppหน้าต่าง
มีแพ็คเกจรวบรวมพร้อมใช้งานที่นี่ เพียงดาวน์โหลด Execute the Installer Exe
Unix
สำหรับระบบที่ใช้ Debian และ Arch GNU/Linux การพึ่งพาทั้งหมดมีให้ผ่านตัวจัดการแพ็คเกจ สำหรับ OS X การพึ่งพาทั้งหมดมีอยู่ใน Brew
git clone https://github.com/cinemast/libjson-rpc-cpp.git
mkdir -p libjson-rpc-cpp/build
cd libjson-rpc-cpp/build
cmake .. && make
sudo make install
sudo ldconfig # only required for linuxแค่ไหน!
หากคุณไม่พอใจกับมันเพียงแค่ถอนการติดตั้งออกจากระบบของคุณโดยใช้ (ภายใน Build the Directory):
sudo make uninstallตัวเลือกการสร้าง:
การกำหนดค่าเริ่มต้นควรจะดีสำหรับระบบส่วนใหญ่ แต่นี่คือธงรวบรวมที่มีอยู่:
-DCOMPILE_TESTS=NO การปิดการใช้งานชุดทดสอบหน่วย-DCOMPILE_STUBGEN=NO การปิดใช้งานการสร้าง Stubgenerator-DCOMPILE_EXAMPLES=NO ตัวอย่างปิดใช้งาน-DHTTP_SERVER=NO ปิดใช้งานเว็บเซิร์ฟเวอร์ libmicrohttpd-DHTTP_CLIENT=NO ปิดใช้งานไคลเอนต์ Curl-DREDIS_SERVER=NO การปิดใช้งานตัวเชื่อมต่อเซิร์ฟเวอร์ Redis-DREDIS_CLIENT=NO ปิดใช้งานตัวเชื่อมต่อไคลเอ็นต์ Redis-DUNIX_DOMAIN_SOCKET_SERVER=YES เปิดใช้งานตัวเชื่อมต่อเซิร์ฟเวอร์ซ็อกเก็ต UNIX ของ UNIX-DUNIX_DOMAIN_SOCKET_CLIENT=YES เปิดใช้งานตัวเชื่อมต่อไคลเอ็นต์ซ็อกเก็ตโดเมน Unix-DFILE_DESCRIPTOR_SERVER=NO ปิดใช้งานตัวเชื่อมต่อเซิร์ฟเวอร์ Descriptor File-DFILE_DESCRIPTOR_CLIENT=NO ปิดใช้งานตัวเชื่อมต่อไคลเอ็นต์ Descriptor File-DTCP_SOCKET_SERVER=NO ปิดการใช้งานตัวเชื่อมต่อเซิร์ฟเวอร์ SOCKET TCP-DTCP_SOCKET_CLIENT=NO ปิดการใช้งานขั้วต่อไคลเอ็นต์ซ็อกเก็ต TCP ตัวอย่างนี้จะแสดงวิธีที่ง่ายที่สุดในการสร้างเซิร์ฟเวอร์ RPC และไคลเอนต์ หากคุณต้องการเซิร์ฟเวอร์เท่านั้นให้ละเว้นขั้นตอนที่ 4 หากคุณต้องการลูกค้าเท่านั้นให้ละเว้นขั้นตอนที่ 3 คุณสามารถค้นหาทรัพยากรทั้งหมดของตัวอย่างนี้ในไดเรกทอรี src/examples ของที่เก็บนี้
[
{
"name" : " sayHello " ,
"params" : {
"name" : " Peter "
},
"returns" : " Hello Peter "
},
{
"name" : " notifyServer "
}
]ประเภทของค่าส่งคืนหรือพารามิเตอร์ถูกกำหนดโดยตัวอักษรที่กำหนดไว้ ต้นขั้วที่สร้างขึ้นจะใช้ประเภท "returns" เพื่อตรวจสอบการตอบสนอง ในตัวอย่างนี้คุณสามารถดูวิธีการระบุวิธีการและการแจ้งเตือน
โทรหา jsonrpcstub:
jsonrpcstub spec.json --cpp-server=AbstractStubServer --cpp-client=StubClient
mkdir -p gen
mv abstractstubserver.h gen
mv stubclient.h gen สิ่งนี้สร้าง AbstractStubServer และคลาส StubClient และย้ายไปยังโฟลเดอร์ gen
ขยายต้นขั้วเซิร์ฟเวอร์นามธรรมและใช้วิธีการเสมือนจริง (นามธรรม) ทั้งหมดที่กำหนดไว้ใน spec.json
ดู src/ตัวอย่าง/stubserver.cpp
ในฟังก์ชั่นหลักเซิร์ฟเวอร์คอนกรีตถูกสร้างอินสแตนซ์และเริ่มต้น นั่นคือทั้งหมดสำหรับเซิร์ฟเวอร์ ไคลเอนต์ที่สอดคล้องกับ JSON-RPC 2.0 ใด ๆ สามารถเชื่อมต่อกับเซิร์ฟเวอร์ของคุณได้
รวบรวมเซิร์ฟเวอร์ด้วย:
g++ stubserver.cpp -ljsoncpp -lmicrohttpd -ljsonrpccpp-common -ljsonrpccpp-server -o sampleserverดู src/ตัวอย่าง/stubclient.cpp
รวบรวมลูกค้าด้วย:
g++ stubclient.cpp -ljsoncpp -lcurl -ljsonrpccpp-common -ljsonrpccpp-client -o sampleclientโปรดดูที่การสนับสนุน
คุณยังสามารถบริจาคผ่าน
Changelogs สามารถพบได้ที่นี่
เราพยายามอย่างเต็มที่เพื่อให้ API/ABI มีเสถียรภาพเพื่อป้องกันปัญหาเมื่ออัปเดตเฟรมเวิร์กนี้ สามารถพบรายงานความสมบูรณ์แบบได้ที่นี่
เฟรมเวิร์กนี้ได้รับใบอนุญาตภายใต้ MIT การพึ่งพาห้องสมุดทั้งหมดนี้ได้รับอนุญาตภายใต้ใบอนุญาตที่เข้ากันได้ของ MIT
หากคุณใช้ห้องสมุดนี้และพบว่ามีประโยชน์ฉันจะยินดีมากถ้าคุณแจ้งให้เราทราบ