Вызов открытого метода для сервиса окон

Я выбрал бы, если оператор ради ясности и соглашения, хотя я уверен, что некоторые не согласились бы. В конце концов, Вы желаете сделать что-то if, некоторое условие верно! Наличие переключателя с одним действием кажется немногим... unneccesary.

6
задан wattostudios 30 April 2012 в 14:29
поделиться

4 ответа

Короче говоря, невозможно напрямую вызывать функции в другом процессе. Процесс, содержащий функцию, к которой вы хотите получить доступ (в данном случае ваша служба Windows), должен будет предоставить ее через своего рода IPC (межпроцессное взаимодействие). Какой тип IPC вы выберете, вероятно, будет зависеть от того, насколько сложным должно быть взаимодействие, а также от того, является ли «клиент» приложением .NET.

Если ваши потребности просты (например, просто установить значение таймера) или если ваш клиент не использует .NET, использование именованных каналов (или TCP, если вам нужно получить доступ к службе с другой физической машины), вероятно, будет лучшим вариантом. делать ставку. И именованные каналы, и TCP предоставляют вам поток, в который вы можете писать сообщения и читать на другом конце.

Если вам нужно предоставить много разных функций или отправлять и получать сложные типы данных, и если вы используете .NET на обоих заканчивается, .NET Remoting или WCF, вероятно, лучше всего. .NET Remoting проще, но имеет больше ограничений; WCF очень гибкий, но требует более крутого обучения.

И именованные каналы, и TCP предоставляют вам поток, в который вы можете писать сообщения и читать на другом конце.

Если вам нужно предоставить много разных функций или отправлять и получать сложные типы данных, и если вы используете .NET на обоих заканчивается, .NET Remoting или WCF, вероятно, лучше всего. .NET Remoting проще, но имеет больше ограничений; WCF очень гибкий, но требует более крутого обучения.

И именованные каналы, и TCP предоставляют вам поток, в который вы можете писать сообщения и читать на другом конце.

Если вам нужно предоставить много разных функций или отправлять и получать сложные типы данных, и если вы используете .NET на обоих заканчивается, .NET Remoting или WCF, вероятно, лучше всего. .NET Remoting проще, но имеет больше ограничений; WCF очень гибкий, но требует более крутого обучения.

8
ответ дан 8 December 2019 в 12:20
поделиться

Вы не можете вызвать метод в процессе службы Windows напрямую, но вы можете сделать так, чтобы служба Windows открывала эту функцию, например, как службу WCF. Служба Windows также будет выступать в качестве узла службы. Это возможно и несложно.

4
ответ дан 8 December 2019 в 12:20
поделиться

Да, это возможно.

Возможно, вы захотите создать конечную точку NetNamedPipe в своей службе и управлять службой через этот интерфейс.

NetNamedPipeBinding binding = new NetNamedPipeBinding();
MyService myService = new MyService(binding,
              new EndpointAddress("net.pipe://localhost/MyService"));
myService.ResetTimer(30);
5
ответ дан 8 December 2019 в 12:20
поделиться

Более старые (не WCF) службы могут использовать .NET Remoting. Посмотрите здесь , чтобы получить информацию о том, как начать работу. Это предшествующий WCF способ связи между приложениями через границы процессов.

2
ответ дан 8 December 2019 в 12:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: