SoftBand
gRPC-Tools
프로그램 사용방법을 설명합니다.
LKlab SoftBand
LKlab Dev Team
SaaS is the future of software, and that future is now. New paradigm: Move to SaaS and get continuous updates with less complexity–all in a secure environment that fuels agility, insight, and innovation.
회원가입 및 로그인
로그인은 등록된 Email, Password를 입력한 후에 Login합니다. 회원이 아닌 사용자는 회원 등록을 [Register as a new user]를 클릭한 후 회원 등록한 후에 사용할 수 있습니다.
회원 등록은 Email 인증을 거쳐 완료됩니다. 새로 등록한 사용자는 인증한 Email에서 인증 Mail을 수신 받습니다. Mail내용에서 Token(6 자리 숫자)을 복사하여 softband tool의 [Resend email confirmation]을 클릭한 후 Email과 Token 입력 후 Resend를 클릭하여 등록을 완료합니다.
gRPC 코드 생성 방법
gRPC 기반 마이크로서비스를 만드는 방법을 크게 2가지가 있습니다.
Proto file을 입력하여 서비스를 만드는 방법과 Database정보를 사용하여 서비스를 만드는 방법입니다.
서버 프로그램 생성 방법
서버생성파일은 디렉토리명이 XXXServiceLogic 또는 XXXService로 만들어지며, Proto의 디렉토리는 XXXProtos로 만들어집니다.
Service가 포함된 디렉토리와 Protos 디렉토리를 [복사]하여 서버 프로젝트에 [붙여넣기]를 한 후에 GrpcBizServices 디렉토리에 Readme.txt 내용을 따라서 코드를 수정한 후에 프로젝트를 컴파일하면 gRPC 서비스 프로젝트를 완성할 수 있습니다.
클라이언트 프로그램 생성 방법
[Asp.Net Core Web] 또는 [Windows Forms 앱] 처럼 NET7.0 이상 사용하는 프로젝트는 사용가능합니다. C#이 아닌 경우에는 proto 파일을 사용하여 다양한 언어에서 gRPC 호출하여 쉽게 구현 가능합니다.
Client가 포함된 디렉토리와 Protos 디렉토리를 [복사]한 후에 프로젝트에 [붙여넣기] 합니다. GrpcClients 디렉토리에 존재하는 Readme.txt 내용에서 코드를 클라이언트에 적용하기 위한 수정방법을 따라서 적용한 후에 컴파일을 하여, gRPC 서비스를 호출을 실행하여 클라이언트를 완성합니다.
DB gRPC 서비스 생성 방법
DataBase정보를 사용하여 gRPC를 만드는 것은 DB EntityFrameWork와 비슷합니다. DB에 접근하는 CRUD를 gRPC 호출로 이루어지도록 만들어집니다.
이 호출은 Business Logic 마이크로서비스, 또는 직접 클라이언트에서 이루어집니다. 주로 서비스 호출이 트랜젝션이 필요없는 호출일 경우에는 클라이언트가 직접 호출을 하며, 트랜젝션이 필요한 Business Logic일 경우에는 BizLogic을 통해 DB gRPC 호출을 합니다.
메서드 정의 방법
Service [버전명] { } 같은 방식으로 service 문장을 작성하고, { } 안에 클래스 메서드와 동일한 방법으로 메서드 정의를 합니다.
Service PartV1 {
Part InsertData(string key, string name, int count, …);
String GetData(string key);
}
버전명은 proto file Service명과 결합하여 만들어집니다. 서비스 메서드 선언은 interface 선언과 비슷한 형태로 합니다.
Database Version 권장사항
다음은 gRPC 서비스 구현에 권장되는 데이터베이스 버전입니다.
- MSSQL: 2019 이상
- MSSQL-Express: 2019 이상
- MySQL: 2019 이상
- MariaDB: 최신버전
- PostGreSQL: 최신버전
- IBM DB2: V11 이상
- OracleDB: 21c 이상
gRPC 서비스 구조
gRPC 서비스 프로젝트는 다음과 같은 구조를 갖습니다.
- Grpc BindService: 서비스 게시 코드
- Grpc Security Service: 토큰을 사용할 때 사용
- Server LoggerInterceptor: 통신내용을 Interceptor
- Grpc StartUp: 서버 프로그램 실행시에 사용
- Grpc Channel Manager: 클라이언트에서 서비스 Channel 생성
- ServiceBase: 서비스 및 proto 파일 생성시 사용
엔티티 및 메서드 생성 과정
Tables의 하위 노드를 클릭하면 오른쪽 화면에 Entity Name을 수정하고 Generate할 수 있습니다. Generate하면 왼쪽 노드에 Entity Name의 proto파일과 5개의 Base파일이 생성됩니다. Entity Name은 proto파일의 namespace 및 Service명을 생성할 때 적용됩니다.
Generate된 Table을 클릭하면 오른쪽 노드에 텍스트 입력창이 나타납니다. 텍스트 입력창에서 메서드를 정의할 수 있습니다. 메서드 문장 만드는 방법은 Service [버전명] { } 같은 방식으로 작성하며, { } 안에는 클래스 메서드와 동일한 방법으로 메서드 정의를 합니다.
프로젝트 파일 다운로드 및 구성
프로그램에서 사용할 코드를 다운로드하는 방법은 메뉴의 [Project -> Export File]을 클릭하면 proto 파일에 관련된 gRPC 코드가 저장위치에 다운로드 됩니다.
다운로드 파일에는 3개의 Readme.txt 파일이 있습니다. 이 파일들은 서버와 클라이언트 프로젝트를 아주 쉽게 만들어 주는데 사용됩니다. 저장위치의 최상위에 저장된 readme.txt는 클라이언트와 서버 프로그램을 만들 때 사용하는 방법이 설명되어 있습니다.
서버 및 클라이언트 프로젝트 구성 방법
서버인 경우, Visual Studio 2022를 사용하여 새 프로젝트를 [Asp.Net Core gRPC Service] 템플릿으로 생성합니다. Generate 생성된 디렉토리 중에 Services, Protos로 끝나는 디렉토리를 복사한 후 새 프로젝트에 붙여넣기를 합니다. GrpcBizServices 디렉토리의 readme.txt 내용에는 코드를 사용하는 방법이 설명되어 있습니다.
클라이언트 경우, [Asp.Net Core Web] 또는 [Windows Forms 앱]템플릿으로 생성합니다. NET7.0 이상을 사용하는 프로젝트에서 사용할 수 있습니다. C#이 아닌 다른 언어를 사용하는 경우에는 proto 파일을 이용하여 다양한 언어에서 gRPC 호출하여 쉽게 구현이 가능합니다.
NuGet 패키지 설치 및 프로젝트 설정 방법
서비스의 Readme.txt 주요 내용에는 필요한 NuGet package 설치 방법, Proto 파일 위치를 project.csproj에 선언하는 방법, Program.cs 및 launchSettings.json 내용 수정 방법이 포함되어 있습니다. 이 지침을 따라 NuGet 패키지를 설치하고, 프로젝트 설정을 완료하면 gRPC 서비스 프로젝트를 쉽게 구성할 수 있습니다.
클라이언트 생성 방법
클라이언트는 다양한 언어로 만들 수 있지만, 여기서는 C# 클라이언트를 만드는 방법을 설명합니다. Net8.0 Asp.Net Core Web 또는 WinForm으로 프로젝트를 생성한 후, tools에서 생성된 코드를 [복사]하여 [붙여넣기]를 실행하면 클라이언트에서 gRPC 서비스 호출이 쉽게 만들 수 있습니다. ClientLogics 또는 Clients로 끝나는 디렉토리와 Protos로 끝나는 디렉토리가 복사 대상입니다. 복사 후에 GrpcBizClients 디렉토리에 readme.txt 내용에 클라이언트 gRPC를 만들기 위한 내용이 있습니다.
- Nuget package 설치
- Project.csproj에 Protobuf 위치 내용 삽입
- Channel Address 정의 및 시작내용 선언
DB Table Code 생성
왼쪽창에 AspNetUsers Table Node를 클릭하면 오른쪽창에 Entity Name TextBox에 AspNetUsers라는 테이블 이름이 나타납니다. 이 테이블에 대한 gRPC 서비스 CRUD 코드를 생성하려면 [Source Code Generate]의 체크박스를 클릭하면 선택된 Table에 대한 gRPC 통신코드가 만들어집니다.
rpc service 내용을 보면 기본적인 Insert, Update, Delete, GetAll, GetByKey가 생성됩니다. GetAll(), GetByKey(string pk) 명령은 2 가지 Return Type을 제공합니다. DataSet과 비슷한 형태인 Typed DataSet과 같은 EntitySet의 형식과 Json 형식입니다.
Sample Project
Sample project는 클라이언트에서 gRPC 마이크로서비스를 호출하여 PostgreSQL DB Table에 Insert, Update, Delete, GetData를 실행하는 프로그램을 구현합니다. PostgreSQL은 테이블명과 컬럼명이 소문자일 때만 지원합니다.
Database ERD 및 DML
아래는 데이터베이스의 Entity Relationship Diagram(ERD)와 Data Manipulation Language(DML)을 정의하는 SQL 스크립트입니다.
CREATE TABLE partclass(
partclasscode int4 NOT NULL,
partclassname varchar(100) NOT NULL,
CONSTRAINT "PK4" PRIMARY KEY (partclasscode)
);
CREATE TABLE parts(
partcode varchar(30) NOT NULL,
partclasscode int4 NOT NULL,
partname varchar(80) NOT NULL,
...
);
CREATE TABLE sales(
saledate date NOT NULL,
partcode varchar(30) NOT NULL,
quantity decimal(10, 2) NOT NULL,
...
);
ALTER TABLE parts ADD CONSTRAINT "Refpartclass1"
FOREIGN KEY (partclasscode)
REFERENCES partclass(partclasscode);
ALTER TABLE sales ADD CONSTRAINT "Refparts2"
FOREIGN KEY (partcode)
REFERENCES parts(partcode);
SoftBand Tool 실행 및 새 DB 프로젝트 생성
설치된 SoftBand Tool을 열어서 시작합니다.
메뉴에서 [File] → [New DB Project]를 선택하여 새 데이터베이스 프로젝트 생성 창을 엽니다.
프로젝트 설정
Connection String 입력: PostgreSQL 데이터베이스에 연결하기 위한 Connection String을 입력합니다.
Namespace 설정: 프로젝트에 사용할 네임스페이스를 입력합니다.
저장 경로 설정: 프로젝트 파일들이 저장될 디렉토리 경로를 지정합니다.
데이터베이스 연결 테스트
DB Open Test: 설정한 Connection String이 올바른지 확인하기 위해 [DB Open Test] 버튼을 클릭하여 데이터베이스 연결을 테스트합니다. 연결이 성공하면, 다음 단계로 진행할 수 있습니다.
프로젝트 오픈
Open Project: 데이터베이스 연결이 확인되면 [Open Project] 버튼을 클릭하여 SoftBand Tool 내에서 프로젝트를 엽니다.
gRPC 코드 생성
테이블 선택: SoftBand Tool 내에서 왼쪽의 Tables 노드 아래에 위치한 테이블 목록에서 필요한 테이블을 선택합니다.
Entity Name 설정: 선택한 테이블에 대한 Entity Name을 입력합니다. 이 이름은 나중에 수정이 가능하며, gRPC 코드 생성에 사용됩니다.
Source Code Generate: [Source Code Generate] 버튼을 클릭하여 선택한 테이블에 대한 gRPC 코드를 생성합니다.