.NET

    [ASP.NET Core] SQL 사용하기

    아래 method를 사용하기 위해서는 Microsoft.EntityFrameworkCore와 Microsoft.EntityFrameworkCore.Relational package가 설치되어 있어하며 using Microsoft.EntityFrameworkCore; 으로 namespace사용을 선언합니다. 1. FromSqlRaw / FromSqlInterpolated TestContext tc = new TestContext(); tc.TblUser.FromSqlRaw($"Select seq, userID, userPW From TBL_User;").ToList(); //또는 string user = "abc"; tc.TblUser.FromSqlRaw($"Select seq, userID, userPW..

    [ASP.NET Core] Entity Framework Core (Code-First)

    [ASP.NET Core] Entity Framework Core (Code-First)

    Entity Framework Core는 응용 program과 database 간 연동을 위한 것으로, 사용하는 방식에 따라 Code-First방식과 DB-First방식 2가지가 존재합니다. Code-First방식은 C#으로 Code를 작성하고 해당 Code를 통해 DB에 Table을 생성해서 사용하는 방식이며 반대로 DB-First방식은 DB에 Table을 먼저 생성하고 생성된 Table의 사양에 맞춰 C# Code로 생성해 사용하는 방식입니다. 위 2가지 방식중에서 먼저 Code-First방식에 대해 알아보고자 합니다. Code-First방식은 C#으로 Code를 먼저 작성한다고 하였는데 [.NET/ASP.NET Core] - [ASP.NET Core] 의존성 주입(Dependency Injectio..

    [ASP.NET Core] 의존성 주입(Dependency Injection)

    [ASP.NET Core] 의존성 주입(Dependency Injection)

    흔히 '관심사의 분리'라 하는 것으로 MVC pattern의 가장 중요한 특징 중 하나에 해당합니다. program을 이루는 각 부분의 밀접도를 최소화하여 독립성을 유지하고자 하는 개념으로 new를 통해 곧바로 instance를 생성하는 것이 아니라 interface를 이용해 의존성 주입을 구현하고 이로 인해 program을 이루는 각 구성요소의 관심사를 최대한 분리하고자 하는 것이 핵심입니다. 응용 program의 상호의존성이 너무 강하면 하나의 변경사항으로 다른 쪽 수정사항을 유발하게 되고 또 그것으로 인해 생각지 못한 전혀 다른 부분에서의 수정 작업을 거쳐야 하는 등 비효휼적인 과정이 너무 많이 발생할 수 있습니다. 따라서 의존성을 줄이면 서로 간의 변경사항에 대한 영향력을 최소화할 수 있게 됩니다..

    [ASP.NET Core] MVC Pattern

    [ASP.NET Core] MVC Pattern

    MVC는 Model, View, Controller를 의미하는 것으로 이 3개의 구조를 통해 web project가 완성되는 것을 말합니다. 해당 구조의 간단한 예를 만들어 보기 위해 가상의 website에서 login 하는 과정으로 mvc pattern구조를 적용해 보도록 하겠습니다. Visual Studio 2019를 시작해 새 project에서 'ASP.NET Core Empty'를 선택합니다. project이름 따윈 중요하지 않으므로 대충 입력하고 넘어갑니다. project는 아무것도 없는 상태에서 시작하므로 몇 가지 사전 설정이 필요합니다. project에서 startup.cs file을 열고 다음과 같이 수정합니다. namespace WebApplication1 { public class St..

    .NET과 C# 시작하기

    .NET과 C# 시작하기

    1. 개발환경 Programming을 하려면 그에 맞는 개발환경이 갖추어져 있어야 할 것입니다. 이를 위해 Microsoft에서는 다음과 같은 Code편집기와 IDE(integrated Development Environments)를 제공하고 있습니다. Visual Studio Code GitHub Codespaces Visual Studio 2019 또는 Visual Studio 2019 for Mac ● Vsual Studio Code 가벼우면서도 최신의 개발환경을 지원하는 Code편집기로는 Visual Studio Code가 있으며 Windows, MacOS나 Red Hat/Ubuntu와 같은 Linux등 다양한 운영체제를 지원하기도 합니다. Visual Studio Code는 기본기능 이외에 다양..

    [C#] TCP/IP 통신

    [C#] TCP/IP 통신

    1. TCP/IP 컴퓨터 사이에 데이터를 주고받으려면 나름대로의 규칙이 필요합니다. 어떠한 방법으로 어떠한 방식을 통해 전송할 것인가를 정해야 하고 그래야 데이터를 그 약속대로 보내고 받을 수 있을 것입니다. 데이터를 주고받기 위한 이러한 규칙을 '프로토콜'이라고 부르며 세상에 존재하는 다양한 프로토콜 중 'TCP/IP'는 사실상 인터넷의 표준 프로토콜이라 할 수 있습니다. TCP/IP는 논리적으로 몇개의 계층구조로 나누어지는데 최상단 응용계층부터 링크(네트워크 접근) 계층까지 각 계층마다 층을 이루고 있으며 이러한 층을 'TCP/IP 스택'이라고 합니다. 웹 브라우저에서 부터 카톡과 같은 메신저나 유튜브 등 다양한 인터넷 서비스들이 이 'TCP/IP 프로토콜'을 통해 이루어지고 있습니다. ● 패킷 인터..

    [.NET] 가비지 컬렉션(Garbage Collection)

    [.NET] 가비지 컬렉션(Garbage Collection)

    1. 가비지 컬렉션의 개요 가비지 컬렉션은 메모리 수거를 의미하며 .NET CLR의 가비지 컬렉터가 가비지 컬렉션을 수행하여 메모리를 관리합니다. C나 C++에서는 객체를 위한 메모리 공간을 확보하고 객체를 할당한 후에 해당 객체의 작업이 종료되면 할당했던 메모리의 힙을 가리키는 포인터를 통해 메모리를 해제하는 작업을 직접 구현해야 합니다. 문제는 이 과정에서 메모리 해제를 제대로 해주지 않으면 메모리가 낭비되는 결과를 초래하게 된다는 것입니다. C/C++런타임이 객체를 메모리에 할당하는 과정을 보면 일단 여러 개의 블록으로 나누어진 메모리를 링크드 리스트로 연결해 관리하는데 만약 객체를 할당해야 하는 순간이 오면 해당 객체를 할당할만한 적당한 메모리 블록을 찾은 뒤 해당 블록을 다시 객체에 맞게 나누어..

    [C#] Thread(스레드)와 Task(태스크)

    [C#] Thread(스레드)와 Task(태스크)

    1. 프로세스와 스레드 프로세스라 함은 실행파일이 실행되어 실행파일과 관련된 모든 데이터가 메모리에 적재되어 실행되는 상태를 말합니다. 프로세스는 자신만의 스레드를 가질 수 있으며 이 스레드로 프로그램에 필요한 동작을 수행합니다. 따라서 프로세스는 반드시 하나이상의 스레드를 가지며 스레드는 CPU가 프로그램 실행을 위해 시간을 할애하는 기본 단위가 됩니다. 프로그램이 내부에 여러작업을 수행해야 하는 경우라면 스레드를 여러 개 사용하는 '멀티스레드'를 구현합니다. 예를 들어 문서편집기 프로그램의 경우 사용자가 문서를 작성하고 있으면 주기적으로 자동 저장을 해야 할 때 문서작성용 스레드와 자동 저장을 수행하는 스레드가 각각 필요할 것입니다. 시간이 오래 걸리는 계산 작업을 수행하는 경우에도 사용자가 중간에 ..