SOAP 서비스에 대한 WSDL 정의가 있고 SvcUtil을 사용하여 * .cs 파일을 성공적으로 생성했습니다.SOAP 웹 서비스 구현
구현 클라이언트는 매우 간단합니다. 생성 된 * .cs에서 필요한 기능을 호출하면됩니다.
구현 서버가 더 복잡해 보입니다. 내가 이해할 수 있도록 생성 된 * .cs에서 인터페이스를 구현 한 다음 웹 서버로 바꾸기 위해 마술을 사용해야합니다.
하지만 새 웹 서버가 필요하지 않습니다. 이미 이미 구현해야하는 SOAP 서비스와 관련이없는 많은 기능을 가진 C#으로 작성된 웹 서버가 있습니다. 나는 다른 웹 서버를 만들고 싶지 않지만 내 SOAP 서비스가 내 기존 응용 프로그램 (서버)의 일부가되기를 바란다. 즉 내 서버가 대답 할 수있다. http://example.com/request1
, http://example.com/request2
등을 요청하고이 SOAP 서비스가 단지 http://example.com/request3
이되기를 바란다.
HTTP는 이미 내 서버에서 처리하므로 .NET에서 나를 처리 할 필요는 없습니다. 기본적으로 내 서버는 클라이언트 연결을 수락하고 URL을 기반으로 필요한 처리기를 호출 할 수 있습니다. 나는 대략 다음과 같습니다 SOAP 요청에 대한 핸들러가 있습니다
MyResponse HandleSOAPRequest(MyRequest request)
{
// 1. parse soap message from request.body
// 2. process it
// 3. generate response, serialize it in SOAP format and return it
}
질문은을 - 나는 그것을 할 WSDL 정의 및 .NET 라이브러리를 사용 할 수 있습니까?
현재 XDocument를 사용하여 SOAP 요청을 구문 분석하고 수동으로 필드를 추출하고 간단한 문자열 연결을 사용하여 직렬화합니다. .NET 내장 함수를 사용하여 XML을 직렬화하거나 구문 분석하는 기능은 작동하지 않습니다. 생성 된 * .cs 파일에 정의 된 클래스의 객체에서 응답을 직렬화하려고하면 정의 된 클래스의 객체로 요청을 구문 분석하려고하면 유사하게 XML이 생성됩니다. XML 파서가 다른 형식을 기대하기 때문에 생성 된 * .cs 파일에서 오류가 발생합니다. 이 SoapFormatter 및 XmlSerializer 적용됩니다.
.NET은 클라이언트를 구현할 수 있기 때문에 SOAP 메시지를 구문 분석하고 직렬화하는 데 필요한 모든 것이 이미 구현되어 있음을 의미하므로이 기능을 사용하는 방법을 알아야합니다.
ServiceModel의 documentation은별로 도움이되지 않았습니다.
서버에 대해 더 자세히 말씀해 주시겠습니까? 내가 IIS라고 생각하는 거 맞지? 사실상 IIS에 WebService dll을 배포하고 구성을 사용자 정의하면 완료됩니다. – t3chb0t
@ t3chb0t, IIS가 아니고 C#으로 작성된 자체 서버입니다. – Sdz
@JohnSaunders, 서버를 구현해야합니다. 클라이언트는 테스트 용으로 만 사용합니다 – Sdz