Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ABP gRPC Integration #2882

Open
3 tasks
hikalkan opened this issue Feb 21, 2020 · 21 comments
Open
3 tasks

ABP gRPC Integration #2882

hikalkan opened this issue Feb 21, 2020 · 21 comments

Comments

@hikalkan
Copy link
Member

  • Investigate "how ABP framework can help developers on gRPC API creation".
  • Implement gRPC endpoints for all the modules.
  • Add a starting point for the startup templates.
@maliming
Copy link
Member

https://github.com/Cysharp/MagicOnion Looks like a good class library.

@hikalkan
Copy link
Member Author

Thanks @maliming it seems a very good library. However it seems a real-time communication system. With this issue, we only want a standard gRPC implementation.

@mehmetuken
Copy link
Contributor

https://github.com/Cysharp/MagicOnion Looks like a good class library.

This library using without .proto files and only use .net apps beetwen. See this issue Cysharp/MagicOnion#159 (comment)
I think create shared .proto files project each module. It's helpfull any language implement and communicate each other.

@hikalkan hikalkan modified the milestones: 2.2, 2.3, 2.4 Mar 3, 2020
@hikalkan hikalkan assigned hikalkan and unassigned gterdem Mar 5, 2020
@hikalkan hikalkan modified the milestones: 2.4, 2.5 Mar 18, 2020
@hikalkan hikalkan modified the milestones: 2.5, 2.6, 2.8 Apr 5, 2020
@geffzhang
Copy link

@hikalkan hikalkan modified the milestones: 2.8, 2.9 May 8, 2020
@hikalkan
Copy link
Member Author

@hikalkan
Copy link
Member Author

No meaning to implement it if it is not supported by Azure and IIS. We are planning to implement Blazor UI to server communication via gRPC but this is a huge restriction.

@hikalkan
Copy link
Member Author

We are deferring this issue.

We were planning to use the gRPC endpoints with the Blazor UI, so wanted to work on this first. However, I see that gRPC with AspNet Core & Blazor is not so production ready. Here, the reasons:

Warning at https://docs.microsoft.com/en-us/aspnet/core/grpc/basics

image

Warning/Information at https://docs.microsoft.com/en-us/aspnet/core/grpc/browser

image

And some others...

image

So, instead of using gRPC endpoints, we will try to use the existing REST endpoints with the Blazor UI. This will speed up our development for the Blazor UI.

Anyone wants to use gRPC in their applications, want to create gRPC endpoints for their microservices, they can still use it. We've prepared a sample application: https://github.com/abpframework/abp-samples/tree/master/GrpcDemo

@hikalkan hikalkan modified the milestones: 2.9, backlog May 23, 2020
@geffzhang
Copy link

gRPC-Web for .NET now available https://devblogs.microsoft.com/aspnet/grpc-web-for-net-now-available/

@hikalkan
Copy link
Member Author

@geffzhang that's great! As I can see, it solves most of the problems. We will check it deeply after v3.0.

@expcat
Copy link

expcat commented Aug 22, 2020

https://github.com/protobuf-net/protobuf-net.Grpc
It is a code-frist base on grpc-dotnet

@kegumx
Copy link

kegumx commented Oct 13, 2020

+1

1 similar comment
@rafaelgfirmino
Copy link

+1

@realZhangChi
Copy link

Is there any news?😀

@barnybadzoo
Copy link

Microsoft switched from ocelot to envoy because of the grpc feature.. see here: https://docs.microsoft.com/de-de/dotnet/architecture/microservices/multi-container-microservice-net-applications/implement-api-gateways-with-ocelot
Any further plans also to switch to envoy ? or what is on roadmap for grpc ?

@leonkosak
Copy link
Contributor

@hikalkan any updates on this topic?

@manishkgupta02
Copy link

+1

@fanslead
Copy link

any updates on this topic?

@gterdem
Copy link
Contributor

gterdem commented Oct 12, 2021

There is already a gRPC integration demo that you can check. However if you want to use gRPC instead of http within the framework; that'll take some more time.

We've implemented Static Client Proxy generation so that microservice gateways are no longer referencing Http.Api layers of other microservices to locate endpoints. This will allow us using any other gateway (like envoy etc). With this feature enabled, we've also plans for sample microservices communicating with each other using gRPC so that we can check if we need to make improvements in framework for it.

TLDR: It is in our backlog, we are moving slowly but steadily :)

@RainingNight
Copy link

https://github.com/protobuf-net/protobuf-net.Grpc It is a code-frist base on grpc-dotnet

Looks better.

@hikalkan
Copy link
Member Author

Hi all,

I've created two articles for ABP & gRPC:

I see that using gRPC in an ABP-based solution is straightforward. Currently, we don't think to implement any specific integration package. However, I've taken a lot of notes while investigating .NET's gRPC integration and preparing these articles. In the future, we will probably make some built-in integrations to make it even easier. Some of my notes:

  • We can provide packages to automatically register services in the server & client side.
  • We can also reduce the boilerplate code while creating channels and consuming services.
  • We may provide some services to create and configure channels in a central place.
  • We can provide client-side proxy generation with also Dapr integration.
  • We may somehow automatically add tenant id, current culture, correlation id, authorization token... to gRPC requests.

However, all these are additional ABP benefits and currently there is no difference of using gRPC in ABP by comparing in with a .NET solution without ABP.

@hikalkan hikalkan changed the title Create a design to integrate gRPC to the ABP Framework & all modules ABP gRPC Integration Sep 19, 2022
@hikalkan hikalkan removed their assignment Sep 3, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests