C# SOAP 통신 문의

안녕하세요.

WPF선배님들 SOAP통신을 관련해서 몇가지 여쭙고자 합니다.

  1. WPF를 기반으로 SOAP모듈을 제작하려고 하는데요. 추천해주실만한 라이브러리가 있을까요 ?

  2. C#으로 WSDL을 Generate해야되는데 방법을 잘 모르겠습니다.

혹시 경험이 있으신 선배님들이 계실까요?

2개의 좋아요

SOAP 모듈이라 하면…
웹API 를 제공하겠다는 거죠?

요즘은 딱히 SOAP 을 사용하지는 않는데, 굳이 사용해야하는 상황이라면…

닷넷 이라면 WCF 를 사용하면 됩니다.

단지 제대로 다 익혀서 사용하려면 엄청난 학습 커브를 감수해야… 쿨럭…
(아… 책광고는 아니고…)

그게 부담스러우면 ASP.NET 의 웹 서비스를 사용하는 것도 방법입니다.

4개의 좋아요

Greg.Lee 님 항상 감사드립니다~^^

일단 그냥 WSDL을 제너레이트 하니까 C# 파일이 만들어지네요. 해당 클래스 제너레이트 된 것으로 이용하기로 했어요.

[참고] WSDL.exe 있는 곳
(상황마다 다를 수 있습니다.)
저는 .net 4.8을 설치하여서…
위치 => C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8 Tools\wsdl.exe

-형식-
wsdl.exe /namespace:<Namespace> /out:<Filename> <WSDL-document>
-예제-
wsdl.exe /namespace:MyProject.Soap /out: c:\workspace\MyProject.Soap\

참고 원문
요즘 거의 RestApi 써서 저도 쓸일 없을 줄 알았는데… 상황상 쓰게 되네요~ ^^

1개의 좋아요

아 wsdl 을 generate 한 다는 게 wsdl 을 클라이언트 클래스 파일로 뽑고 싶다는 얘기였군요.
(제가 반대로 이해했군요… -ㅅㅡ;;; )

동적으로 생성해서 사용하는 게 아니라면 wsdl 어셈블리를 호출하는 것보다는
VS 의 Service reference 기능을 더 추천합니다.

동적으로 사용하면 일단 디자인타임에 참조를 하기 어렵겠죠?
(그렇게 되면 클래스 파일로 뽑아내는 의미가 많이 퇴색될 거 같아요.)

어차피 wsdl 을 제공하는 측도 변경을 적용하려면 down time 이 필요할텐데
이 down time 을 공유해야한다면 클라이언트 측도 정적으로 리빌드가 필요하게 될 거예요.

그렇다면 Service Reference 를 이용해, 클래스 파일 생성과 참조를 함께 자동으로 수행할 수 있게 만드는 편이 나아 보여여

2개의 좋아요

WCF를 이용해보니까 좀 사용법은 이해할 수 있을 것 같습니다.

WCF 공부

위 블로그 참고해서 파봤습니다.

svcutil을 이용해서 class generate를 하고 해당 데이터를 SOAP 통신으로 활용했습니다.
그런데 개발서버 쪽이 CPP를 기반으로 만들어져서 그런지 기존에 구조체 데이터로 만들어진 데이터를 soap으로 주고 받으면서 Generate된 클래스의 타입이 stirng으로 지정되서 데이터가 깨지는 문제가 발생하더라고요.

해당 업체도 CPP기반의 gSoap만 지원해서 어쩔수 없이 gsoap기반의 cpp데이터로 generate해서 dll만들고 그걸 C#에서 써야될 것 같습니다.

힘드네요…ㅠㅠ
타입이 누락되고, 그 누락된 타입을 그냥 string 같은 것으로

1개의 좋아요