cvs_fif
Hello dear colleagues,
It there a possibility to get somewhere a full example of a stand-alone .NET application connecting to the Lightstreamer?
From the ReadMe.pdf it's clear how to connect the data adapter to the DataProviderServer object, for the metadata provider it should be very similar, but it's not clear at all how to use RequestStream, ReplyStream and NotifyStream properties, WHAT EXACTLY to pass there and how to use these streams then...
Thanks in advance for the reply,
Nikit ZYKOV
Signature Technologies CTO
Alessandro Alinone
Hi Nikit,
The .NET Adapter API uses the Adapter Remoting Infrastructure (ARI) in roder to allow developers to write Lightstreamer Data and Metadata dapters with .NET instead of Java. So you don't need to see any streams, that are transparently handled by the ARI.
Perhaps you are referring to a .NET stand-alone application that should be a CLIENT of Lightstreamer (i.e. receive data from LS and not send data to LS as a feed)?
Cheers
cvs_fif
Hi Alessandro,
I refer to the _server_ application, using only the DLL version of your connector, referred in the readme.pdf as "How to run the .Net adapter from inside your application". It's stated there that I have to set RequestStream, ReplyStream and NotifyStream properties for the DataProviderServer object, and I don't see what to put to these properties and why do I have to use these streams...
Regards,
Nikit
cvs_fif
An other question: what's the port number you're using for your remoting connections?
gbertani
Hi Nikit.
The three stream properties need to be set to three streams connected to the Java remote adapter counterpart. For example, something like this could do the job:
[highlight=csharp]
TcpClient rrSocket= new TcpClient(host, rrPort);
TcpClient notifSocket= new TcpClient(host, notifPort);
server.RequestStream= rrSocket.GetStream();
server.ReplyStream= rrSocket.GetStream();
server.NotifyStream= notifSocket.GetStream();
The three streams must be supplied by you because they could be obtained in any way: network socket streams, local piped input/output streams, or anything else. Moreover, there's no standard way of controlling their connection status and how to recover connection failures: the provided server implementation simply exits on connection drop, but you can override its behaviour by overriding the OnException method.
Best regards,
Gianluca
cvs_fif
Hi Gianluca,
Ok, in this case my question is how to connect these streams, I have look at the properties of the LightStreamer server, right? In the Lightstreamer configuration that you provide in standard, if I run the .NET server and the Lightstreamer server on the same machine, which port numbers do I use for localhost and where these ports are configured in the LightStreamer configuration?
Regards,
Nikit
Alessandro Alinone
The configuration of the TCP ports can be found in the adapters.xml file of the Proxy Adapters (i.e. the NetworkedMetadataProvider and NetworkedDataProvider classesthat are contained in ls-remote-adapter.jar).
For a full example of such configuration please refer to:
Lightstreamer\sdk_for_dotnet-adapters\examples\DotNetStockListDemo\Standalone_Version_Deployment\Deployment_LS\StockList_sockets\adapters.xml
If you prefer to use a pipe commumication, refer to:
Lightstreamer\sdk_for_dotnet-adapters\examples\DotNetStockListDemo\Piped_Version_Deployment\Deployment_LS\StockList_pipes\adapters.xml
cvs_fif
Hi Alessandro,
Do you mean by this that I have to use two server objects: one for data and one for metadata adapter? I see that in the config files the port numbers are different for two cases...
And as I have only one request_reply_port parameter for each, I use for each of two adapters the same port numbers for the request and reply streams with simply two distinct TcpConnect objects, right?
Regards,
Nikit
Alessandro Alinone
Nikit,
Basically you have to create three client sockets (two for the Data Adapter and one for the Metadata Adapter).
Example:
[highlight=csharp]
MetadataProviderServer metadataServer = new MetadataProviderServer();
DataProviderServer dataServer = new DataProviderServer();
TcpClient metadataRRSocket = new TcpClient(host, 6663);
TcpClient dataRRSocket = new TcpClient(host, 6661);
TcpClient dataNotifySocket = new TcpClient(host, 6662);
metadataServer.RequestStream = metadataRRSocket.GetStream();
metadataServer.ReplyStream = metadataRRSocket.GetStream();
dataServer.RequestStream = dataRRSocket.GetStream();
dataServer.ReplyStream = dataRRSocket.GetStream();
dataServer.NotifyStream = dataNotifySocket.GetStream();