I need an affordable way to expose on-premise C# REST interfaces (behind dynamic IP, corporate firewalls) to the web without using WCF
.
We have a number of on-premise C# Windows services that are behind firewalls and dynamic IP addresses. I have no access to forward ports or change routing tables. The services access local devices.
We currently use Azure Service Bus Relays with WCF (https://learn.microsoft.com/en-us/azure/azure-relay/relay-what-is-it#wcf-relay) to communicate with these services from a central location and a number of distributed web clients written in Java.
The services are written in C# and use the standard Microsoft Azure Service Bus relay through basicHttpRelayBinding
and WebServiceHost
in WCF
. Most of the services have a REST
interface which local on-premise devices use and must be maintained.
With support for WCF waning, we looked at migrating these services to use HybridConnections
through the same Azure Service Bus Relay. This works great, but unfortunately the costs have blown out. We use a single Service Bus Relay for all out current services (around 100), and pay for the relay and for messaging at a total cost of around $50 AUD a month.
Using Hybrid Connections, the cost works out to be around $1600-2000 AUD a month for the same functionality - $16 per listener (on-premise service) plus messaging. This is unsustainable for this project.
I've looked at Core WCF https://github.com/CoreWCF/CoreWCF, but it feels a bit like trying to hack around to use old technology rather than moving forward with Microsoft.
What other technology options do I have for connecting disparate on-premise servers, with ever changing dynamic IP and firewall constraints to central web services and web clients?
It doesn't have to be Azure, but I need to keep with a secure, well supported, .Net 8+ compatible solution.
I don't think you can solve this problem just by simply looking for a cloud service.
First of all, the platform you choose needs to meet your functional needs and the needs of the customers you are connected to. Then the issues you have to consider are the local server quality and charging policies. I think you can take a look at AWS or use AWS with Azure.
AWS has developed and integrated a lot of tools, and you can use tools such as Redis, RabbitMQ, ZeroMQ, ActiveMQ, NSQ, etc.
AWS supports .NET 8. This is the relevant introductory document: .NET 8 Support on AWS Guide
This document describes how the two platforms compare: AWS to Azure services comparison
At the same time, I think this post is very well introduced and more suitable for your needs: Azure Service Bus equivalent for AWS
Finally, I would like to mention that the role of CoreWCF is to migrate WCF to .NET Core. Since a lot of the previous WCF stuff in .Net Core couldn't be used, Corewcf was needed.