개발 노트/ASP.NET Core 34

IdentityServer 학습 #2

(1) IdentityServer가 추가되어있는 솔루션에 새로운 API 프로젝트를 추가해 줍니다. dotent new webapi -n {프로젝트명} --no-openapi (2) 해당 프로젝트를 솔루션에 추가해 줍니다. dotnet sln add ./src/{프로젝트폴더} (3) Microsoft.AspNetCore.Authentication.JwtBearer 라이브러리를 Nuget에서 설치해 줍니다. dotnet add ./{프로젝트폴더} package Microsoft.AspNetCore.Authentication.JwtBearer (4) 추가한 프로젝트의 Program.cs 를 다음과 같이 수정합니다. using System.Security.Claims; var builder = WebApplic..

IdentityServer 학습 #1 - 기본셋팅

본 내용은 다음 원문을 정리한 글입니다. 원문링크 : https://docs.duendesoftware.com/identityserver/v7/quickstarts/1_client_credentials/ 예제 프로젝트 생성 순서 * 본문의 작성 기준은 .net8을 기준으로 작성되었습니다. (1) 다음 명령으로 Duende.IdentityServer.Templates를 설치해 줍니다. dotnet new install Duende.IdentityServer.Templates (2) 빈 솔루션 하나를 생성해 줍니다. dotnet new sln -n {솔루션명칭} (3) 빈 IdentityServer 템플릿을 추가합니다. dotnet new isempty -n IdentityServer (4) 솔루션에 프로젝..

Blazor + Efcore로 웹사이트 만들기 (2)

이제 Efcore를 설치할 차례인데, 정식 명칭은 EntityFramework Core로, 나름 Microsoft의 철학이 녹아든 ORM입니다. 초기부터 Code First, Db First 등과 같이 다양한 방법으로 DB를 제어하는 기능해왔으며, 현재는 이 Entity framework와 유사한 접근 방식을 Node.js에 TypeORM이나 Sequelize 같은 orm 들이 따라하고 있습니다. Db 테이블을 하나의 Entity와 매칭하여 관리하는 것은 굉장히 큰 메리트를 제공하며, Dotnet의 linq, lambda와 함께 "아름다운 코드"를 생성하는 극한의 매력을 선사합니다. 저는 2014년도에 처음 이 Entity framework를 접했고, 당시에 java 코드가 C# 코드랑 거의 똑같다고 생..

Blazor + Efcore로 웹사이트 만들기 (1)

Microsoft에서 만든 웹어셈블리 기술이 Blazor 입니다. 웹소켓 기술인 SignalR과 연계되어, 전통적인 서버사이드 방식 외에도 클라이언트 사이드 방식을 제공하여, 프론트엔드 영역으로까지 확장된 기술이라고 볼 수 있습니다. 국내에서는 거의 활용되고 있지 않지만, 가끔씩 만나볼 수 있습니다. 본 프로젝트의 의의는 C# 이라는 언어 하나만 가지고도 온전한 웹사이트를 구성할 수 있다는데 있습니다. 물론 그럼에도 불구하고 웹에 대한 이해는 반드시 필요합니다. (HTML, CSS, Javascript) 웹에 대한 이해를 바탕으로 C#으로 거의 모든 구성이 가능한 웹서비스, 블레이저(Blazor)를 만나봅시다. 먼저 vs2022에서 프로젝트를 생성해 봅시다. Blazor Web App을 선택하고 다음 버..

C# 프로그램 예제연습 - 텍스트게임만들기 - 08

자 이제 그동안 배운걸 총동원해서 Program.cs 에서 게임의 흐름을 작성해 봅시다. 먼저 기존에 작성했던 코드 맨 아래에 Dungeon() 함수를 추가해 줍니다. static void Main(string[] args) { Init(); player.Name = GetUserName(); Hello(player.Name); Dungeon(); } 던전함수는 플레이어가 던전에 입장하면 하게될 전체 로직이 작성될 곳입니다. 최초에 등장할 좀비를 포함하여 총 20마리의 몹을 처치하고, 모두 제거하고 나면 보스인 뱀파이어를 만나야 합니다. static void Dungeon() { IMonsterAction monster = null; //현재 상대할 몬스터입니다. Random random = new Ra..

C# 프로그램 예제연습 - 텍스트게임만들기 - 07

자, 이번에는 이제 보스 몹에 대한 클래스를 만들어 봅시다. Entities폴더에서 우클릭하여 [추가] - [클래스]를 선택합니다. Vampire.cs 를 입력하고 다음과 같이 클래스를 작성합니다. using ConsoleExample.Game01.Abstracts; namespace ConsoleExample.Game01.Entities { internal class Vampire : Monster, IMonsterAction { public Vampire() { this.Name = "뱀파이어"; this.IsDead = false; this.Health = 400; this.Attack = 20; this.Guard = 5; } public string GetName() { return this.N..

C# 프로그램 예제연습 - 텍스트게임만들기 - 06

오늘은 몹들을 등장시키기 위한 작업을 할 겁니다. 제 구상은 이렇습니다. 일전에 배운 배열에 몹들을 랜덤하게 담을 겁니다. 총 20마리의 몹을 배열에 담아서 배열에 있는 모든 몹을 물리치면 보스를 만나고, 보스를 이기면 끝나는 형식이 될 겁니다. 그런데 각기 다른 몹들을 배열안에 일관되게 담고, 동일한 행위를 호출하기 위해서는 이들에게 동일한 기능이 있다는 것을 프로그램에게 알려줘야 합니다. 우리는 그걸 인터페이스(interface)라고 부릅니다. 인터페이스는 규칙이에요! 예를 들어, 교실에서 학생들은 선생님이 정한 규칙을 따라야 해요. 그 규칙에는 일어서기, 문을 열고 닫기, 친구에게 인사하기 등이 있을 거에요. 이렇게 학생들이 지켜야 하는 규칙이 바로 '인터페이스'라고 생각할 수 있어요. 컴퓨터 프로..

C# 프로그램 예제연습 - 텍스트게임만들기 - 05

우리는 기초연습때 콘솔로 이름을 입력 받는 것과 프로그램의 흐름을 함수로 나누는 것을 연습해 보았습니다. 아직 잊은 거 아니겠지요? 이제 그 내용을 복습해 보도록 하겠습니다. 프로그램의 진입점에서 함수를 호출해서 게임이 진행되게 할 겁니다. 먼저 Program 함수 내에 나 자신을 선언해 줘야 하므로, User 클래스를 player란 이름으로 선언해 줍니다. static User player; static void Main(string[] args) { Init(); player.Name = GetUserName(); Hello(player.Name); } 기존에 만들었던 함수와 동일한 구조로 작성하되, 달라진 부분은 User 라는 클래스를 player란 이름의 인스턴스로 만들어서 사용한다는 점만 달라졌..

C# 프로그램 예제연습 - 텍스트게임만들기 - 04

지난 시간에 우린 몹(Monster)에게 공격력과 방어력이라는 공통 항목을 추가해 주는 과정을 통해 상속에 대해 이야기 했습니다. 그런데 공격력과 방어력은 사용자에게도 있어야 겠죠? 그러니 우리 User.cs 에도 동일하게 공격력과 방어력을 넣어줍시다. internal class User { public bool IsDead { get; set; } public string Name { get; set; } public int Health { get; set; } public int Attack { get; set; } public int Guard { get; set; } public User() { this.IsDead = false; this.Name = string.Empty; this.Healt..

반응형