약간의 정보를 읽으면서 클라이언트가 내 서비스에 연결되었다는 것을 탐지하는 유일한 방법은 내 자신의 코드를 작성하는 것입니다. 싱글 톤 서비스를 사용하고 있습니다. 클라이언트가 xxx가 연결된 클라이언트 x가 내 서비스에 연결할 때마다 메시지를 표시하고 싶습니다. 생성되는 내장 이벤트가 없습니까? 나 맞아?클라이언트가 wcf 서비스에 연결된 경우 감지하기
답변
아니요, 귀하의 요구 사항에 대한 WCF의 지원이 있다고 생각하지 않습니다.
당신이 달성하고 싶은 것이 확실하지 않습니다. 귀하의 서비스 클래스 (귀하의 경우 단일 인스턴스)에는 메시지를 표시하는 비즈니스가 실제로 없습니다 (화면에 표시됩니다). 실제로는 그렇지 않습니다. 서비스 클래스는 요청을 처리하고 응답을 전달하는 데 사용됩니다.
ServiceHost
클래스는이 기능의 후보가 될 수 있지만 서비스를 호스팅하고 WCF 런타임 등을 돌리는 것이 실제 업무이며 UI 구성 요소도 아닙니다.
당신이 가능하게 할 수있는 것은이
- 는 관리자 UI (윈폼, 콘솔 또는 WPF 응용 프로그램)이
- 이 정의를 호출하는 관리 서비스를 제공하는 서비스와 함께 당신의 서버에서 실행해야 두 서비스 간의 빠른 연결 (예 :
netNamedPipe
바인딩을 사용하여 애플리케이션 내부 메시징에 적합) - "실제"서비스가 전화를 받으면 가장 먼저 관리 UI에 메시지를 보내고 그 메시지를 집어 들고 처리하십시오.
그런 식으로 실제 서비스와 작업 (서비스를 제공하기 위해)과 원하는 UI (관리 UI)를 분리하고 깨끗하게 분리 된 시스템을 구축 할 수 있습니다.
실제로 채널을 만든 후에 내 클라이언트에서 수동으로 호출하는 connect
, disconnect
및 ping
서비스 메서드를 구현했습니다. 그것들을 내 ServiceContract
인터페이스 정의 (및 그 구현 방법)의 헤더 섹션의 일종으로 사용함으로써, 그들은 컷 앤 페이스트 (cut-n-paste)를 약간만 필요로하는 임시 "기본 서비스 정의"를 형성합니다.
connect
과 disconnect
의 문자열 기반 매개 변수는 클라이언트 정보를 서버로 보내고 서버 정보와 클라이언트 (아마도 고유 연결 ID)를 클라이언트에 반환하는 데 사용됩니다. 또한 일련의 타이밍 참조 점도 삽입 될 수 있습니다.
SessionMode
이 필요하며 개별 OperationContract
속성 IsInitiating
및 IsTerminating
명시 적으로 각각의 방법에 대해 지정하는 방법을 참고, 나는 그것이 유일한 세션으로 connect
및 disconnect
를 정의하는 "단일 세션"서비스에라고 부르는 것을 최종 결과 북 엔드.
참고 또한 ping
명령이
:-) 하나의 설정 파일없이 ALL 연결 시간 제한을 서비스 연결 상태를 테스트하고 패배 타이머 기반 "하트 비트"호출의 대상으로 사용됩니다 또한 오류 처리 구조를 아직 결정하지 못했지만 아직 방법을 추가하거나 다른 종류의 변경이 필요할 수 있습니다.
[ServiceContract(SessionMode = SessionMode.Required)]
public interface IRePropDalSvr {
[OperationContract(IsInitiating=true, IsTerminating=false)]
string connect (string pClientInfo);
[OperationContract(IsInitiating=false, IsTerminating=true, IsOneWay=true)]
void disconnect (string pClientInfo);
// ------------------------------------------------------------------------------------------
[OperationContract(IsInitiating=false, IsTerminating=false)]
string ping (string pInp);
// ------------------------------------------------------------------------------------------
// REST OF ServiceContract DEFINITION GOES HERE
주의 사항 : 현재이 코드를 서비스 클래스에 사용하고 있지만 아직 코드를 확인하지 않았습니다.
- 1. wcf 서비스에 연결된 클라이언트 목록 얻기
- 2. Silverlight 클라이언트가 아닌 WCF 이중 서비스에 데이터를 게시하는 방법은 무엇입니까?
- 3. 클라이언트가 자체 호스팅 WCF 서비스에 연결할 수 없습니다. BaseAddress없이 시작되었습니다.
- 4. 레거시 WSE 클라이언트를 WCF 서비스에 연결 중 ... 클라이언트가 변경되지 않았습니다.
- 5. WCF : 얼마나 많은 클라이언트가 서비스에 액세스하는지 확인하는 방법
- 6. 인터넷을 통해 WCF 서비스에 액세스 하시겠습니까?
- 7. 여러 클라이언트가 연결된 Netty 동결
- 8. WCF 서비스에 연결된 사용자의 트랙 번호를 유지 하시겠습니까?
- 9. WCF 클라이언트가 서비스 중단시 중단됨
- 10. WCF 서비스 계약에 연산을 추가하면 모든 WCF 클라이언트가 참조를 업데이트해야합니다.
- 11. WCF 클라이언트가 여러 개있는 경우 차단 문제가 발생했습니다.
- 12. Silverlight 클라이언트가 아닌 경우 WCF 폴링 이중 바인딩이 있습니까?
- 13. WCF 서비스에 연결된 한 클라이언트의 문자열을 연결된 다른 클라이언트에도 푸시 (push) 할 수 있습니까?
- 14. localhost에서 WCF 서비스에 연결하려고 할 때 내 WCF 클라이언트가 때때로 시간 초과됩니까?
- 15. WCF : IP로 서비스에 연결하는 방법 : 포트
- 16. 문제 서버의 WCF 서비스에 연결
- 17. JQuery WCF 서비스에 게시
- 18. 배열을 WCF 서비스에 전달
- 19. WCF 서비스에 데이터 주입
- 20. WCF 테스트 클라이언트가 서비스를로드하지 않습니다.
- 21. WCF 클라이언트가 XML 선언을 잊었습니다.
- 22. WCF 서비스에 대한 동적 수정
- 23. 상관 토큰을 WCF 서비스에 전달 하시겠습니까?
- 24. 서비스가 인증 된 경우 WCF 서비스에 액세스하는 방법
- 25. 도메인에없는 클라이언트의 도메인에서 호스팅되는 wcf 서비스에 연결
- 26. PHP가/스위치가 연결된 경우 *
- 27. 형식이 WCF 서비스에 노출되지 않음
- 28. LINQ 쿼리를 WCF 서비스에 전달하는 방법
- 29. URL을 통해 WCF 서비스에 액세스
- 30. 동일한 서버의 WCF 서비스에 액세스
내 관리 UI가 내 서버에서 실행되고 있지만 내 서비스와 함께 실행되지는 않으며 내 서비스 (열기 및 닫기) 시작 및 중지를 담당합니다. 또한 다른 서비스에 게시 된 질문 인 내 서비스의 인스턴스가 있습니다. 이것이 나의 현재 설정입니다. 내가 예상 한대로 답장에서 공제했는데 연결하는 클라이언트를 검색하려면 목록을 유지해야합니다. 내 자신 만의 일을해야합니다. (내 코드에서 일을 추적하십시오). 신속한 답장을 보내 주셔서 감사합니다. – Tamer
비슷한 질문이지만 클라이언트가 서비스에 연결할 때 호스트 프로그램이 메시지 상자를 팝업하는 방법이 있습니까? – ZoomVirus