一, golang
1 protocal 버퍼 설치
https://github.com/google/protobuf/releases 설치 패키지를 다운로드
나는 여기에서 볼 감압 창 후 protoc.exe입니다
마지막으로, 환경 변수를 설정할 수 있습니다
2, 설치 golang의 protobuf
얻을 -u github.com/golang/protobuf/proto // golang protobuf库갈 갈 수 -u github.com/golang/protobuf/protoc-gen-go // protoc --go_out工具
3, 설치가 gRPC-이동
google.golang.org/grpc 가서
다운로드 할 수 없습니다, 다음 https://github.com/grpc/grpc-go 다운로드 이동
그럼 코드를 쓰기 시작, 우리는 helloworld를 테스트하기 위해 인터넷을 사용합니다
4 프로젝트 구조
서버에 대한 golang, 다른 언어는 고객 서비스 측면이다.
helloworld.proto
구문 = "proto3"; 패키지 helloworld를; // 인사 서비스 정의. 서비스 손님 맞이 도우미가 { // 인사말 전송 의 sayHello (HelloRequest) 반환 (HelloReply) RPC를 {} } // 사용자 이름을 포함하는 요청 메시지. 메시지 HelloRequest { 문자열 이름 = 1; }은 인사말 포함하는 응답 메시지 // 메시지 HelloReply { 스트링 메시지 = 1; }
컴파일러 명령을 실행
protoc --go_out = 플러그인 = grpc :. helloworld.proto
이 파일 helloworld.pb.go을 생성합니다
서버
기본 패키지 (가져 오기 "컨텍스트" "google.golang.org/grpc" PB "grpc 테스트 / 서버 / 프로토 / helloworld를"은 "로그" ""순 ) (CONST = PORT : 50001 "을" ) 서버 구조체를 입력을 {} FUNC (S의 * 서버)의 sayHello (* pb.HelloRequest에서 CTX context.Context) (* pb.HelloReply, 오류) { log.Println ( "요청", in.Name) 반환 및 pb.HelloReply {메시지 : "안녕하세요" + in.Name}, 전무 } (FUNC 주) { ERR, LIS = net.Listen ( "TCP", PORT) ERR = 전무는 {경우! log.Fatalf는 ( "수신하지 못했습니다 : %의 V", ERR) } S : = grpc.NewServer () PB.RegisterGreeterServer (S, 및 서버 {}) 로그인합니다.에 println ( "RPC 서비스가 열려") s.Serve (LIS를) }
Kefuduan
기본 패키지 가져 오기 ( "컨텍스트" "google.golang.org/grpc" PB "grpc 테스트 / 클라이언트 / 프로토 / helloworld를" "로그인" "OS" ) CONST ( 주소 = "로컬 호스트 : 50001" ) FUNC 주 () { CONN, ERR : = grpc.Dial (주소, grpc.WithInsecure ()) 잘못 경우 = 전무 {! log.Fatalf는 ( "연결되지 않았다 %의 V"를, ERR) } conn.Close () 연기 : =의 PB C를. NewGreeterClient (CONN) 이름 = "LIN" 경우 LEN (os.Args)> 1 { NAME = os.Args [1] } , R, ERR = c.SayHello (context.Background (), {pb.HelloRequest 명 : 이름}) ERR 경우!= 전무 { log.Fatalf ( "인사 없습니다 : %의 V"를, ERR) } log.Println (r.Message) }
영업 실적
두, nodejs
(1) 직접 설치된 NPM
NPM grpc-도구를 설치 --save-DEV NPM은 설치 구글 - protobuf --save NPM grpc의 --save 설치
./node_modules/grpc-tools/bin, 당신은 두 개의 파일이 protoc.exe 및 grpc_node_plugin.exe 찾을 수
2, 컴파일러 명령을 실행
./node_modules/grpc-tools/bin/protoc --js_out = import_style = commonjs, 진 :. ./ --plugin = protoc 세대-grpc = / node_modules / grpc-도구 / 빈 / grpc_node_plugin.exe --grpc_out = . helloworld.proto
그것은 helloworld_grpc_pb.js helloworld_pb.js이 개 JS 파일을 생성
3 client.js
var에 grpc = 필요 ( 'grpc'); VAR 메시지 =은 ( './ 프로토 / helloworld를 / helloworld_pb.js')을 필요로; VAR 서비스 =은 ( './ 프로토 / helloworld를 / helloworld_grpc_pb.js')이 필요 VAR 요청 = 새로운 messages.HelloRequest (); request.setName ( '세계'); var에 클라이언트 = 새로운 services.GreeterClient ( '로컬 호스트 : 50001', grpc.credentials.createInsecure () ); client.sayHello (요청 기능 (ERR 데이터) { 경우 (ERR) { console.error (ERR) } CONSOLE.LOG (데이터); })
4, 영업 실적
세, C 번호 코어
1, 필요한 패키지를 설치합니다
설치 패키지 Grpc 설치 패키지 Google.Protobuf Grpc.Tools - 패키지 설치
2, 컴파일러 명령을 실행
helloworld를 HelloWorld를 --csharp_out protoc.exe -I HelloWorld로 / helloworld를 --grpc_out helloworld.proto --plugin = protoc 겐 - grpc = grpc_csharp_plugin.exe
두 파일은 Helloworld.cs HelloworldGrpc.cs 발생
3, 테스트 코드
시스템을 사용하여; Grpc.Core을 사용함; 하여 HelloWorld을 사용함; 네임 스페이스 grpc { 클래스 프로그램 { 정적 무효 메인 (문자열 []에 args) { 채널 채널 = 새로운 채널 ( "127.0.0.1:50001", ChannelCredentials.Insecure); var에 클라이언트 = 새로운 Greeter.GreeterClient (채널); VAR 응답 = client.SayHello (새 HelloRequest {이름 = "린"}); Console.WriteLine ( "来自"+ reply.Message); channel.ShutdownAsync () 대기 ().; Console.WriteLine ( "任意键退出..."); Console.ReadKey (); } } }
영업 실적
서버가 일시적으로 언어 사용되기 때문에 자, 여기에서 테스트, 난 여기 있어요. 테스트에 다른 언어로 여러분 모두를.