[ASP.NET] ASP.NET Web Form 데이터 통신 및 SOAP

Ceing·2025년 3월 6일
0

ASP.NET

목록 보기
2/13
post-thumbnail

※ SOAP 이란?

  • XML 기반 웹 서비스 통신 프로토콜

  • WSDL(Web Services Description Language)을 사용하여 서비스 설명

  • HTTP, SMTP, TCP/IP 등 다양한 프로토콜로 통신 가능

  • 보안 및 트랜잭션 관리가 뛰어나지만 무거운 XML을 사용하면서 속도는 느림


※ SOAP 데이터 통신 흐름

  1. 클라이언트가 SOAP 요청 생성(XML 형식) 후 서버에 전송

  2. 서버가 SOAP 요청 분석 후 내부 비즈니스 로직 처리

  3. 서버가 SOAP 응답 생성(XML) 후 클라이언트에 전송

  4. 클라이언트에선 SOAP 응답을 분석 후 데이터 사용해서 최종 HTML 랜더링


※ PostBack이란?

  • 그냥 단순히 폼에서 submit 제출하기 버튼 누르면 데이터들이 서버로 POST로 요청되는 것을 뜻함
  • 그래서 if(isPostBack)을 통해 첫 요청인지 확인할 수 있음
  • 폼 입력 후 <asp:Button> 혹은 <button>으로 폼 POST 요청이 발생, 그냥 내가 아는 것
  • 첫 방문에는 isPostBack=false이고, 버튼 클릭 시에는 isPostBack=true가 됨

1. ASP.NET Web Form(.aspx) => 코드 비하인드(.aspx.cs) 동작 흐름(SSR)

일반 요청

  1. HTTP 요청(https://www.koreabaseball.com/)

  2. ASP.NET의 Web Form(.aspx)이 요청 받음(aspx 파일 자체가 어떻게 보면 순수 HTML이 아니라 확장자가 .aspx이므로 서버 역할을 하니 MVC에서 컨트롤러 역할도 동시에 수행하는 거네)

  3. ASP.NET 서버 컨트롤 태그가 코드 비하인드(.aspx.cs)의 데이터 및 비즈니스 로직 처리
    => 이때 만약 form에 대한 asp:TextBox 태그가 존재하면 폼 POST처리를 위해 application/x-www-form-urlencoded 요청

  4. Web Form에선 서버 컨트롤 태그 및 기본 HTML 태그들에 대한 랜더링 후 최종 HTTP 응답

AJAX 요청

  1. HTTP 요청(https://www.koreabaseball.com/)
  2. Web Form에서 JS 부분 AJAX 요청
  3. application/x-www-form-urlencoded 혹은 application/json(주로 이거) 요청 후 비즈니스 로직 처리 후 응답
  4. Web Form에선 JS 처리 후 서버 컨트롤 태그 및 기본 HTML 태그들에 대한 랜더링 후 최종 HTTP 응답

2. ASP.NET Web Form(.aspx) => 웹 서비스(.asmx) 동작 흐름(SSR)

일반 요청

  1. HTTP 요청(https://www.koreabaseball.com/)
  2. 내부에서 웹 서비스 요청(내부 메서드 호출하듯)
  3. 웹 서비스에 맞는 액션 구현체 호출
  4. Web Form에서 최종 랜더링

AJAX 요청

  1. HTTP 요청(https://www.koreabaseball.com/)
  2. ASP.NET Web Form(.aspx)에서 XML 만들어서 웹 서비스(.asmx) 요청
  3. 웹 서비스는 인터페이스 역할을 하므로(실제 인터페이스는 아님) 구현체인 엔진 중 하나를 호출
  4. 엔진은 XxxxAction.cs 이란 이름으로 지정되고 내부 비즈니스 로직 수행 후 JObject 객체 생성 후 응답, 이때는 XML로 응답되는 것인가 JSON으로 응답인가?
  5. Web Form에선 최종 랜더링 후 HTTP 응답

최종 정리

1. Web Form(.aspx) => Code Behind(.aspx.cs) 요청 방식(일반 요청 vs AJAX)

  • Web Form(.aspx) => Cord Behind(.aspx.cs) => Web Form(.aspx)을 뜻함
  • 결론은 그냥 내부 호출임
  • Web Form 내부에서 JS로 AJAX 요청을 Code Behind로 보내면 application/x-www-form-urlencoded 혹은 application/json 으로 보내짐(기본 동작이지 스프링 뷰 - 컨트롤러 간)

2. Web Form(.aspx) => Web Service(.asmx) 요청 방식(일반 요청 VS AJAX)

  • Web Form(.aspx) => Web Service(.asmx) => Action(.cs) => Web Form(.aspx)
  • 결론은 그냥 내부 호출
  • Web Form 내부에서 JS로 AJAX 요청을 Web Service로 보내면 기본적으로 SOAP 방식을 통해 XML 형태로 데이터가 전송됨
  • Web Service에서 JObject를 반환하면 이땐 JSON으로 데이터 교환이 이루어지니 다시 Web Form에는 JSON 데이터가 리턴되는 것

※ 네트워크 통신은 무조건 JS 요청을 해야 이뤄짐(CSR)

서버 내부에선 그냥 내부 호출이고 JS를 써야 해당 부분을 CSR로 랜더링하기 위해 서버에 원하는 데이터를 요청 보내는 것, 나머지 SSR 부분은 전부 랜더링되는 것!

profile
이유에 대해 끊임없이 생각하고 고민하는 개발자

0개의 댓글