eShop 샘플 애플리케이션이 업데이트되어 https://github.com/dotnet/eShop으로 이동되었습니다. 그곳에서는 활발한 개발이 계속될 것입니다. 또한 엔터프라이즈 앱 패턴으로 웹앱을 구축하기 위한 신뢰할 수 있는 웹앱 패턴 지침을 권장합니다.
Microsoft에서 제공하는 샘플 ASP.NET Core 참조 애플리케이션은 단일 프로세스(모놀리식) 애플리케이션 아키텍처 및 배포 모델을 보여줍니다. .NET 개발이 처음이라면 초보자를 위한 시작하기 가이드를 읽어보세요.
이 저장소에 대해 자주 묻는 질문(FAQ) 목록은 여기에서 확인할 수 있습니다.
Steve "ardalis" Smith는 2020년 10월 eShopOnWeb 참조 앱의 개요를 제공하는 라이브 스트림을 녹화했습니다.
이 참조 애플리케이션은 무료 .PDF 다운로드 전자책인 ASP.NET Core 및 Azure를 사용하여 최신 웹 애플리케이션 설계 (ASP.NET Core 8.0 으로 업데이트됨)를 지원하기 위한 것입니다. ePub/mobi 형식으로도 제공됩니다.
또한 여기 .NET 문서의 온라인 페이지(https://docs.microsoft.com/dotnet/architecture/modern-web-apps-azure/)에서 책을 읽을 수도 있습니다.
eShopOnWeb 샘플은 eShopOnContainers 샘플 애플리케이션과 관련되어 있으며 이 경우 마이크로서비스/컨테이너 기반 애플리케이션 아키텍처에 중점을 둡니다. 그러나 eShopOnWeb은 현재 기능과 관련하여 훨씬 간단하며 단일 배포를 통한 기존 웹 애플리케이션 개발에 중점을 둡니다.
이 샘플의 목표는 eBook에 설명된 몇 가지 원칙과 패턴을 보여주는 것입니다. 이는 전자 상거래 참조 응용 프로그램이 아니므로 실제 전자 상거래 응용 프로그램에 분명하거나 필수적인 많은 기능을 구현하지 않습니다.
버전
main
분기는 현재 ASP.NET Core 8.0을 실행하고 있습니다.이전 버전에는 태그가 지정되어 있습니다.
상점의 홈 페이지는 다음과 같아야 합니다.
Azure 개발자 CLI( azd
)는 Azure 애플리케이션을 만들기 위한 개발자 중심 명령줄 인터페이스(CLI) 도구입니다.
Azure 개발자 CLI를 사용하여 실행하고 배포하기 전에 설치해야 합니다.
powershell - ex AllSigned - c " Invoke-RestMethod 'https://aka.ms/install-azd.ps1' | Invoke-Expression "
curl -fsSL https://aka.ms/install-azd.sh | bash
또한 Winget, choco, Brew와 같은 패키지 관리자를 사용하여 설치할 수도 있습니다. 자세한 내용은 https://aka.ms/azure-dev/install 설명서를 참조하세요.
다음 명령으로 로그인하면 azd cli를 사용하여 애플리케이션을 빠르게 프로비저닝하고 배포할 수 있습니다.
azd auth login
그런 다음 azd init
명령을 실행하여 환경을 초기화합니다.
azd init -t dotnet-architecture/eShopOnWeb
azd up
실행하여 모든 리소스를 Azure에 프로비저닝하고 해당 리소스에 코드를 배포합니다.
azd up
프롬프트에 따라 env name
입력하고 subscription
및 location
선택합니다. 이는 리소스를 생성할 때 필요한 매개변수입니다. 리소스 배포가 완료될 때까지 잠시 기다린 후 웹 엔드포인트를 클릭하면 홈 페이지가 표시됩니다.
참고:
샘플을 로컬에서 직접 실행할 수도 있습니다(아래 참조).
대부분의 사이트 기능은 실행 중인 웹 애플리케이션에서만 작동합니다. 그러나 사이트의 관리 페이지는 브라우저에서 실행되는 Blazor WebAssembly에 의존하며 사이트의 PublicApi 웹 애플리케이션을 사용하여 서버와 통신해야 합니다. 이 프로젝트도 실행해야 합니다. 여러 프로젝트를 시작하도록 Visual Studio를 구성하거나 터미널 창의 PublicApi 폴더로 이동하여 거기에서 dotnet run
실행할 수 있습니다. 그런 다음 웹 폴더에서 dotnet run --launch-profile Web
실행해야 합니다. 이제 https://localhost:5001/
로 이동할 수 있습니다. Blazor의 관리 부분은 https://localhost:5001/admin
에 액세스할 수 있습니다.
이 접근 방식을 사용하는 경우 솔루션을 빌드하려면 애플리케이션을 수동으로 중지해야 합니다. 그렇지 않으면 파일 잠금 오류가 발생합니다.
샘플을 복제하거나 다운로드한 후에는 데이터베이스를 설정해야 합니다. 영구 데이터베이스와 함께 샘플을 사용하려면 앱을 실행하기 전에 Entity Framework Core 마이그레이션을 실행해야 합니다.
Docker에서 샘플을 실행할 수도 있습니다(아래 참조).
기본적으로 프로젝트는 실제 데이터베이스를 사용합니다. 메모리 내 데이터베이스를 원하는 경우 웹 폴더의 appsettings.json
파일에 추가할 수 있습니다.
{
"UseOnlyInMemoryDatabase" : true
}
appsettings.json
의 연결 문자열이 로컬 SQL Server 인스턴스를 가리키는지 확인하세요.
도구 EF가 이미 설치되어 있는지 확인하십시오. 여기에서 도움을 받을 수 있습니다.
dotnet tool update --global dotnet-ef
웹 폴더에서 명령 프롬프트를 열고 다음 명령을 실행합니다.
dotnet restore
dotnet tool restore
dotnet ef database update -c catalogcontext -p ../Infrastructure/Infrastructure.csproj -s Web.csproj
dotnet ef database update -c appidentitydbcontext -p ../Infrastructure/Infrastructure.csproj -s Web.csproj
이 명령은 두 개의 별도 데이터베이스를 생성합니다. 하나는 매장의 카탈로그 데이터 및 장바구니 정보용이고 다른 하나는 앱의 사용자 자격 증명 및 ID 데이터용입니다.
응용 프로그램을 실행하십시오.
응용 프로그램을 처음 실행하면 매장에서 제품을 볼 수 있도록 두 데이터베이스에 데이터가 시드되며,[email protected] 계정을 사용하여 로그인할 수 있습니다.
참고: 마이그레이션을 생성해야 하는 경우 다음 명령을 사용할 수 있습니다.
-- create migration (from Web folder CLI)
dotnet ef migrations add InitialModel --context catalogcontext -p ../Infrastructure/Infrastructure.csproj -s Web.csproj -o Data/Migrations
dotnet ef migrations add InitialIdentityModel --context appidentitydbcontext -p ../Infrastructure/Infrastructure.csproj -s Web.csproj -o Identity/Migrations
이 프로젝트에는 컨테이너를 모든 기능을 갖춘 개발 환경으로 사용할 수 있는 개발 컨테이너 구성이 포함된 .devcontainer
폴더가 포함되어 있습니다.
개발 컨테이너를 사용하면 로컬에 도구를 설치할 필요 없이 앱을 빌드하고 실행할 수 있습니다! GitHub Codespaces 또는 VS Code Dev Containers 확장에서 작업할 수 있습니다.
Readme에서 dev 컨테이너 사용에 대해 자세히 알아보세요.
루트 폴더(.sln 파일이 있는 위치)에서 다음 명령을 실행하여 웹 샘플을 실행할 수 있습니다.
docker-compose build
docker-compose up
이러한 명령이 완료되면 웹 프로젝트의 경우 localhost:5106, 공용 API 프로젝트의 경우 localhost:5200에 요청할 수 있습니다. 특히 로그인에 문제가 있는 경우 새 게스트 또는 시크릿 브라우저 인스턴스에서 시도해 보세요.
각 프로젝트의 루트에 있는 Dockerfile
파일에 있는 지침을 사용하여 애플리케이션을 실행할 수도 있습니다. 다시 한번 솔루션의 루트(.sln 파일이 있는 위치)에서 다음 명령을 실행하세요.
우리는 커뮤니티로부터 몇 가지 훌륭한 기여를 했으며, 이러한 기여는 Microsoft에서 유지 관리하지 않지만 여전히 강조하고 싶습니다.
Mohammad Hamdy Ghanem의 eShopOnWeb VB.NET
FShopOnWeb Sean G. Wright 및 Kyle McMaster의 eShopOnWeb에 대한 F# 인수