2009-06-03 5 views
1

자신의 시스템이 C로 작성된 장치와 관리 목적 (구성 전송, 장치에서 기록 된 데이터 검색, 장치 상태 모니터링)을위한 Windows 응용 프로그램이 있습니다. 나는 내가 사용할 기술을 선택할 때 융통성이있다. 요구 사항은 지금 당장은 매우 희미하므로 뭔가 유연해야합니다. 기본 통신 프로토콜은 TCP입니다. COM 포트를 유지 관리 옵션으로 사용할 수 있습니다. 예를 들어 일부 네트워크 오작동으로 인해 정상적인 통신이 실패 할 때.WCF 서비스 및 장치와의 통신

WCF 서비스를 응용 프로그램과 장치 사이의 "프록시"로 사용하려고합니다. 응용 프로그램은 데이터를 서비스로 보내고 서비스는 데이터를 처리하고 TCP 패킷을 장치로 보냅니다 (장치의 패킷 데이터는 이해할 수 있음) 장치는 TCP 패킷을 다시 WCF 서비스로 보내고 처리 된 메시지를 응용 프로그램으로 보냅니다. 이 WCF 사용은 의미가 있습니까?

WCF는 webapp에서 쉽게 액세스 할 수 있으므로 일반 Windows 응용 프로그램과 함께 우리 시스템이 더 섹시해질 수 있지만 가치가 있습니까? 어떻게 생각하십니까, 제발 당신의 아이디어를 공유하십시오 :

+0

WCF에 대한 자세한 내용은 WCF 서비스에 데이터를 보내는 장치의 시나리오가 작동하지 않는다고 생각하므로 nonWCF 클라이언트와 잘 작동하지 않는 것 같습니다. 그 (것)들 사이 몇몇 여분 소켓 수신기를 좋은 해결책 추가하고 있는가? – grapkulec

답변

1

제가 이해하기에, 당신은 세 가지 요소로 시스템 아키텍처를 고려하고 있습니다. Windows 응용 프로그램, 일련의 장치 및 프록시 또는 중개자 역할을하는 추가 서비스로이 둘 사이의 통신을 중개합니다.

첫 번째 질문 : 관리 응용 프로그램이 장치 자체에 연결할 수없는 이유가 있습니까? 관리에 사용되는 Windows 응용 프로그램은 다른 응용 프로그램과 마찬가지로 쉽게 장치에 대한 소켓을 열 수 있어야합니다. 왜 안 그랬어? 이 질문을하는 또 다른 방법은 다음과 같습니다. 브로커, 세 번째 요소를 아키텍처에 도입하는 것이 정당한 이유는 무엇입니까? 소개하고 싶은 비동기가 있습니까? 규모면에서 문제가 있습니다. 어쩌면 기기의 수가 너무 많아서 UI가있는 앱에서 직접 연결하기보다는 별도의 앱에서 모든 기기와의 통신을 관리하고 싶을 수도 있습니다. 네트워크 토폴로지의 문제입니까? 브로커에서 어떤 기술을 사용할 지 고려하기 전에 먼저 아키텍처에 브로커를 포함시킬 수있는 방법을 결정하십시오.

세 번째 요소에 대한 타당성이 있다고 가정하면 WCF가 해당 요소에 적합한 통신 기술인지 여부를 고려할 수 있습니다. 확실히 2 개의 Windows 기반 응용 프로그램 사이에 WCF가 잘 작동합니다. 그들이 동일한 기계에 있다면, 네임드 파이프 바인딩을 사용하여 로컬 통신을위한 아주 좋은 성능을 얻을 수 있습니다. 이 두 응용 프로그램이 다른 Windows 시스템에 분산되어 있으면 네트워크 통신에 TCP를 다시 사용할 수 있습니다.

또한 브로커와 장치 간의 연결을 고려해야합니다. WCF는 비 WCF 시스템과 상호 연결할 수 있습니다. 기존 시스템과 상호 연결하려면 WCF 측에 일부 확장을 작성해야합니다. 그러나 그것은 가능하며 WCF에 대한 거의 주류의 사용 사례를 말하고 싶습니다. this Q for more on that topic을 참조하십시오.

+0

아키텍처의 특정 부분은 장치와 관리 응용 프로그램이며, 세 번째 요소 (브로커라고 부름)는 유연성의 이유로 사용됩니다. 이 프로젝트는 윈도우 애플리케이션 (Visual C#, C++)과 하드웨어 펌웨어 (C 일반)로 작성 될 예정이며 과거의 오류 (확장 성, 유연성, 하드 유지, 통신, 사용 등)를 피하고 싶습니다. 실제 IT 문제). WCF는 이러한 모든 문제를 해결하는 것으로 보이므로 문제가 발생할 수있는 문제와 해결 방법을 선택하면 얻을 수있는 보너스를 조사하고 있습니다.그리고 나는 펄프가 아니라 진짜 보너스를 의미한다. – grapkulec

+0

또 다른 것은 우리가 "우리는이 똑똑한 것을이 곳에 넣고 우리는 윈도우 앱, 웹 브라우저, 휴대 전화에서 장치에 액세스 할 수있다" 우리가 할 수있게한다면 우리는 무료로 일하고 회사의 전기 요금을 지불 할 것 "이라고 말했다. 회사는 char *로 int를 캐스팅 할 때 어떤 일이 일어나는지 잠시 확인해야 할 필요가 있으면 나이가 들수록 볼랜드를 사용합니다. 그러나 솔직히 말해서 볼랜드는 Visual Studio보다 더 나은 방법은 없습니다. WCF가 아니기 때문에 (보스를 위해) 훌륭하게해야하고 (우리를 위해) 비교적 쉽게 작업 할 수 있어야합니다. – grapkulec