.NET/ASP.NET

    [ASP.NET Core] - 12. URL Routing

    [ASP.NET Core] - 12. URL Routing

    URL Routing기능을 사용하면 요청 URL의 Matching과 처리를 통합하여 응답을 좀 더 쉽게 생성할 수 있습니다. URL Routing기능을 이해하기 위해 ASP.NET Core platform이 URL Routing을 지원하는 방식을 알아보고 직접 사용해 볼 것입니다. 또한 이를 통해 Middleware component의 생성을 어떻게 대체할 수 있는지도 알아볼 것입니다1. Project 준비하기예제 Project는 이전에 사용하던 Platform project를 계속 사용할 것이며 추가로 Trans.cs이름의 file을 아래와 같이 추가합니다.namespace Platform;public class Trans { private RequestDelegate? next; publi..

    [ASP.NET Core] - 11. ASP.NET Core platform

    [ASP.NET Core] - 11. ASP.NET Core platform

    ASP.NET Core platform자체는 Web Application을 만드는 기반에 해당하며 여기에 MVC나 Blazor와 같은 Framework를 사용할 수 있는 기능을 제공합니다. 이번 글에서는 ASP.NET Core platform과 관련하여 ASP.NET Core project에서 생성되는 각 file에 대한 목적과 ASP.NET Core 요청 pipeline이 HTTP요청을 처리하기 위해 어떻게 사용되는지, 그리고 이러한 것들을 어떻게 사용자정의할 수 있는지에 대해 알아봄으로써 전반적인 ASP.NET Core기능의 작동방식을 파악해 보고자 합니다. 별것 아닌 사소한 부분에 해당하는 것 같지만 사실 여기서 설명하는 것은 ASP.NET Core가 동작하는 것에 대한 기본적인 사항들로서 이러한 ..

    [ASP.NET Core] - 10. Shopping mall project 만들기 - 5 (2nd)

    [ASP.NET Core] - 10. Shopping mall project 만들기 - 5 (2nd)

    ASP.NET Core Identity system에서 제공하는 인증과 권한은 ASP.NET Core platform및 개별 application framework에 깔끔하게 통합됩니다. 이를 이용해 Admin라 불리는 단 하나의 사용자만이 application의 관리자기능에 인증및 접근할 수 있도록 하는 기본적인 보안 설정을 만들것입니다. ASP.NET Core Identity는 application및 data로 접근가능한 권한 및 사용자 인증을 위한 더 많은 기능을 제공하고 있으며 그것 자체로 하나의 큰 framework이기 때문에 여기서는 기본적인 기능만을 살펴보려고 합니다. 이 글의 목표는 사용자가 application의 민감한 부분에 접근하게 되는 것을 방지하기 위해 무엇이 필요한지를 확인하는데..

    [ASP.NET Core] - 9. Shopping mall project 만들기 - 4 (2nd)

    [ASP.NET Core] - 9. Shopping mall project 만들기 - 4 (2nd)

    고객이 Product를 주문하기까지의 기능은 모두 완료되었습니다. 그러나 아직 한 가지 더 해결해야 할 문제가 남았는데 그것은 관리자가 주문과 Product를 어떻게 관리할 수 있냐 하는 것입니다. 이를 해결하기 위해 관리자 기능을 추가할 텐데 이번 예제에서는 Blazor를 사용하여 해당 기능을 추가할 것입니다. Blazor는 client-side JavaScript code와 ASP.NET Core에 의해서 실행되는 server-side code를 결합하는 것으로 영속적 HTTP 연결(persistent HTTP connection)을 통해 연결됩니다. Blazor에 관해서는 추후에 상세히 다루겠지만 분명히 알아둬야 할 것은 Blazor가 모든 Project에 적합한 것은 아니라는 것입니다. Blazo..

    [ASP.NET Core] - 8. Shopping mall project 만들기 - 3 (2nd)

    [ASP.NET Core] - 8. Shopping mall project 만들기 - 3 (2nd)

    이제 Cart까지 기능을 완성하였는데 지금부터는 외형적 기능이 아닌 내부적인 개선에 집중해 보고자 합니다. 1. Service를 통한 Cart model 개선 지난번에는 Cart를 위해 Cart Model을 정의하였으며 Session기능을 통해 어떻게 이 개체를 저장할 수 있는지를 살펴보았습니다. Cart는 예제 Project에서 무엇보다 중요한 기능이며 지속적인 관리는 Session data로서 저장하고 가져오는 동작을 수행하는 Cart Razor Page를 통해 이루어져야 할 것입니다. 예제에서의 접근방법에 대한 문제는 다른 Razor page나 Controller에서 이를 사용하고자 할 때 Cart개체를 저장하고 가져오는 Code가 중복될 수 있다는 것입니다. 이를 개선하기 위해 ASP.NET Co..

    [ASP.NET Core] - 7. Shopping mall project 만들기 - 2 (2nd)

    [ASP.NET Core] - 7. Shopping mall project 만들기 - 2 (2nd)

    Shopping mall project 만들기 - 2에서는 'Shopping mall project 만들기 - 1'에 이어서 CompuMall에 Navigation과 Cart기능을 추가하고자 합니다. 1. Navigation 만들기 사용자가 mall에 방문했을 때 Product를 Category별로 나열해 볼 수 있으면 원하는 제품을 찾기에 훨씬 유용할 것입니다. 이를 위해 다음 3가지 단계를 거쳐 해당 기능을 추가하고자 합니다. HomeController의 Index method를 변경하여 repository에서 Product 개체를 filter할 수 있도록 할 것입니다. URL scheme를 더 친화적으로 개선할 것입니다. Site의 한쪽 편에 표시할 Category List영역을 만들고 현재 선택한..

    [ASP.NET Core] - 6. Shopping mall project 만들기 - 1 (2nd)

    [ASP.NET Core] - 6. Shopping mall project 만들기 - 1 (2nd)

    이제까지 ASP.NET Core 개발에 필요한 여러 사항들을 알아보았으므로 이를 토대로 간략한 Project를 하나 진행해 볼 것입니다. Project는 Comuter 부품을 판매하는 Shopping mall로 사용자가 찾아볼 수 있는 제품과 제품의 category 그리고 특정 상품을 담아 둘 수 있는 Cart, 주문현황의 상세를 볼 수 있는 Checkout 기능을 만들어 볼 것입니다. 또한 Shopping mail자체를 관리하는 관리자기능도 같이 추가해 보고자 합니다. ASP.NET Core를 사용하여 가능한한 실질적인 Application을 만들어 봄으로서 Application이 만들어지는 전체적인 개념을 이해하고자 하지만 ASP.NET Core가 주된 주제이므로 Database와 같은 외부 syst..

    [ASP.NET Core] - 5. 단위 Test (2nd)

    [ASP.NET Core] - 5. 단위 Test (2nd)

    단위 Test는 Application의 개별적 요소를 독립적으로 분리하여 Test를 수행하는 것으로 Application의 오류를 최소화하는데 중점을 둡니다. ASP.NET Core는 단위 test를 쉽게 만들 수 있도록 설계되었으며 다양한 단위 test framework를 지원합니다. 1. Project 준비 단위 test를 사용해 볼 Project를 생성하기 위해 PowerShell을 열고 적당한 위치에서 아래 명령을 내려줍니다. dotnet new globaljson --sdk-version 8.0.202 --output UnitTest/UnitTest dotnet new web --no-https --output UnitTest/UnitTest --framework net8.0 dotnet new..