새로운 프로젝트를 개발할 때, 핵심 기술을 asp.net 사용할 때, 기존 프로젝트는 .NET Framework 4를 사용해 개발된 WCF 서비스일 수 있습니다. 재구성 비용이 너무 높아 WCF 서비스 인터페이스를 호출하기 위해 asp.net 코어를 사용해야 합니다.
먼저, 두 개의 새로운 프로젝트를 생성하세요:
ASP.NET Core 3.1 프로젝트: dotnet-core-call-wcf .NET Framework 4 프로젝트 (WCF 서비스 애플리케이션): schools-wcf-service
Visual Studio 2019에서 WCF 서비스를 만들고 싶어 하는데, 템플릿을 찾을 수 없어요. 해결책:
Visual Studio 설치 프로그램을 열려면 '더 많은 도구 및 기능 설치'를 선택하세요. 개별 구성 요소 탭을 선택한 후 개발 활동으로 스크롤하여 Windows 커뮤니케이션 재단을 선택한 후 수정을 클릭하세요.
WCF는 다음과 같이 두 가지 인터페이스를 생성합니다:
인터페이스 구현 코드는 다음과 같습니다:
서비스 계약은 관련된 서비스 작업들의 집합이며, 인터페이스에 ServiceContractAttribute를 적용하면 서비스 계약 속성을 부여합니다. 하지만 이러한 유형의 경우, 그 관용구가 자동으로 계약적 서비스 연산이 되지 않으며, OperationContractAttribute 기능이 적용될 때만 해당 메서드 구성원이 서비스 호출로 접근 가능한 서비스 연산이 될 수 있습니다.
wcf 프로젝트를 시작하면 자동으로 WcfTestClient를 실행하고 아래 그림과 같이 호출을 시도합니다:
ASP.NET Core 프로젝트를 사용하여 WCF 서비스를 호출하세요
연결 서비스 우클릭 후 연결을 추가하고자 하는 서비스를 선택한 후 WCF 서비스를 선택하세요. 아래 이미지에 나와 같이 있습니다:
서비스 주소 작성: http://localhost:3705/Service1.svc
가능한 오류:
WCF 서비스 주소를 완전히 쓰는 것은 불가능하므로, appsettings.json 파일에 다음 코드를 추가하세요:
Startup.cs 파일을 편집하고 다음 코드로 WCF 서비스를 등록하세요:
HomeController 컨트롤러에서 wcf 서비스를 호출하고, 첫 번째 생성자 주입을 하면 코드는 다음과 같습니다:
WCF 서비스 호출:
asp.net 코어 웹사이트를 운영하면, 효과는 아래와 같습니다:
인터페이스가 3분 후에 결과를 반환하도록 WCF 서비스를 수정한 후 코어를 재 asp.net 시작해 WCF 서비스를 호출하려 시도하는데, 오류는 다음과 같습니다:
AggregateException: One or more errors occurred. (The request channel timed out attempting to send after 00:01:00. Increase the timeout value passed to the call to Request or increase the SendTimeout value on the Binding. The time allotted to this operation may have been a portion of a longer timeout.) 현재는 기본 타임아웃을 수정하고, BasicHttpBinding 바인딩을 커스터마이즈하며, Startup.cs 파일을 다음과 같이 재편집해야 합니다:
소스 코드 다운로드:
관광객 여러분, 이 게시물의 숨겨진 내용을 보고 싶으시다면 부탁드립니다 회답
|