Webservice / WCF Service In Visual Studio 2017

Remark : 2017 에선 Webservice를 WCF 서버스라고 칭한다.

1. 새프로젝트 중에 Viaual C# ->웹 / WCF -> WCF 서비스 응용 프로그램 고른 다음 이름 과 위치를 지정한다.

2. 파일들이 생성된 것을 확인 할수 있다. (IService1.cs. Service1.cvc )

3. 오른쪽 솔루션탐색기 -> 메인 폴더 오른쪽 눌러 새 항목 추가 -> 웹 서비스(ASMX) 을 추가한다.

4. 실행을 누르면 2017 이전 버전에서 볼수 있는 웹서비스를 볼 수 있다.

5. 호출을 누르면 XML 로 리턴되는 것을 확인 할 수 있다.

속도메모리 사용량 측면에서 ASPX (ASP.NET WebForms), ASMX, WCF, 그리고 ASP.NET Web API를 비교하면, 각 기술의 목적과 구조에 따라 성능 및 리소스 사용에 큰 차이가 발생할 수 있습니다. 아래 표는 각 기술의 속도와 메모리 사용량 측면에서 비교한 내용입니다.

특징ASPX (ASP.NET WebForms)ASMX (ASP.NET Web Services)WCF (Windows Communication Foundation)ASP.NET Web API
속도느림: UI 렌더링과 ViewState 관리로 인해 서버 리소스 소모가 큼느림: SOAP 메시지 직렬화 및 XML 처리로 인해 성능 저하보통: 바인딩 및 기능에 따라 달라짐. 기본적으로 SOAP은 느리지만, REST는 비교적 빠름빠름: 경량의 RESTful API로 HTTP 기반 JSON 처리
메모리 사용량높음: ViewState, 서버 메모리에 많은 상태 정보 저장중간: XML 직렬화 및 SOAP 처리로 인해 메모리 사용량 증가중간에서 높음: 다양한 기능 및 프로토콜 지원으로 메모리 사용량이 높을 수 있음낮음: 경량 프로토콜 사용으로 메모리 사용이 적음
데이터 직렬화 속도빠름 (JSON) 또는 느림 (XML)느림 (XML/SOAP)중간 (SOAP은 느리고, REST는 빠름)빠름 (JSON이 주로 사용됨)
상태 관리로 인한 부하높음: ViewState, Session 등이 메모리와 성능에 영향을 줌없음없음없음
바인딩/프로토콜에 따른 성능 차이제한적 (주로 HTTP)제한적 (주로 HTTP, SOAP만 지원)다양함: 기본적으로 SOAP은 느리지만, TCP, Binary 프로토콜 사용 시 성능 향상 가능빠름: RESTful API로 HTTP 기반 통신 최적화
다중 프로토콜 지원으로 인한 오버헤드없음없음높음: WCF는 다양한 바인딩을 지원하므로 복잡도가 높아지면 성능이 저하될 수 있음없음
실시간 데이터 처리느림 (AJAX 사용 시 개선 가능)지원하지 않음보통: 다양한 프로토콜 지원으로 TCP나 MSMQ에서 실시간 처리 가능빠름 (SignalR과 함께 사용 가능)
대규모 트래픽 처리제한적: 메모리 사용이 많은 구조로 인해 대규모 트래픽 처리에 불리제한적: SOAP과 XML 처리로 대규모 트래픽 처리에 적합하지 않음보통에서 높음: 최적화 및 프로토콜에 따라 다름높음: 가벼운 HTTP 요청과 JSON 처리로 대규모 트래픽에 적합
초기화 및 처리 시간느림: ViewState 초기화 및 서버 렌더링이 지연 발생느림중간: SOAP 및 복잡한 기능 설정에 따라 다름빠름: 경량의 HTTP 기반 요청 처리
추천 XXXO

속도 비교

  1. ASPX (ASP.NET WebForms):
    • 속도가 느림: ASPX는 UI 렌더링ViewState 관리로 인해 서버 측에서 많은 리소스를 사용합니다. 특히, 페이지에 있는 컨트롤이 많거나 복잡한 로직이 포함된 경우, 처리 속도가 느려질 수 있습니다.
    • 상태 관리 부하: ViewState와 Session 등 서버에서 관리하는 상태 정보가 많아질수록 메모리 사용량이 증가하고 속도는 더 느려집니다.
  2. ASMX (ASP.NET Web Services):
    • SOAP 기반의 느린 성능: ASMX는 SOAP 프로토콜과 XML 직렬화/역직렬화를 사용하므로, 데이터 처리에 많은 시간이 소요됩니다. SOAP 메시지는 크고 무거운 XML 형식을 사용하기 때문에 네트워크 전송 시 오버헤드가 발생합니다.
    • 중간 속도: 단순한 웹 서비스에서는 사용 가능하지만, 대규모 또는 고성능이 요구되는 시나리오에서는 적합하지 않습니다.
  3. WCF (Windows Communication Foundation):
    • 속도는 바인딩과 사용 시나리오에 따라 다름: WCF는 SOAP뿐만 아니라 TCP, Binary, Named Pipes와 같은 다양한 프로토콜을 지원합니다. SOAP 기반의 WCF는 ASMX와 비슷한 속도를 보이지만, REST 기반의 WCF는 빠릅니다. TCPBinary 프로토콜을 사용하면 성능을 크게 개선할 수 있습니다.
    • 복잡한 설정: 다양한 바인딩과 고급 기능을 제공하므로, 기능이 복잡할수록 성능에 영향을 미칠 수 있습니다.
  4. ASP.NET Web API:
    • 가장 빠름: 경량의 RESTful API로 HTTP 기반의 JSON 처리에 최적화되어 있어 매우 빠릅니다. 웹 서비스에서 사용하는 가장 간단하고 효율적인 방식입니다.
    • 빠른 데이터 처리: 주로 JSON을 사용하므로 직렬화/역직렬화 속도가 빠르고, 데이터 크기도 SOAP에 비해 작아서 네트워크 전송 속도가 빠릅니다.
    • 대규모 트래픽 처리에 적합: RESTful API는 대규모 트래픽을 처리하는 데 유리하며, 서버 리소스를 효율적으로 사용합니다.

메모리 사용량 비교

  1. ASPX (ASP.NET WebForms):
    • 메모리 사용이 높음: ASPX는 ViewStateSession 등의 상태 정보를 서버 메모리에 저장합니다. 이로 인해 동시 사용자 수가 많아지면 메모리 사용량이 크게 증가할 수 있습니다.
    • 복잡한 UI와 서버 컨트롤 사용: 복잡한 서버 컨트롤과 동적 페이지 구성은 메모리 사용을 더욱 증가시킵니다.
  2. ASMX (ASP.NET Web Services):
    • 중간 정도의 메모리 사용량: ASMX는 XML 직렬화SOAP 메시지 처리로 인해 메모리를 다소 많이 사용합니다. 특히 XML 형식의 데이터는 크기가 크기 때문에 직렬화/역직렬화 과정에서 메모리 소모가 큽니다.
  3. WCF (Windows Communication Foundation):
    • 중간에서 높음: WCF는 다양한 프로토콜과 기능을 지원하기 때문에 바인딩 방식에 따라 메모리 사용량이 달라집니다. SOAP 기반 WCF는 메모리를 많이 사용하지만, Binary 프로토콜을 사용할 경우 메모리 사용량을 줄일 수 있습니다.
    • 고급 기능 사용 시 메모리 사용 증가: 보안, 트랜잭션, 세션 관리 등의 기능을 사용할 경우, 메모리 사용이 크게 증가할 수 있습니다.
  4. ASP.NET Web API:
    • 메모리 사용이 가장 적음: ASP.NET Web API는 경량의 RESTful API로, 상태 관리가 없고 JSON 기반 데이터 처리가 주로 이루어지므로 메모리 사용량이 가장 적습니다.
    • 가벼운 프로토콜: HTTP와 JSON은 메모리 효율성이 높기 때문에, 다수의 동시 요청을 처리하는 환경에서도 메모리 사용이 적습니다.

결론

  • 속도:
    • ASP.NET Web API는 경량 RESTful API로 가장 빠른 성능을 보입니다.
    • WCF는 바인딩과 프로토콜에 따라 성능이 달라지며, REST 기반 WCF는 빠르고 SOAP 기반 WCF는 느릴 수 있습니다.
    • ASMXSOAP 기반으로 느린 성능을 보입니다.
    • ASPX는 주로 UI 중심의 웹 애플리케이션에 사용되며, 가장 느린 웹 서비스 성능을 보입니다.
  • 메모리 사용량:
    • ASP.NET Web API는 경량 구조로 인해 메모리 사용량이 가장 적습니다.
    • WCF는 사용되는 기능에 따라 메모리 사용량이 다양하지만, 복잡한 설정을 통해 메모리 소모가 클 수 있습니다.
    • ASMX중간 정도의 메모리 사용량을 보이며, 주로 XML 직렬화로 인한 메모리 소모가 큽니다.
    • ASPX는 ViewState와 서버 상태 관리로 인해 가장 많은 메모리를 사용합니다.

따라서, 경량 서비스고성능이 중요한 경우 ASP.NET Web API가 가장 적합하며, 복잡한 통신 시나리오가 필요한 경우에는 WCF가 적합합니다. ASMX는 단순한 SOAP 웹 서비스에 적합하고, ASPX는 웹 서비스보다는 UI 중심의 애플리케이션에 더 적합합니다.