안녕하세요.
채팅과 같이 실시간 양방향 통신을 하는 웹앱을 구축할 때에는
원본 기술인 웹 소켓을 사용하던가, SignalR과 같은 기술을 사용하여 편리하게 구축이 가능합니다.
gRPC는 Web API를 만들 때 도움이 되는데요.
gRPC와 ASP.NET Web API가 같은 식으로 API를 구현할 때 사용됩니다.
실시간: Web Socket, SignalR, ...
REST: ASP.NET Core Web API, gRPC
여기서, Web API는 JSON으로 데이터를 주고 받지만, gRPC는 바이너리로 데이터를 주고 받기에 속도면에서 월등하게 gRPC가 성능이 좋습니다.
다만,
ASP.NET Core 3.0 소개 관련 강의를 진행할 때 gRPC를 ASP.NET Core 3.0에서 편하게 사용할 수 있는 주제로 다뤘지만,
그 이후로, 국내에서 닷넷 분야에서 gRPC를 사용하는 부분을 따로 만나보질 못했습니다.
심지어는 한국 마이크로소프트 쪽에서도 gRPC를 다루는 분은 못 본 것 같습니다.
정리해보면,
gRPC는 REST처럼 Web API와 비슷한 형태의 이기종간의 데이터를 주고 받는 시스템을 구축할 때 사용하고,
SignalR은 채팅과 같은 실시간 양방향 통신을 구현할 때 사용합니다.
그래서, 실시간 처리를 위한 시스템 구축을 위한다면,
웹소켓 또는 SignalR을 사용하고,
Web API 서비스를 위한다면, gRPC 또는 Web API를 사용하면 좋을 것 같습니다.
참고로, 강의에서는 gRPC도 닷넷 3.0 이후로는 편하게 사용할 수 있습니다의 관점으로 사용했지,
실제 서비스 구현은 성능은 조금 떨어지지만, 많은 호환(지금까지 많이 사용하고 있는)을 위해서 ASP.NET Core Web API를 중점으로 사용합니다.
감사합니다.
On 2021-08-08 오전 12:50:00, '조은현' wrote:
안녕하세요!
Blazor 강의를 듣는 중에 궁금한게 생겨서 강의를 중간에 쉬면서(?) 며칠 밤새가며 실시간 웹 서비스를 구축해보고 있는데요!
처음 강의 소개에서 소개해주신 Grpc를 바탕으로 서버를 구축하고 있는 도중 Signal-R이 더 적합할 수 있다는 Microsoft 문서를 보게 되었습니다.
제가 하고 싶은 것은 DB의 Table 값을 서버에서 0.1초마다 받아와 이것을 Streaming하여 Client 측에 보여주고 싶은 것인데요.
선생님께서 예전(2014년 정도)에 Signal-R의 양방향 통신에 대해서 강연을 진행하셨더라구요.
또 현재 Blazor 강의에서 제공한 pdf파일을 보면 제가 올린 사진과 같이 GRPC를 이용하시는 것을 볼 수 있는데 Signal-R 대신 GRPC를 이용하신 이유를 알 수 있을까요?
Signal-R과 GRPC의 차이점과 어떠한 상황에서 이 둘을 구분해서 사용해야 할지 알고 싶습니다.