2009-10-23 2 views
0

내 제한된 WCF 지식을 용서해주십시오. 그러나이 플랫폼에 익숙하지 않은 사람이 내 아이디어를 구현할 수 있기를 바랍니다. 그것을하기 위해.공용 인터넷을 통해 IIS가없는 서비스를 WCF를 사용하여 호스트

가장 간단한 용어로, 나는 마스터 (서비스)로 실행되는 앱과 클라이언트를 실행하는 앱 두 가지를 작성하고 싶습니다. 캐치 서비스는 기본 서비스 응용 프로그램을 모든 기본 PC에서 실행해야합니다. 대부분 호스팅 또는 웹 서비스가 구성되지 않은 가정용 PC 사용자가 필요합니다. 예를 들어 IT 지식이없는 사람이 표준 광대역 케이블 모뎀 연결을 사용하는 주거용 주택에서 Vista Home Basic을 실행해야합니다. 두 번째 캐치는 각 서비스 응용 프로그램이 인터넷에 동시에 노출 될 수있는 다른 서비스 응용 프로그램과 분리되어 있어야한다는 것입니다. 한 사람이 집에서 PC로 채팅 세션을 시작할 수있는 대화방 응용 프로그램과 같이 생각하십시오. 그런 다음 다른 사람들은 인터넷 (이메일, 전화, 텍스트 등 다른 수단으로 제공되는 로그인 정보를 사용하여)에서 해당 세션에 연결할 수 있으며 모든 사람이 메시지를 교환 할 수 있습니다. 클라이언트 만 실행하는 사람은 채팅 세션을 만들 수 없으며 적절한 세션 ID가있는 경우에만 클라이언트를 시작할 수 있습니다. 언급 한 바와 같이, 다른 사람이 다른 세션 ID를 사용하여 가정용 PC에서 동일한 서비스 응용 프로그램을 시작하면 해당 세션을 찾는 사람들 만 해당 세션의 메시지에 연결하고 볼 수 있습니다. 서비스 응용 프로그램을 실행하는 PC가 방화벽과 인터넷에서 사용할 수있는 포트까지 구성 될 수있는 가능성은 무한합니다. 따라서 기본 HTTP 바인딩을 사용해야한다고 가정합니까?

그럼,이 문제를 구현하는 가장 좋은 방법은 무엇입니까? 아니면이 아이디어를 달성 할 수 있습니까? 서비스 응용 프로그램에는 클라이언트가 일종의 서버 스타일 구성을 찾을 수있는 공개적으로 사용할 수있는 주소가 없을 것입니다. 나는 서비스 종점이 클라우드에 노출되도록하는 새로운 .NET Services Service Bus를 보았습니다. (그리고 기본 방식으로 작동하도록했습니다.) 그러나 실제로 의도 된 것은 과도한 것처럼 보입니다. 간단한 응용 프로그램 스위트. Self-hosting 구성과 PeerChannel 클래스를 살펴 보았지만, 내가 수행 한 것을 성취 할 수 있는지 확신 할 수 없습니다.

물론 인터넷에 서비스를 제공 할 수있는 방법이있는 한 클라이언트 측 구현은 매우 간단해야합니다.

다시 한 번, 지식 부족에 대해 사과드립니다. 아마도 (바라건대?) 이것은 쉬운 일입니다.

감사합니다,

스티브 E. 빠른 회신


덕분에 ...

나는 일부 사용자 PC 측이있을 거라고 가정되었다 인해 소프트웨어 방화벽에 프롬프트 . 현재 대부분의 일반 사용자는 앱이 인터넷에 접속하려고 할 때 Windows가 승인을 기다리는 데 익숙하다고 생각합니다. 단일 종단점을 사용할 수 있기를 바랬는데 이것이 열린 채널을위한 단일 포트를 의미한다고 가정합니다. 이것은 잘못된 가정 이었습니까? 모든 클라이언트가 채팅방의 다른 모든 클라이언트에 모두 동일한 채널이더라도 다른 포트를 사용하여 연결합니까?

의 해결책 중 일부는 피하기 위해으로 채팅 룸을 관리하기위한 웹 기반 서비스를 제공해야한다는 요구 사항이 있습니다. 이것이 최후의 가능성이지만, 서버가 필요없는 설정을 원했습니다.

저는 PNRP 및 PeerChannel 기술을 더 많이보고 있습니다. 이것은 또한 유망 해 보이지만 나는 아직도 그것에 대해 배우고있다. PNRP와 WCF와의 직접 연결에 대해 아십니까?

답변

1

WCF에서 할 수있을만큼 간단합니다. 귀하의 "클라이언트"응용 프로그램 (사용자의 PC에 앉아있는 응용 프로그램)은 대화방에 연결하거나 호스트 할 수 있습니다. WCF는 중요한 번거 로움없이이 작업을 수행 할 수 있습니다 ... 앱이 인터넷에 연결할 수 있어야한다는 것을 제외하고는. 보통 이것은 사용자가 앱이 방화벽 구성을 변경하도록 허용해야 함을 의미합니다.

사용자가 서로를 찾으려면 사용자가 대화방을 브로드 캐스트하고 다른 사용자가 만든 회의실을 찾을 수있는 서비스를 제공해야합니다. 이것은 클라이언트 소프트웨어가 알고있는 주소를 가진 중앙 서버에 의해 달성 될 수 있습니다.

10,000 피트보기 :

  1. 사용자가 채팅 클라이언트를 설치합니다.
  2. 채팅 클라이언트가 권한 상승을 요청하고 사용자 동의에 따라 클라이언트가 방화벽을 구성합니다.
  3. 객실에 대한 중앙 서버와의 채팅 클라이언트 확인.
  4. 사용자가 대화방에 참여합니다.
  5. 사용자가 방을 만들고 채팅 클라이언트가 새 방을 중앙 서버에 알립니다.
  6. 다른 클라이언트는 서버에서 공간을 찾고 사용자와 직접 연결합니다.
  7. 사용자가 대화방을 종료하면 채팅 클라이언트가 중앙 서버에 방을 더 이상 사용할 수 없음을 알립니다.

가장 어려운 부분은 포트를 처리하는 방법을 파악하고, 사용자는 (아마도 다른 포트에있을 것입니다) 또 다른 채팅 클라이언트에 연결할 때마다 귀찮게하지 않고 방화벽을 변경한다.

관련 문제