2009-12-10 2 views
1

간단한 문제입니다. 추가 데이터베이스 연결을 사용하는 응용 프로그램의 개념 증명 (proof-of-concept)을 수행 중이므로 데이터베이스를 둘러 쌀 수있는 WCF 서비스를 만듭니다. 다중 사용자 환경에서는 로컬 시스템에 클라이언트 응용 프로그램이있는 중앙 집중식 서버에이 서비스가 설치됩니다. 이러한 사용자는 방화벽 문제를 자동으로 처리해야하므로 허용됩니다.WCF 서비스 및 방화벽 ... 문제가 있습니까?

그러나 단일 사용자 환경에서는 서비스 및 클라이언트 응용 프로그램이 단일 시스템에서 실행됩니다. 서비스 호스트는 현재 명확한 모양을 가지고 있지는 않지만 응용 프로그램 자체 또는 Windows 서비스로 호스트 될 가능성이 큽니다.

클라이언트 응용 프로그램은 서비스에 액세스하는 간단한 방법이 필요한 WIN32 Delphi 응용 프로그램입니다. 단일 사용자 버전은 다중 사용자 버전과 동일한 방식으로 서버에 액세스해야합니다. 즉, SOAP 클라이언트처럼 작동하고 WSDL을 가져 와서 Delphi 코드로 변환해야합니다.

여전히 문제는 없지만 가장 중요한 문제 인 연결 포트를 폐쇄 한 방화벽과 관련하여이 설정에서 발생할 수있는 문제를 고려해야합니다.

그래서이 단일 사용자 환경에서 발생할 수있는 방화벽 문제에 대해 알고있는 사람이 있습니까?

답변

2

사용중인 WCF 채널을 언급하지 않았습니다. basicHttpBinding이라고 가정합니다. 일반적으로 로컬 서비스가 자체 호스팅을 사용하여 127.0.0.1에 바인딩되어 있고 온 박스 클라이언트가 이러한 방식으로 액세스하는 경우에는 정상적으로 작동합니다. 내가 알고있는 방화벽은 루프백 어댑터와 관련이 없습니다. 시스템의 IP에 서비스를 바인드하는 경우, 방화벽의 즐거움을 누릴 수 있습니다.

양쪽 끝에서 클라이언트에서 WCF 3.5를 사용할 수 있다면 (미안하지만 델파이에 대해 전혀 모른다) netNamedPipeBinding으로 가야합니다.

+0

기본적으로 WCF 채널을 사용할 수 있지만 Delphi는 일종의 HTTP 바인딩에 연결하는 것을 좋아합니다. 여전히 개념 증명이므로 다른 대안이 아직 열려 있습니다. –

+0

"Win32"델파이가 비 (非) .NET을 의미하는지, 델파이의 지식이 zilch인지 확실하지 않은 로컬 전용 자료에 대한 최상의 옵션으로 netNamedPipeBinding이 추가되었습니다. – nitzmahone

+0

예, 델파이는 내 옵션을 약간 제한하는 non-NET입니다. 명명 된 파이프 솔루션을 사용하여 명명 된 파이프 클라이언트를 작성하는 방법을 알아 보겠습니다. 명명 된 파이프에 대한 경험이 있습니다. .NET에서 데이터를 보내는 방법을 모르겠습니다. 그래서, POC에 대한보다 기본적인 HTTP 솔루션이 선호됩니다 ... –

1

당신은 어떤 버전의 델파이를 사용하는지 언급하지 않았지만, 나는 한동안 델파이가 basicHttpBinding으로 WCF 서비스를 임포트하게 만들었다. WSDL이 여러 페이지로 나뉘어져 있기 때문에 Delphi의 SOAP 가져 오기 마법사는이를 이해할 수 없었습니다. 드디어 Delphi 클라이언트 용 WCF 서비스에 ASMX 래퍼를 작성했습니다.

+0

나는 Delphi 2007 태그를 사용했습니다. :-) 우리는이 프로젝트에 복잡한 클래스를 사용하지 않기 때문에 서비스 자체는 간단 할 것입니다. (기본 데이터 형식과 일부 데이터는 XML 문자열로 전달됩니다.)이 서비스는 간단한 데이터 저장소를 둘러싼 래퍼입니다. Delphi 2007은 또한 .NET WSDL 가져 오기 작업을보다 잘 수행합니다. 이것은 향상되었습니다. –