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 기반 요청 처리 |
추천 | X | X | X | O |
속도 비교
- ASPX (ASP.NET WebForms):
- 속도가 느림: ASPX는 UI 렌더링과 ViewState 관리로 인해 서버 측에서 많은 리소스를 사용합니다. 특히, 페이지에 있는 컨트롤이 많거나 복잡한 로직이 포함된 경우, 처리 속도가 느려질 수 있습니다.
- 상태 관리 부하: ViewState와 Session 등 서버에서 관리하는 상태 정보가 많아질수록 메모리 사용량이 증가하고 속도는 더 느려집니다.
- ASMX (ASP.NET Web Services):
- SOAP 기반의 느린 성능: ASMX는 SOAP 프로토콜과 XML 직렬화/역직렬화를 사용하므로, 데이터 처리에 많은 시간이 소요됩니다. SOAP 메시지는 크고 무거운 XML 형식을 사용하기 때문에 네트워크 전송 시 오버헤드가 발생합니다.
- 중간 속도: 단순한 웹 서비스에서는 사용 가능하지만, 대규모 또는 고성능이 요구되는 시나리오에서는 적합하지 않습니다.
- WCF (Windows Communication Foundation):
- 속도는 바인딩과 사용 시나리오에 따라 다름: WCF는 SOAP뿐만 아니라 TCP, Binary, Named Pipes와 같은 다양한 프로토콜을 지원합니다. SOAP 기반의 WCF는 ASMX와 비슷한 속도를 보이지만, REST 기반의 WCF는 빠릅니다. TCP나 Binary 프로토콜을 사용하면 성능을 크게 개선할 수 있습니다.
- 복잡한 설정: 다양한 바인딩과 고급 기능을 제공하므로, 기능이 복잡할수록 성능에 영향을 미칠 수 있습니다.
- ASP.NET Web API:
- 가장 빠름: 경량의 RESTful API로 HTTP 기반의 JSON 처리에 최적화되어 있어 매우 빠릅니다. 웹 서비스에서 사용하는 가장 간단하고 효율적인 방식입니다.
- 빠른 데이터 처리: 주로 JSON을 사용하므로 직렬화/역직렬화 속도가 빠르고, 데이터 크기도 SOAP에 비해 작아서 네트워크 전송 속도가 빠릅니다.
- 대규모 트래픽 처리에 적합: RESTful API는 대규모 트래픽을 처리하는 데 유리하며, 서버 리소스를 효율적으로 사용합니다.
메모리 사용량 비교
- ASPX (ASP.NET WebForms):
- 메모리 사용이 높음: ASPX는 ViewState와 Session 등의 상태 정보를 서버 메모리에 저장합니다. 이로 인해 동시 사용자 수가 많아지면 메모리 사용량이 크게 증가할 수 있습니다.
- 복잡한 UI와 서버 컨트롤 사용: 복잡한 서버 컨트롤과 동적 페이지 구성은 메모리 사용을 더욱 증가시킵니다.
- ASMX (ASP.NET Web Services):
- 중간 정도의 메모리 사용량: ASMX는 XML 직렬화와 SOAP 메시지 처리로 인해 메모리를 다소 많이 사용합니다. 특히 XML 형식의 데이터는 크기가 크기 때문에 직렬화/역직렬화 과정에서 메모리 소모가 큽니다.
- WCF (Windows Communication Foundation):
- 중간에서 높음: WCF는 다양한 프로토콜과 기능을 지원하기 때문에 바인딩 방식에 따라 메모리 사용량이 달라집니다. SOAP 기반 WCF는 메모리를 많이 사용하지만, Binary 프로토콜을 사용할 경우 메모리 사용량을 줄일 수 있습니다.
- 고급 기능 사용 시 메모리 사용 증가: 보안, 트랜잭션, 세션 관리 등의 기능을 사용할 경우, 메모리 사용이 크게 증가할 수 있습니다.
- ASP.NET Web API:
- 메모리 사용이 가장 적음: ASP.NET Web API는 경량의 RESTful API로, 상태 관리가 없고 JSON 기반 데이터 처리가 주로 이루어지므로 메모리 사용량이 가장 적습니다.
- 가벼운 프로토콜: HTTP와 JSON은 메모리 효율성이 높기 때문에, 다수의 동시 요청을 처리하는 환경에서도 메모리 사용이 적습니다.
결론
- 속도:
- ASP.NET Web API는 경량 RESTful API로 가장 빠른 성능을 보입니다.
- WCF는 바인딩과 프로토콜에 따라 성능이 달라지며, REST 기반 WCF는 빠르고 SOAP 기반 WCF는 느릴 수 있습니다.
- ASMX는 SOAP 기반으로 느린 성능을 보입니다.
- ASPX는 주로 UI 중심의 웹 애플리케이션에 사용되며, 가장 느린 웹 서비스 성능을 보입니다.
- 메모리 사용량:
- ASP.NET Web API는 경량 구조로 인해 메모리 사용량이 가장 적습니다.
- WCF는 사용되는 기능에 따라 메모리 사용량이 다양하지만, 복잡한 설정을 통해 메모리 소모가 클 수 있습니다.
- ASMX는 중간 정도의 메모리 사용량을 보이며, 주로 XML 직렬화로 인한 메모리 소모가 큽니다.
- ASPX는 ViewState와 서버 상태 관리로 인해 가장 많은 메모리를 사용합니다.
따라서, 경량 서비스와 고성능이 중요한 경우 ASP.NET Web API가 가장 적합하며, 복잡한 통신 시나리오가 필요한 경우에는 WCF가 적합합니다. ASMX는 단순한 SOAP 웹 서비스에 적합하고, ASPX는 웹 서비스보다는 UI 중심의 애플리케이션에 더 적합합니다.