Hi ihab.zaki,

I quote here a passage of section 1.1.2 of the "General Concepts" document:

"Lightstreamer Data Adapter
The Kernel of Lightstreamer is integrated with any data feed (the source of real-time information) by means of a Data Adapter.
Each Data Adapter is a connector that interfaces Lightstreamer Server with a data source. It receives a flow of data from the back-end systems (information providers, data feeds, databases, application servers, CRMs or any other legacy platforms) and injects it into the Lightstreamer Kernel for controlled delivery to individual users.
The system integrator that implements the Data Adapter is free to use any technology tointegrate the Kernel with the data feed. However, it is preferable to use middleware that provides asynchronous paradigms, such as message-oriented systems, so as not to break the asynchronous chain that goes from the feed to the user's client. In any case, it is also possible to use polling techniques to get updates from the data feed (e.g. polling a file or a database).
Because Lightstreamer is able to manage an arbitrary number of different Data Adapters and Metadata Adapters (grouped together into Adapter Sets), it is possible to integrate heterogeneous sources of information while maintaining a single point of access to the streaming/push channel."
Basically, Lightstreamer architecture allows you many degrees of freedom and a wide option of choices to meet any constraint imposed by a pre-existing back-end.
One of the main choices you have to take is whether to run the Adapter in-process with the Lightstreamer Server or in an external process (on the same machine or on a different machine).
In the first case you are forced to use Java technologies such as: jdbc, JMS, etc ..
In the second case you can choose to implement the Adapter in various languages including Java, .NET, Node.js, and Python (hence leverage each technology available in each of these environments).
In addition, Adapters can be developed in any language to talk to the Lightstreamer Server via plain TCP sockets through the Adapter Remoting Infrastructure (see the specific documentation for full specification of the protocol).

Regards,
Giuseppe