The easiest way to think about my problem is that I want to show a client a progress bar with a cancel button. We do this today for think clients using SignalR, but now we need something similar for a thick client.
I have a long-running process (typically a minute or two, but might take up to an hour) on my server. I want my thick client to be able to interact with it in two ways: 1) I want the server sending progress updates back to the client, 2) I want the client to be able to cancel the process. There are, of course, a number of ways of doing this. In fact, I've done this in multiple ways myself. So, I'm not looking specifically for a solution. I'm trying to understand which would be the best choice of technology knowing Microsoft's (and the industry's) direction in the future.
Here are three possibilities that spring to mind (feel free to add more):
Traditional WCF (emulating even older "Remoting"): good choice (and would probably be my default) except that it sounds like MS will not be supporting WCF in .NET Core on the server (apart from open-source community-driven libraries).
Azure Service Bus using queues or topics: workable and resilient, but possibly a bit more complexity/effort/code to implement.
gRPC: it seems this is the direction MS would have us go in replacing WCF/Remoting, but it's still only in the previews.
P.S. If you can think of any other good places to post this question, please let me know.