Я написал клиент-серверное приложение на C #. Серверное приложение представляет собой службу Windows и в основном используется для чтения данных с пользовательского устройства. Клиентское приложение представляет собой форму Windows, пользовательский интерфейс отображает только состояние сервера и отправляет ему команду (для примера: GoOnline для подключения к устройству, GoOffline и т. Д.).
Для обмена данными между приложениями я использовал .NET Remoting; Таким образом, у нас есть библиотека, на которую ссылаются как в приложении, так и когда пользователь отправляет команду через форму Windows (клиент), она запускает событие, которое будет замечено на сервере. Обмен данными между приложениями работает, но я думаю, что это сложно написать таким образом. Есть ли у вас какие-либо предложения о том, как достичь моей цели с помощью простого и удобного кода? Я думаю, что лучший способ (но я не знаю, возможно ли это сделать ...) - создать ссылку на один и тот же объект внутри приложения и читать / записывать непосредственно состояние переменных.
В основном:
// Remote Object (Library)
bool goOnline;
public bool GoOnline
{
get { return goOnline; }
set { goOnline = value; }
}
// --------------------------------------
// Client side
if (... conditions ...)
RemoteObj.GoOnline = true;
// --------------------------------------
//Server side
System.Timers.Timer tmrScheduler = new System.Timers.Timer();
tmrScheduler.AutoReset = true;
tmrScheduler.Enabled = true;
tmrScheduler.Interval = 1000;
tmrScheduler.Elapsed += tmrScheduler_Elapsed;
private void tmrScheduler_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
if (RemoteObj.GoOnline)
{
// Start communication with device
// When device is ONLINE, RemoteObj.GoOnline = false and send to client connection OK
}
}
Можно ли читать свойства "напрямую" без использования событий со стороны обоих приложений? Другая идея или предложение?