Language/ASP.NET

ASP.NET에서 데이터 전송 및 상태 관리 방법 비교: ViewBag, Session, TempData..

범데이 2024. 11. 2. 23:16
728x90

ASP.NET에서의 데이터 전송 및 상태 관리

 

 

웹 애플리케이션을 개발할 때, 여러 페이지 간에 데이터를 전달하거나, 특정 데이터 상태를 유지할 필요가 자주 있다.

ASP.NET에서는 이를 위한 다양한 방식이 제공된다. 여기서는 ViewBag, Session, TempData와 그 외의 옵션들에 대해 살펴보고, 각 방법의 특징과 사용 예시를 정리해보고자 한다.

 

 


 

 

 

 

1. ViewBag

ViewBag은 컨트롤러에서 뷰로 데이터를 전달하기 위한 동적 객체이다.

- 생존 범위: 단일 요청 사이클, 같은 페이지 요청에서만 유효하며, 새로고침이나 다른 페이지 요청 시 데이터가 초기화된다.

- 사용 예시: 단순히 컨트롤러에서 뷰로 데이터를 전달할 때 유용하다.

 

public ActionResult Index(){
	ViewBag.Message = "Hello, ASP.NET!";
    return View();
}

 

 

 

 

2. ViewData

ViewDataViewBag과 유사하지만, 딕셔너리 방식으로 키-값 쌍을 관리한다.

- 생존 범위: 단일 요청 사이클 (마찬가지로 새 요청 시 초기화된다).

- 사용 예시: 키를 문자열로 지정하여 관리할 수 있다.

 

public ActionResult Index(){
	ViewData["Message"] = "Hello, ASP.NET!";
    return View();
}

 

 

 

 

3. TempData

TempData는 Session을 기반으로 작동하며, 단일 요청 이후에도 데이터가 남아있는 것이 특징이다.

- 생존 범위: 현재 요청 + 이후 한 요청

- 사용 예시: 페이지 리다이렉트 후에도 값을 유지할 필요가 있을 때 사용된다. 예를 들어, 에러 메시지를 잠깐 표시할 떄 유용하다.

public ActionResult Save(){
	TempData["Message"] = "Data saved successfully!";
    return RedirectToAction("Confirm");
}

 

 

 

 

4. Session

Session은 각 사용자별로 긴 지속성을 가지는 데이터 저장소이다.

- 생존 범위: 세션이 유지되는 동안 (기본적으로 사용자가 브라우저를 닫거나 세션 타임아웃 발생 전까지)

- 사용 예시: 로그인 상태 유지, 사용자의 환경 설정 저장 등에 사용된다.

 

public ActionResult Login(){
	Session["UserName"] = "JohnDoe";
    return RedirectToAction("Dashboard");
}

 

 

 

5. Application State

Application State는 애플리케이션 전체에서 공용으로 사용되는 데이터 저장소이다. 모든 사용자가 접근할 수 있어 특정 상황에서 유용하다.

- 생존 범위: 애플리케이션의 수명(서버 재시작 시 초기화)

- 사용 예시: 사용자 카운트 등 앱 전역의 공통 데이터에 적합하다.

 

Application["UserCount"] = 100;

 

 

 

 

6. Cookies

Cookies는 클라이언트 쪽에 저장되는 작은 데이터 파일로, 브라우저에 정보를 저장할 수 있다.

- 생존 범위: 쿠키 만료 설정에 따름(기본적으로 브라우저가 종료될 때 삭제되지만, 지속형 쿠키 설정 가능)

- 사용 예시: 브라우저가 닫힌 후에도 데이터를 유지해야 할 때, 예를 들어 로그인 상태를 유지할 때 사용된다.

 

HttpCookie cookie = new HttpCookie("UserSettings") {
	Value = "darkMode",
    Expires = DateTime.Now.AddDays(7)
};
Response.Cookies.Add(cookie);

 

 

결론

 

ASP.NET에서 제공하는 다양한 데이터 저장 방식을 이해하고 올바르게 활용하면, 데이터의 범위와 유지 기간을 쉽게 관리할 수 있다. 각각의 방법은 특정 상황에 적합하므로, 목적에 따라 알맞은 방식을 선택하여 애플리케이션의 효율성와 유지 보수성을 높여보자.

 

 

 


#References

https://www.scholarhat.com/tutorial/mvc/viewdata-vs-viewbag-vs-tempdata-vs-session

https://stackoverflow.com/questions/15203870/viewbag-viewdata-tempdata-session-how-and-when-to-use-them

https://www.codeproject.com/Articles/1223695/Passing-Data-Using-ViewData-ViewBag-TempData-Sessi

https://www.c-sharpcorner.com/article/viewdata-viewbag-and-tempdata-in-asp-net-mvc/

https://medium.com/@andrezadossantosabrantes/viewbag-viewdata-and-tempdata-366951ce8798

반응형

'Language > ASP.NET' 카테고리의 다른 글

[ASP.NET MVC5] Controller POST, DELETE 요청 메서드 만들기  (0) 2024.06.29
ASP.NET와 ASP.NET Core의 차이점  (0) 2023.06.11
ASP.NET Core의 폴더 구조  (0) 2023.06.11
ASP.NET에 대해  (0) 2023.06.11