GPRC 환경은 다중 언어 전화를 구축

一, 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 (); 
        } 
    } 
}

영업 실적

서버가 일시적으로 언어 사용되기 때문에 자, 여기에서 테스트, 난 여기 있어요. 테스트에 다른 언어로 여러분 모두를.

코드 주소 : https://github.com/fanxiaoping/grpc-test

추천

출처www.cnblogs.com/fanxp/p/11408114.html