2013-01-24 3 views
2

나는 디지털 문서의 처리를 처리하는 C#으로 작성된 Windows 서비스와 PHP로 작성된 웹 응용 프로그램을 보유하고 있습니다. 새 문서를 처리 할 준비가되었음을 C# 서비스에 알릴 수 있어야합니다.PHP에서 C# 서비스로 알림을 보내는 방법은 무엇입니까?

현재 C# 서비스는 수행 할 새 작업이 있는지 확인하기 위해 10 초마다 MySQL 데이터베이스를 읽습니다. 이렇게하면 웹 응용 프로그램의 응답 속도가 10 초 지연됩니다. 문서가 준비되면 즉시 C# 서비스를 트리거 할 수 있어야합니다.

PHP가 C# 서비스에 아무런 지체없이 알릴 수있는 답변을 찾고 있습니다.

다음은 가능한 아이디어입니다.

  • PHP와 C# 사이에 공유 메모리 개체를 사용하고 C#의 스레드에서 해당 개체가 신호를받을 때까지 대기합니다. PHP로 가능합니까?
  • PHP는 localhost의 소켓을 사용하여 C#에 연결하고 nak를 보내고 연결을 끊습니다. 이것은 나에게 비효율적 인 것처럼 보입니다.
  • 인 메모리 테이블을 사용하도록 MySQL을 구성하고 C# 서비스가 매초마다 테이블을 쿼리하도록합니다.
  • XML 또는 SOAP을 사용하는 C#에서 일종의 웹 서비스를 만드는 것이 어렵고 PHP를 통해 해당 서비스를 호출 할 때 지연 (+1 초)이 있습니까?

내가 생각할 수있는 전부입니다. 어쩌면 표준 방법이 있습니다.이 방법을 사용해야합니다.

+1

옵션 2와 3은 웹 응용 프로그램은 여러 호스트로 확장 할 수 있도록 자체 호스팅 할 수 있습니다. 그리고 옵션 2와 3 같은 것이 * 드문 경우는 아닙니다. 옵션 1은 단순하지 않습니다. – svidgen

+0

@svidgen 동의합니다. 이를 확장 성으로 여는 것은 좋은 생각입니다. 문서 처리에는 많은 시간이 소요됩니다. – cgTag

+1

새로 추가 된 옵션 4가 가장 일반적인 솔루션처럼 들립니다. M $는 거의 모든 Dynamics 통합 작업에 SOAP 서비스를 사용합니다. 또한 SOAP 서비스를 사용하지도 않습니다. 그들은 또한 폴링을 수행합니다 ... 저 대기 시간이 필요할 때 좋은 방법입니다. 단지 당신이 평소와는 다른 일을하는 것이 아니라 어떤 선택이라도하는 것입니다. – svidgen

답변

1

/에 대한 POST에서 C# 서비스를 트리거하는 WCF에서 REST Facade를 만드는 것은 꽤 사소한 일입니다. 배포의 특성에 따라 보안을 계층화 할 수 있습니다.

http://msdn.microsoft.com/en-us/library/bb412178.aspx

+0

이것은 구현이 매우 간단 해 보입니다. 감사. – cgTag

+0

REST 또는 SOAP 서비스가 최선의 방법이라고 생각합니다. Visual Studio에서 쉽게 유지 관리 할 수 ​​있습니다. – cgTag

1

나는 이것을 풀어보고 대답하려고 노력할 것이다. 서비스 작업 트리거이 질문에 설명 된대로

서비스에서

, OnCustomCommand 처리기를 추가 : How to send a custom command to a .NET windows Service from .NET code?

단순히 서비스에 명령을 전송하는 별도의 C# 응용 프로그램을 만들고 호출을 해당합니다 (간부를 통해 PHP에서) 기능.

+0

PHP에 문제가 있습니다. 한 번에 하나의 exec() 프로세스 만 실행할 수 있습니다. 따라서 응용 프로그램이 충분히 바빠서 동시에 두 사람이 exec()를 트리거 한 경우 하나만 실행됩니다.C# 서비스가 어떤 문서가 대기 중인지를 처리 ​​할 것이므로 문제가되지 않을 수도 있습니다. – cgTag

+0

모든 작업이 명령을 보내는 경우에도 매우 빠르게 실행됩니다. 선택적으로 명령을 보내는 다른 응답자가 언급 한 것처럼 WCF 또는 다른 서비스를 수행 할 수 있습니다. – Pete

+1

PHP 문서의 참고 사항 : 참고 : 프로그램이이 기능으로 시작된 경우 프로그램을 백그라운드에서 계속 실행하려면 프로그램 출력을 파일이나 다른 출력 스트림으로 리디렉션해야합니다. 그렇게하지 않으면 프로그램 실행이 끝날 때까지 PHP가 멈추게됩니다. – Pete

관련 문제