과 통신하는 방법은 windows 서비스에서는 응용 프로그램과 상호 작용하는지?

StackOverflow https://stackoverflow.com/questions/84860

문제

니다.Net 는 가장 좋은 방법은 무엇입하는 서비스와 상호 작용(i.e어떻게 대부분의 트레이-애플리케이션들과 의사 소통 서버).그것은 것이 선호하는 경우 이 메소드는 것 크로스-플랫폼을 뿐만 아니라(에서 일하는 모노,그래서 나는 기능을 제공하는 서비스이다.out?)


편집:

언급하는 것을 잊었,우리는 아직 지원하는 윈도우 2000 의 기계 분야에서,그래서 WCF 및 아무것도니다.Net2.0 으로 비행하지 않습니다.

도움이 되었습니까?

해결책

는 것을 알고 계획하고 있는 경우 결국 배포 Windows Vista 또는 Windows Server2008,많은 방법으로 이를 수행할 수 있습니다 오늘날 작동하지 않습니다.이의 소개 때문에 새로운 보안 기능"이라는 세 0 격리".

대부분의 윈도우 서비스로 이동되었습니다 실행 세션에 0 지금 주문을 제대로 격리하는 그들의 나머지 부분에서 시스템입니다.의 확장이 그 첫 번째 사용자 시스템에 로그인하려면 더 이상은 배치 세션에#0,에 배치 세션 1.따라서,고립니다 휴식하는 코드는 특정 유형의 서비스 사이의 통신고 데스크톱 응용 프로그램.

최선의 방법은 코드를 작성하는 것입니다 오늘날 비스타에서 작동하고 서버 2008 앞으로 일을 할 때 사이의 통신 서비스와 응용 프로그램을 사용하는 것이 적절한 크로스-프로세스 API 는 다음과 같 RPC,Named Pipes,etc.를 사용하지 않는 SendMessage/PostMessage 로는 것에서 실패션 0 격리입니다.

http://www.microsoft.com/whdc/system/vista/services.mspx

지금,당신의 요구 사항은 당신이 될 것에 피클의 비트.에 대한 크로스-플랫폼 문제,나는 확실하지 않다면 원격을 것이 지원됩니다.야 할 수 있습니다 아래로 떨어지고 가는 모든 방법을 소켓: http://msdn.microsoft.com/en-us/library/system.net.sockets.aspx

다른 팁

의 경우 트레이 프로그램,그리고 진정한 서비스의 경계를 설정하는 방식 통신다면 사용하는 파이프 또는 TCP/IP.는 경우 여러 사용자가 로그로 기계(Citrix,원격 데스크톱),그리고 각 사용자 실행 트레이 응용 프로그램을 통해"서비스",다음을 실행할 수 있는 상황으로 당신은 여러 프로세스를 사용하려고 하는 같은 잘 알려진 항구 또는 파이프입니다.물론 이 문제가 되지 않습니다하지 않는 경우 지원하는 계획을 여러 파이프 또는 만약 당신이 진정한 서비스와 반대로 트레이 프로그램에서 실행되는 각 사용자는 쉘입니다.

귀하의 서비스를 듣 127.0.0.1 에 미리 정의된 포트를 기존의 일반 TCP 소켓 스트림.에 연결하는 포트에서 당신의 데스크톱 응용 프로그램입니다.

그것은 죽은 간단하고 그것은 완전히 크로스 플랫폼입니다.

았다 당신의 하나 실제로 시도 원격 모노?그것이 잘 작동합니다.당신은 수도에 충돌 몇 가지 모퉁이의 경우,그러나 이것은 매우 어렵다.테스트 응용 프로그램을 위한 크로스-플랫폼(MS.Net <->모노)원격에서 시간을 잡을 수있는 시간을 가능한 모든습니다.시작과 함께 최근 모노 2.4.2 현재합니다.

원격은 선택이지만,그것은 크로스-플랫폼입니다.일부는 다른 방법은 명명된 파이프를 사용하려면 IPC 또는 커널 이벤트입니다.

충분히 재미있게 했다가 제안하는 원격!이 모노 1.0 릴리스 (서 archive.org 기 때문에 원래의 위치가 설정)mention System.Runtime.Remoting.dll 으로 지원 라이브러리와 아무 말도 하지 않에 대해 알려진 문제를 해결합니다.

면 원격은 당신은 아마 자신을 구현하는 TCP 프레임 메시지 프로토콜입니다.Windows 하지 않는 이에 상응하는 유닉스의 도메인 소켓 통신을 위해 동일한 컴퓨터에 있습니다.

대부분의 서비스는 GUI 를 구성요소로 실행하는 명명된 사용자에 액세스할 수 있습니다.이에 액세스할 수 있습을 통해 그것 COM 이나.순 있지만 로컬에서(당신이 원하지 않는 복잡)

개인적으로 열려 일반 기존의 소켓에 서비스-크로스 플랫폼 수 있습 여러 클라이언트,어떤 응용 프로그램을 할 수 있습 액세스,그것에 의존하지 않는 윈도우 보안 열 수 있다고 할 수 있습 GUI 을 모든 언어로 작성을 다음과 같(으로 모든 것을 소켓 지원).

트레이 응용 프로그램,당신이 원하는 simle 프로토콜 통신-사용할 수 있습니다 나머지 스타일 시스템을 명령을 보내다,그리고 스트림 XML(육)또는 사용자 지정 데이터 형식으로 뒤입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top