Language 20

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

ASP.NET에서의 데이터 전송 및 상태 관리  웹 애플리케이션을 개발할 때, 여러 페이지 간에 데이터를 전달하거나, 특정 데이터 상태를 유지할 필요가 자주 있다.ASP.NET에서는 이를 위한 다양한 방식이 제공된다. 여기서는 ViewBag, Session, TempData와 그 외의 옵션들에 대해 살펴보고, 각 방법의 특징과 사용 예시를 정리해보고자 한다.      1. ViewBagViewBag은 컨트롤러에서 뷰로 데이터를 전달하기 위한 동적 객체이다.- 생존 범위: 단일 요청 사이클, 같은 페이지 요청에서만 유효하며, 새로고침이나 다른 페이지 요청 시 데이터가 초기화된다.- 사용 예시: 단순히 컨트롤러에서 뷰로 데이터를 전달할 때 유용하다. public ActionResult Index(){ Vie..

Language/ASP.NET 2024.11.02

C#에서 비동기 프로그래밍 이해하기 - Task와 async/await의 활용

await doAsync();...public async void doAsync() {...}public async Task doAsync() {...}  1. Task란?C#에서 Task는 비동기 작업을 나타내는 클래스이다. .NET의 비동기 프로그래밍을 지원하는 핵심 요소 중 하나로, 백그라운드 스레드에서 작업을 수행하거나 I/O 바운드 작업을 비차단 방식으로 처리할 수 있게 도와준다. Task클래스는 다음과 같은 역할을 한다. - 비동기 작업을 표현: 백그라운드에서 실행되는 작업을 나타내며 작업의 시작 및 완료 여부를 추적할 수 있다.- 작업 생명주기 관리: 작업의 상태를 관리하고 완료된 작업의 결과를 반환할 수 있다.- 결과 반환 기능: 작업 결과를 반환해야 하는 경우 Task 형식을 사용하여 비..

Language/C# 2024.10.26

[ASP.NET MVC5] Controller POST, DELETE 요청 메서드 만들기

1. 개요 일반적인 HTTP 요청의 메서드는 'GET', 'POST', 'PUT', 'DELETE' 가 있고,ASP.NET MVC5의 Controller 클래스에서 아래와 같이 각 메서드별 Restful API를 만들 수 있다. 사실 모든 API를  'GET' 과 같은 단일 메서드로 만들고 처리해도 동작은 하지만, 이는 좋은 RESTful API 설계가 아니다.(HTTP 요청 메서드를 구별해야하는 이유)  기본적으로 ASP.NET MVC5에서 'PUT', 'DELETE' 메서드를 만든 후 요청 테스트를 해보면, 아래처럼 404 Not Found 응답을 반환한다.  이는 ASP.NET MVC5의 'ExtensionlessUrlHandler-Integrated-4.0' 핸들러가 보안과 안정성의 이유로 인해 ..

Language/ASP.NET 2024.06.29

[C#] iteration 안에 await문을 넣으면 안되는 이유

await 키워드를 for 루프 내부에서 사용하면 예상치 못한 동작 또는 오류가 발생할 수 있다. 특히 UI 애플리케이션이나 비동기 코드와 같은 특정 상황에서는 더욱 그렇다. 이는 await 키워드가 비동기 작업이 완료될 때까지 함수의 실행을 일시 중단하는 데 사용되기 때문이다. 부적절하게 사용하면 루프가 의도치 않은 방식으로 작동할 수 있다. 다음은 잘못된 코드의 예시이다: async Task ProcessItemsAsync(List items) { for (int i = 0; i < items.Count; i++) { ... // 비동기 작업(예: HTTP 요청)을 대기한다. await SomeAsyncMethod(); ... } } 위의 예에서는 루프 내에서 비동기 작업을 대기하면 해당 작업이 완료..

Language/C# 2024.01.18

[.NET] Garbage Collector의 영향과 Timer 클래스의 안전한 사용 방법

이 포스트에서는 C#에서 Garbage Collector의 영향과 이에 따른 Timer클래스의 안전한 사용 방법에 대해 정리해보고자 한다. Garbage Collector(GC)의 역할 Garbage Collector는 .NET Framework에서 메모리 관리를 자동화하는 중요한 요소이다. GC는 더 이상 사용되지 않는 객체들을 감지하고 이들을 메모리에서 해제하여 리소스 누수를 방지한다. 하지만 때때로 GC의 작동 방식으로 인해 예상치 못한 결과가 발생할 수 있다. 특히 Timer 클래스와 같이 주기적으로 호출되어야 하는 기능을 구현할 때에 주의가 필요하다. Timer 클래스의 일반적인 사용 방법과 GC의 영향 보통 Timer클래스를 사용하여 반복적인 작업을 수행하도록 프로그램을 구현할 수 있다. 예를..

Language/C# 2023.07.20

[.NET] System.Threading.Timer Class에 대해

해당 포스팅은 Timer Class의 공식문서를 직접 번역하면서, 부연설명을 추가하여 작성한 포스팅이다. 정의 Namespace: System.Threading Assembly: System.Runtime.dll 지정된 간격으로 thread pool thread에서 메서드를 실행하기 위한 메커니즘을 제공한다.이 클래스는 상속할 수 없다. *(스레드 풀이란? 이전 포스팅 참고) public sealed class Timer : MarshalByRefObject, IAsyncDisposable, IDisposable Inheritance Object → MarsharByRefObject → Timer Implements IDisposable, IAsyncDisposable 예제 다음 예제에서는 시그니처가 T..

Language/C# 2023.07.20

[.NET] Thread Pool에 대해 이해하기

C# .NET에서 비동기 작업을 효율적으로 처리하는 방법 중 하나는 ThreadPool을 사용하는것이다. 이 포스팅에서는 C# .NET에서 Thread Pool의 개념과 활용 방법에 대해 중점적으로 다뤄보려고 한다. Thread Pool이란? Thread Pool은 C# .NET에서 비동기 작업을 처리하기 위해 사용되는 기능이다. 기본적으로는 미리 생성된 작업자 스레드(worker thread)의 풀을 유지하면서, 작업이 들어오면 이 작업자 스레드들이 비동기적으로 작업을 처리한다. 스레드 생성과 스레드 소멸에 따른 오버헤드를 피하고, 스레드를 재사용함으로써 성능을 향상시키는 장점을 가지고 있다. Thread Pool의 사용 이점 스레드 생성 및 소멸 오버헤드 감소: 미리 생성된 스레드 풀을 사용하여 스레..

Language/C# 2023.07.20

[.NET] Garbage Collector에 대해

C# .NET에서 메모리 관리는 개발자에게 큰 부담이 될 수 있다. 이러한 부담을 줄이기 위해 C# .NET은 자동 메모리 관리 기능인 Garbage Collector를 제공한다. 이 포스팅에서는 Garbage Collector의 개념과 작동 방식에 대해 알아보고, C#에서 메모리 누수를 방지하는 방법을 정리해보고자 한다. Garbage Collector란? Garbage Collector(GC)는 동적으로 할당된 메모리 중에서 더 이상 사용되지 않는 객체를 감지하고, 이러한 객체들의 메모리를 자동으로 해제하여 시스템 자원을 최적화하는 역할을 한다. 개발자는 메모리 해제를 명시적으로 관리할 필요가 없으며, GC가 대신 처리한다. Garbage Collector 작동 방식 Mark and Sweep 알고리..

Language/C# 2023.07.20

[C#] int형 변수끼리 나눗셈 결과 소숫점 이하 값이 버려지는 현상

JavaScript과 같은 동적 타이핑(dynamic typing)을 지원하는 언어를 사용하다가 C#으로 넘어와 개발하다보면 자료형에 대해 간과하다가 이슈가 생길 때가 있다 . 이번 포스팅에서는 int형 변수끼리 나눗셈 수행하면 소숫점 이하 값이 버려지는 현상과 그 이유에 대해 알아보자. 1. 문제 현상 C#에서 int현 변수끼리의 나눗셈을 수행하면 소숫점 이하 값이 버려지고, 정수 결과로 나타나는 경우가 있다. using System; public class Program { public static void Main() { int num1 = 3; int num2 = 2; Console.WriteLine("나눗셈 결과: " + num1 / num2); } } 위의 코드를 실행하면 결과는 '1'이 출력..

Language/C# 2023.07.02

ASP.NET와 ASP.NET Core의 차이점

ASP.NET와 ASP.NET Core 모두 마이크로소프트에서 개발된 웹 애플리케이션 프레임워크이다. 하지만 둘은 몇 가지 중요한 차이점이 있다. 아래는 ASP.NET와 ASP.NET Core의 주요 차이점이다. 1. 아키텍쳐 ASP.NET은 Windows 전용이며 Windows 운영체제가 필요한 전체 .NET Framework를 기반으로 한다. 반면 ASP.NET Core는 Windows, macOS및 Linux에서 실행할 수 있는 크로스 플랫폼 프레임워크이다. ASP.NET Core는 성능과 확장성을 위해 설계된 경량의 모듈식 아키텍처를 기반으로 한다. 2. 크로스 플랫폼 지원 앞서 언급했듯이, ASP.NET Core는 플랫폼 간 지원을 제공하여, 개발자가 다양한 운영 체제에서 웹 애플리케이션을 빌드..

Language/ASP.NET 2023.06.11
반응형