Hello,
we intend to use the Gurux DLMS .NET stack for a system that needs to communicate with a large number of smart meters in parallel.
Our application architecture is fully asynchronous and uses async/await throughout the entire call chain. However, we have not found any indication that the Gurux DLMS stack supports asynchronous communication.
From what we can see, communication appears to be implemented using synchronous/blocking socket calls.
Our concern is the following:
We need to poll a high number of meters concurrently. So, if each TCP connection requires its own dedicated thread due to blocking I/O, this may lead to ThreadPool starvation under load.
We are also concerned about scalability limits if threads cannot be efficiently reused.
Ideally, we would like to avoid creating one thread per TCP connection.
Therefore, I would like to ask:
- Does the Gurux DLMS .NET stack support asynchronous socket communication internally?
- If not, is there a recommended pattern for integrating it into a fully async application?
- Is it possible to use the stack in a non-blocking manner without allocating a dedicated thread per TCP connection?
Our goal is to scale communication to a large number of meters without running into thread exhaustion or unnecessary blocking.
Any help on recommended architecture or best practices would be highly appreciated.
Thank you in advance.
Christian