팁 (조언)
이 콘텐츠는 Blazor 또는 오프라인으로 읽을 수 있는 다운로드 가능한 무료 PDF로 제공되는 for ASP NET Web Forms Developers for Azure eBook에서 발췌한 것입니다.
ASP.NET Web Forms 프레임워크는 .NET Framework가 2002년에 처음 출시된 이래로 .NET 웹 개발의 주요 요소였습니다. 웹이 아직 초기 단계에 있을 때 ASP.NET Web Forms는 데스크톱 개발에 사용된 많은 패턴을 채택하여 웹앱을 간단하고 생산적으로 빌드했습니다. ASP.NET Web Forms에서는 재사용 가능한 UI 컨트롤에서 웹 페이지를 빠르게 구성할 수 있습니다. 사용자 상호 작용은 이벤트로 자연스럽게 처리됩니다. Microsoft 및 컨트롤 공급업체에서 제공하는 Web Forms UI 컨트롤의 풍부한 에코시스템이 있습니다. 이 컨트롤은 데이터 원본에 연결하고 풍부한 데이터 시각화를 표시하는 작업을 용이하게 합니다. 시각적인 것을 선호하는 사용자들에게는 Web Forms 디자이너가 컨트롤을 관리하기 위한 간단한 드래그 앤 드롭 인터페이스를 제공합니다.
수년 동안 Microsoft는 웹 개발 트렌드를 해결하기 위해 새로운 ASP.NET 기반 웹 프레임워크를 도입했습니다. 이러한 일부 웹 프레임워크에는 ASP.NET MVC, ASP.NET 웹 페이지 및 최근 ASP.NET Core가 포함됩니다. 각각의 새로운 프레임 워크와 함께, 일부는 ASP.NET Web Forms의 임박한 감소를 예측하고 오래된, 구식 웹 프레임 워크로 비판했다. 이러한 예측에도 불구하고 많은 .NET 웹 개발자는 ASP.NET Web Forms를 간단하고 안정적이며 생산적인 방법으로 계속 찾아 작업을 완료합니다.
글을 쓰는 시점에 거의 절반에 달하는 웹 개발자가 매달 ASP.NET Web Forms를 사용합니다. ASP.NET Web Forms 프레임워크는 10년 전의 문서, 샘플, 서적 및 블로그 게시물이 유용하고 관련성이 있는 지점까지 안정적입니다. 많은 .NET 웹 개발자에게 "ASP.NET"은 .NET이 처음 구상되었을 때와 마찬가지로 "ASP.NET Web Forms"와 여전히 동의어입니다. ASP.NET Web Forms의 장단점에 대한 논의는 다른 새로운 .NET Web Frameworks와 비교했을 때 계속될 수 있습니다. ASP.NET Web Forms는 웹앱을 만들기 위한 인기 있는 프레임워크로 남아 있습니다.
그럼에도 불구하고 소프트웨어 개발의 혁신은 느려지지 않습니다. 모든 소프트웨어 개발자는 새로운 기술과 동향을 접해야 합니다. 특히 두 가지 추세를 고려할 가치가 있습니다.
- 오픈 소스 및 플랫폼 간 전환
- 앱 논리를 클라이언트로 전환
오픈 소스이면서 여러 플랫폼에서 사용할 수 있는 .NET
.NET 및 ASP.NET Web Forms가 처음 출시되었을 때 플랫폼 에코시스템은 현재와 크게 다르게 보였습니다. 데스크톱 및 서버 시장은 Windows에 의해 지배되었다. macOS 및 Linux와 같은 대체 플랫폼은 여전히 견인력을 얻기 위해 고군분투하고 있었습니다. ASP.NET Web Forms는 .NET Framework를 Windows 전용 구성 요소로 제공합니다. 즉, ASP.NET Web Forms 앱은 Windows Server 컴퓨터에서만 실행할 수 있습니다. 많은 최신 환경에서는 이제 여러 사용자에 대한 플랫폼 간 지원이 절대 요구 사항인 서버 및 개발 머신에 다양한 종류의 플랫폼을 사용합니다.
대부분의 최신 웹 프레임워크도 오픈 소스로, 다양한 이점이 있습니다. 사용자는 버그 수정 및 기능 추가를 위해 단일 프로젝트 소유자에게 얽매이지 않습니다. 오픈 소스 프로젝트는 개발 진행 상황 및 향후 변경 내용에 대한 향상된 투명성을 제공합니다. 오픈 소스 프로젝트는 전체 커뮤니티의 기여를 즐기며 지원되는 오픈 소스 에코시스템을 조성합니다. 오픈 소스의 위험에도 불구하고, 많은 소비자와 기여자는 안전하고 합리적인 방법으로 오픈 소스 생태계의 혜택을 즐길 수 있도록 적절한 완화를 발견했다. 이러한 완화의 예로는 기여자 라이선스 계약, 친숙한 라이선스, 혈통 검사 및 지원 기반이 있습니다.
.NET 커뮤니티는 플랫폼 간 지원과 오픈 소스 모두를 수용했습니다. .NET Core는 Windows, macOS 및 다양한 Linux 배포판을 비롯한 다양한 플랫폼에서 실행되는 .NET의 오픈 소스 및 플랫폼 간 구현입니다. Mono는 Android, iOS 및 시계 및 스마트 TV를 비롯한 다양한 폼 팩터에서 실행되는 .NET의 오픈 소스 버전입니다. 2020년 Microsoft는 .NET Core와 Mono를 "모든 곳에서 사용할 수 있고 균일한 런타임 동작과 개발자 환경을 가진 단일 .NET 런타임 및 프레임워크"로 조정하는 .NET 5를 출시했습니다.
ASP.NET Web Forms는 오픈 소스 및 플랫폼 간 지원으로의 전환의 이점을 누릴 수 있나요? 불행히도 대답은 플랫폼의 나머지 부분과 같은 정도가 아니거나 적어도 그렇지 않습니다. .NET 팀은 ASP.NET Web Forms가 .NET Core 또는 .NET 8로 이식되지 않는다는 점을 분명히 했습니다. 왜 그럴까요?
.NET Core 초기에는 Web Forms를 ASP.NET 이식하려는 노력이 있었습니다. 필요한 호환성을 깨는 변경 사항이 너무 극단적인 것으로 나타났습니다. Microsoft의 경우에도 동시에 지원할 수 있는 웹 프레임워크 수에 제한이 있다는 입장도 있습니다. 아마도 커뮤니티의 누군가가 ASP.NET Web Forms의 오픈 소스 및 플랫폼 간 버전을 만드는 작업을 맡을 것입니다. ASP.NET Web Forms의 소스 코드는 참조 형식으로 공개적으로 제공되었습니다. 그러나 당분간 ASP.NET Web Forms는 오픈 소스 기여 모델 없이 Windows 전용으로 유지될 것으로 보입니다. 플랫폼 간 지원 또는 오픈 소스가 시나리오에서 중요한 경우 새로운 것을 찾아야 합니다.
이는 ASP.NET Web Forms가 중지 되어 더 이상 사용되지 않아야 합니까? 물론 아니에요! .NET Framework가 Windows의 일부로 제공되는 한 ASP.NET Web Forms는 지원되는 프레임워크가 됩니다. 많은 Web Forms 개발자의 경우 플랫폼 간 및 오픈 소스 지원이 부족한 것은 문제가 되지 않습니다. 플랫폼 간 지원, 오픈 소스 또는 .NET Core 또는 .NET 8의 다른 새로운 기능에 대한 요구 사항이 없는 경우 Windows에서 ASP.NET Web Forms를 사용하는 것이 좋습니다. ASP.NET Web Forms는 앞으로도 수년간 웹앱을 작성하는 생산적인 방법이 될 것입니다.
그러나 고려해야 할 또 다른 추세가 있으며 이는 클라이언트로의 전환입니다.
클라이언트 쪽 웹 개발
모든 . ASP.NET Web Forms를 비롯한 NET 기반 웹 프레임워크의 공통점은 서버 렌더링입니다. 서버 렌더링 웹앱에서 브라우저는 서버에 요청을 하여 일부 코드(ASP.NET 앱의 .NET 코드)를 실행하여 응답을 생성합니다. 해당 응답은 처리할 브라우저로 다시 전송됩니다. 이 모델에서는 브라우저가 경량 렌더링 엔진으로 사용됩니다. UI를 생성하고, 비즈니스 논리를 실행하고, 상태를 관리하는 작업은 서버에서 발생합니다.
그러나 브라우저는 다양한 플랫폼이 되었습니다. 사용자 컴퓨터의 기능에 대한 액세스 권한을 부여하는 점점 더 많은 오픈 웹 표준을 구현합니다. 클라이언트 디바이스의 컴퓨팅 능력, 스토리지, 메모리 및 기타 리소스를 활용하지 않는 이유는 무엇인가요? 특히 UI 상호 작용은 적어도 부분적으로 또는 완전히 클라이언트 쪽에서 처리될 때 더 풍부하고 대화형 느낌의 이점을 얻을 수 있습니다. 서버에서 처리해야 하는 논리 및 데이터는 여전히 서버 쪽에서 처리될 수 있습니다. Web API 호출 또는 WebSocket과 같은 실시간 프로토콜도 사용할 수 있습니다. 이러한 혜택은 JavaScript를 작성하려는 웹 개발자가 무료로 사용할 수 있습니다. Angular, React 및 Vue와 같은 클라이언트 쪽 UI 프레임워크는 클라이언트 쪽 웹 개발을 간소화하며 인기가 높아졌습니다. ASP.NET Web Forms 개발자는 클라이언트를 활용하여 이점을 얻을 수 있으며, ASP.NET AJAX와 같은 통합 JavaScript 프레임워크를 통해 기본 제공 지원을 받을 수도 있습니다.
그러나 두 개의 서로 다른 플랫폼과 에코시스템(.NET 및 JavaScript)을 연결하면 비용이 발생합니다. 언어, 프레임워크 및 도구가 서로 다른 두 병렬 세계에서 전문 지식이 필요합니다. 클라이언트와 서버 간에 코드와 논리를 쉽게 공유할 수 없으므로 중복 및 엔지니어링 오버헤드가 발생합니다. 또한 빠른 속도로 진화한 역사를 가진 JavaScript 에코시스템을 따라잡기가 어려울 수 있습니다. 프런트 엔드 프레임워크 및 빌드 도구 기본 설정이 빠르게 변경됩니다. 업계는 Grunt에서 Gulp에서 Webpack으로의 진행 등을 관찰했습니다. jQuery, Knockout, Angular, React 및 Vue와 같은 프런트 엔드 프레임워크에서 동일한 불안한 변동이 발생했습니다. 그러나 JavaScript의 브라우저 독점을 감안할 때 이 문제에는 선택의 여지가 거의 없었습니다. 즉, 웹 커뮤니티가 함께 모여 기적 을 일으킬 때까지!
WebAssembly 요구 사항을 충족합니다.
2015년, 주요 브라우저 공급업체들은 W3C 커뮤니티 그룹에 힘을 합쳐 새로운 오픈 웹 표준인 WebAssembly를 만들었습니다. WebAssembly 는 웹에 대한 바이트 코드입니다. 코드를 WebAssembly로 컴파일할 수 있다면 거의 네이티브 속도로 대부분의 플랫폼의 브라우저에서 실행할 수 있습니다. C/C++에 초점을 맞춘 초기 작업. 그 결과 플러그 인 없이 브라우저에서 직접 네이티브 3D 그래픽 엔진을 실행하는 극적인 시연이 있었습니다. WebAssembly 는 이후 모든 주요 브라우저에서 표준화되고 구현되었습니다.
.NET on WebAssembly 을 실행하는 작업은 2017년 말에 발표되었으며 .NET 5 이상에서 지원을 포함하여 2020년에 출시되었습니다. 브라우저에서 직접 .NET 코드를 실행하는 기능을 통해 .NET을 사용하여 전체 스택 웹 개발을 수행할 수 있습니다.
Blazor: .NET을 사용한 전체 스택 웹 개발
자체적으로 브라우저에서 .NET 코드를 실행하는 기능은 클라이언트 쪽 웹앱을 만들기 위한 엔드투엔드 환경을 제공하지 않습니다. Blazor의 역할이 바로 그곳에서 나타납니다. Blazor 는 JavaScript 대신 C#을 기반으로 하는 클라이언트 쪽 웹 UI 프레임워크입니다. Blazor 를 통해 WebAssembly브라우저에서 직접 실행할 수 있습니다. 브라우저 플러그 인이 필요하지 않습니다. 또는 앱이 Blazor .NET에서 서버 쪽을 실행하고 브라우저와의 실시간 연결을 통해 모든 사용자 상호 작용을 처리할 수 있습니다.
Blazor 에는 Visual Studio 및 Visual Studio Code에서 훌륭한 도구 지원이 있습니다. 프레임워크에는 전체 UI 구성 요소 모델도 포함되며 다음을 위한 기본 제공 기능이 있습니다.
- 양식 및 유효성 검사
- 종속성 주입
- 클라이언트 쪽 라우팅
- 레이아웃
- 브라우저 내 디버깅
- 자바스크립트 상호 운용성
Blazor 에는 ASP.NET Web Forms와 많은 공통점이 있습니다. 두 프레임워크 모두 구성 요소 기반의 이벤트 기반 상태 저장 UI 프로그래밍 모델을 제공합니다. 주요 아키텍처 차이점은 ASP.NET Web Forms가 서버에서만 실행된다는 것입니다. Blazor 는 브라우저의 클라이언트에서 실행할 수 있습니다. 그러나 ASP.NET Web Forms 배경에서 온 경우 Blazor에서 익숙하게 느낄 수 있는 것들이 많을 것입니다. Blazor 는 클라이언트 쪽 개발과 .NET의 오픈 소스 플랫폼 간 미래를 활용하는 방법을 찾는 ASP.NET Web Forms 개발자를 위한 자연스러운 솔루션입니다.
이 책은 ASP.NET Web Forms 개발자를 위해 특별히 마련된 Blazor에 대한 소개를 제공합니다. 각 Blazor 개념은 유사한 ASP.NET Web Forms 기능 및 사례의 컨텍스트에서 제공됩니다. 이 책이 끝나면 다음을 이해할 수 있습니다.
- 앱을 빌드 Blazor 하는 방법.
- Blazor 작동 방식.
- Blazor이(가) .NET과 관련되는 방법
- 기존 ASP.NET Web Forms 앱을 적절한 위치로 마이그레이션하기 Blazor 위한 합리적인 전략입니다.
시작하세요 Blazor
Blazor 시작은 쉽습니다. 링크로 https://blazor.net 이동하여 적절한 .NET SDK 및 Blazor 프로젝트 템플릿을 설치합니다. Visual Studio 또는 Visual Studio Code에서 Blazor 도구를 설정하는 방법에 대한 지침도 찾을 수 있습니다.
.NET