ASP.NET Core는 마이크로소프트의 웹 개발 플랫폼입니다. 본래 ASP.NET은 2002년에 등장하였는데 현재의 ASP.NET Core로 완성되기 위해 수많은 재개발 과정을 거쳐오게 되었고 현재의 ASP.NET Core는 HTTP 요청을 처리하기 위한 플랫폼과 애플리케이션을 생성하기 위한 일련의 주된 프레임워크, 몇몇 기능 지원을 제공하기 위한 부수적인 유틸리티 프레임워크로 구성하게 되었습니다.
마이크로소프트가 만들어낸 .NET이름과 ASP.NET Core사이에는 특별한 연관성이 있는데 몇 년 전 마이크로소프트의 ASP.NET 담당 부서는 자체적인 .NET 플랫폼 버전을 만들어 다른 .NET보다 더 자주 ASP.NET이 업데이트될 수 있게 하였습니다.
이렇게 크로스-플렛폼 개발이 가능한 ASP.NET Core와 .NET Core가 개발되었고 API는 당시 많은 부분이 윈도즈에 특화된 본래 .NET APIs 중에서 일부분만을 사용하게 되었고 .NET Framework하에서 윈도 전용의 개발환경과는 독립적으로 웹 개발이 가능할 수 있음을 의미했습니다.
.NET Framework의 현재 상태를 지속한다는 것은 무리가 있었고 .NET Core는 분명히 .NET의 미래가 될 수 있었기에 마이크로소프트의 .NET Group은 그들의 기술과 API가 .NET Core의 일부가 되어야 한다고 주장했습니다..NET Core API는 조금씩 확장되었지만 .NET Core와 .NET Framework를 구별하고 API를 표준화하려는 어중간한 시도들로 인해 그 결과 일관성 없는 혼란한 계속 되었습니다.
결국 마이크로소프트는 혼란스러운 부분을 모두 제거하고 .NET Core와 .NET Framework를 .NET Core에서 Core라는 이름을 제거한 .NET으로 통합하였습니다.
이름에서 Core를 삭제하는 문제는 일관성이 유지되지 않는다는데 있습니다. ASP.NET Core 명칭은 본래 ASP.NET의 .NET Core버전을 나타낸 것입니다.
현재는 많은 개발 문서에서 ASP.NET Core X(버전 번호)라는 이름을 볼 수 있으며 어떤 경우는 ASP.NET Core in .NET X라는 이름을 사용하기도 합니다. 어떤 이름이 맞는지는 명확하지 않지만 .NET Framework나.NET Core 또는 .NET중 어떤 것을 사용할지는 신중히 결정을 필요로 합니다.
1. Application Framework의 이해
ASP.NET Core을 사용하기로 결정하고 나면 그 뒤에 사용 가능한 여러 Application Framework이 있다는 것을 알게 될 것입니다. 이들 Framework는 상호보완적이며 같은 문제를 해결하거나 혹은 어떤 특정한 경우에 같은 문제를 다른 방법으로 해결하기도 합니다. 또한 이들 Framework사이의 관계를 이해한다는 것은 마이크로소프트가 지원하고 있는 디자인 패턴에 대한 변화를 이해한다는 것이기도 합니다.
(1) MVC Framework의 이해
MVC Framework은 .NET Core와 .NET이 도입되기 이전부터 ASP.NET시절에 도입되었습니다. 본래 ASP.NET은 Web Page라고 불리는 개발모델에 의존하는 것으로 Desktop Application의 개발경험을 적용한 것이지만 프로젝트를 확장하기가 어려웠고 완성된 프로젝트는 유지보수에서 꽤 다루기 힘든 구조였습니다. 하지만 MVC Framework은 HTTPS와 HTTP의 특성을 감추는 대신 있는 그대로 받아들이는 개발모델을 수용하면서 Web Page의 개발방식이 개선되는 동안 같이 성장하였습니다.
MVC는 Model-View-Controller를 의미하며 이는 Application의 형태를 설명하는 디자인 패턴입니다. MVC패턴은 기능적인 영역이 독립적으로 정의되는 관심사의 분리를 강조하며 이는 Web Page가 초래한 불분명한 아키텍처에 대한 효과적인 해결책이었습니다.
MVC Framework의 이전 버전은 본래 Web Page를 위해 설계된 ASP.NET Foundation기반하에 구축되었는데 이로 인해 몇몇 취약점과 회피방법이 초래되었습니다. 그러다가 .NET Core로 이동되면서 ASP.NET은 ASP.NET Core로 바뀌게 되었고 이때 MVC Framework는 cross-platform의 open source기반으로 확장/재작성되었습니다.
MVC Framework는 ASP.NET Core의 중요한 부분으로 남아 있지만 일반적으로 사용돼 오던 방식은 SPAs(single-page applications) 등장과 함께 변화되었습니다. 웹브라우저는 단일적인 HTTP 요청을 만들고 Angular나 React 같은 Javascript기반의 Framework로 작성된 클라이언트로 HTML 문서를 응답받습니다. SPAs로의 전환은 MVC Framework가 의도했던 명확한 분리를 의미하기는 하지만 중요한 것은 MVC패턴이 여전히 유용함으로 남아 있는다 해도 MVC패턴을 따르는 것에 중점을 두는 것은 더 이상 필수적이지 않다는 것입니다.
(2) Razer Page 이해
MVC Framework의 단점은 프로젝트를 시작할 때 사전에 많은 준비작업을 요구한다는 것입니다. 반면 구조적인 문제에도 불구하고 Web Page는 단순한 Application의 경우 몇 시간 안에 만들어 낼 수 있다는 장점이 있습니다.
Razor Page는 Web Page에서의 개발방식을 가져다 본래 MVC Framework으로 개발된 플랫폼의 기능을 사용해 구현합니다. 자체적인 Page형태로 코드와 Content가 혼재되는 방식은 몇몇 근본적인 기술적 문제없이 Web Page를 빠르게 재생성합니다.(비록 복잡한 프로젝트의 경우 확장하는 문제가 여전히 존재하기는 하지만)
(3) Blazor의 이해
JavaScript client-side framework의 등장은 c#개발자들에게는 새로운 것을 습득해야 하는 이유로 하나의 장애가 될 수 있습니다. Javascript는 나름대로의 매력적인 언어이기는 하지만 능숙하지 않다면 익숙해지기까지 꽤 많은 시간과 노력이 필요할 수도 있습니다.
Blazor는 Client-side Application을 작성하기 위해 C#을 사용할 수 있도록 함으로써 이러한 문제의 해결책점을 제공하고 있습니다. Blazor는 Blazor Server와 Blazor WebAssembly라는 2개의 버전을 제공하고 있는데 이 중 Blazor Server는 Application의 C#코드가 실행되는 영역인 ASP.NET Core를 지원하여 ASP.NET Core server와 지속적인 HTTP 연결을 통해 작동합니다. 반면 Blazor WebAssembly는 한 단계 더 나아간 실험적인 릴리즈로 Application의 C# Code를 Brawser에서 실행합니다. Blazor의 2개 버전 모두 대부분의 시나리오에 적용될 수 있으며 ASP.NET Core 개발에 대한 미래의 방향성을 제공해 주고 있습니다.
2. Utility Framework의 이해
다음 2개의 Framework는 ASP.NET Core와 밀접하게 연관되어 있지만 직접적으로 HTML이나 어떤 Data를 생성하는 데는 사용되지 않습니다.
- Entity Framework Core : 마이크로소프트의 ORM(Object-relational mapping) Framework로 Database의 Data를 .NET 객체로 표현하며 많은 .NET Project에서 일반적으로 databases접근을 위해 사용됩니다.
- ASP.NET Core Identity : 마이크로소프트의 인증 및 권한에 관한 Framework로 ASP.NET Core Application에서 사용자를 검증하고 기능을 제한하는 데 사용됩니다.
3. ASP.NET Core Platform의 이해
The ASP.NET Core platform은 HTTP 요청을 수신하고 처리하며 응답을 생성하는데 필요한 저수준의 기능을 포함하고 있습니다. 통합된 HTTP 서버, 요청을 제어하기 위한 미들웨어 시스템, URL 라우팅과 레이저 뷰 엔진과 같은 application framework에 의존하는 핵심적인 기능들이 그것입니다.
개발하는데 들어가는 대부분의 application framework을 다루는 데 사용될 테지만 효과적으로 ASP.NET Core를 사용하려면 높은 수준의 framework에서 가능하지 않은 것을 제외하고 platform이 제공하는 강력한 확장성에 대한 이해가 필요합니다.
'.NET > ASP.NET' 카테고리의 다른 글
[ASP.NET Core] 초간단 Application 만들어 보기 (0) | 2022.08.03 |
---|---|
[ASP.NET Core] 시작하기 (0) | 2022.07.29 |
[ASP.NET Core] Blazor 웹 프로젝트 시작하기 (0) | 2022.04.01 |
[ASP.NET Core] ASP.NET Core Web API (2) | 2022.03.25 |
[ASP.NET Core] MVC패턴 웹프로젝트 만들기 (0) | 2022.03.04 |