배포NET Core Blazor 응용 프로그램과 Azure 정적 웹 응용 프로그램은 단 몇 분

TLDR; Azure Static Web Apps is a service that allows you to deploy both JavaScript apps but now also Blazor apps. The service is simple to use as it only requires an Azure subscription and a GitHub repo. That's all the set up you need.


리소스

  • Blazor on Static Web Apps blog post
  • Blazor LEARN Module
  • Blazor + Static Web Apps Tutorial
  • Blazor + Static Web Apps, LEARN module


  • 브라조


    Blazor는 C#fullstack을 작성할 수 있는 프레임워크입니다.fullstack 웹 응용 프로그램을 개발하고 있다면, 자바스크립트를 사용해야 합니다.페이지의 상호작용을 개선하기 위해 추가하거나 에서 백엔드를 사용합니다.React, Angular 또는 Vue와 같은 SPA 프레임워크를 사용하는 것과 같은 NET 및 JavaScript의 프런트엔드Blazor 응용 프로그램은 WebAssembly로 컴파일할 수 있기 때문에 일류 인터넷 시민이 될 수 있고 속도도 매우 빠르다.
    만약 당신이 Blazor에 대해 완전히 낯설다면, 나는 당신이 이 글을 읽는 것을 건의합니다.

    Azure 정적 웹 애플리케이션 서비스


    정적 웹 응용 프로그램은 Azure 서비스로 몇 분 안에 fullstack 응용 프로그램을 배치할 수 있습니다.JavaScript 프로젝트와 Blazor를 배포할 수 있습니다.

    NET developer here, you have my attention. So, it can deploy a Blazor project, what else can it do?


  • 웹 호스팅, 응용 프로그램이 Azure에 호스팅됩니다. 호스팅된 최종 제품은 HTML, CSS, JavaScript 또는 웹 조립일 뿐입니다.

  • 통합 API를 사용하면 서버 없는 API를 언제든지 애플리케이션에 추가할 수 있습니다.
  • 무료 SSL 인증서

  • 리버스 프록시.API를 호출할 때 CORS를 구성할 필요가 없으며 작동합니다.

  • Social auth+AAD를 지원합니다.간단한 설정을 통해 GitHub와 같은 인증 제공 프로그램을 얻어 Azure Active Directory에 연결하고 심지어 Azure Active Directory 인증/인증을 받으면 정상적으로 작동할 수 있다.이것은 특정한 자원에 접근하기 위해 단독 역할을 설정할 수 있는 것을 포함한다.
  • That's a nice featurelist. I care about ease of use, what can you tell me about that?


    기입할 것이 없습니다. 모든 것이 GitHub 환매 협의를 둘러싸고 있습니다. 환매 협의와 다른 것을 선택하면 그것을 배치하기 시작합니다.

    Ok, but how does it work under the hood?


    GitHub 작업을 생성하고 실행함으로써 의존 라이브러리 가져오기, 코드 구축, 최종 배치 등의 작업을 수행합니다.이른바 작업 흐름 파일이 환매 프로토콜에 전달될 것이다. (그것은 YAML 파일이다.)

    Alright, but I'm likely to update my code quite a lot, does it help me with redeploy?


    그렇습니다. 워크플로우 파일에서 PR을 통합하거나 주/주 지점에 제출하는 등 재배치를 트리거할 시기를 정의할 수 있습니다.

    This all sounds very promising; can you take me through a deploy?


    물론 내 명단의 다음 일은:)

    첫 번째 Blazor 애플리케이션 배포


  • 복제 응용 프로그램.가장 간단한 시작 방법은 이 GitHub 템플릿
  • 에서 Blazor 응용 프로그램을 만드는 것이다

    Generate app
    from GH template
    . Ensure you are logged into GitHub before clicking this link or you will get a 404


    생성이 완료되면 GH 사용자를 다시 구매할 수 있습니다.다음 명령을 입력합니다.
       git clone <name of repo URL> 
    

  • 응용 프로그램을 검사합니다.프로그램을 확인하려면 최신 버전의dotnet 코어install를 설치했는지 확인하십시오.디렉터리를 클론 리셋 디렉터리로 변경합니다.
  • 솔루션 구축솔루션 루트 디렉토리에 있는지 확인하고 다음 명령을 입력합니다.
  •    dotnet build
    

  • 클라이언트 응용 프로그램을 실행합니다.다음 명령을 입력하여 클라이언트를 실행합니다.
  •    cd Client
       dotnet run
    
    다음과 같은 터미널 출력을 받아야 합니다.
       info: Microsoft.Hosting.Lifetime[0]
          Now listening on: https://localhost:5001
       info: Microsoft.Hosting.Lifetime[0]
          Now listening on: http://localhost:5000
       info: Microsoft.Hosting.Lifetime[0]
          Application started. Press Ctrl+C to shut down.
       info: Microsoft.Hosting.Lifetime[0]
          Hosting environment: Development
       info: Microsoft.Hosting.Lifetime[0]
          Content root path: 
       /path/to/project/blazor-sample/Client
    

  • 응용 프로그램으로 이동합니다.브라우저 localhost에 다음 URL:5000을 입력합니다.브라우저에서 다음을 표시해야 합니다.

  • 애플리케이션 배포


    이제 Azure 정적 기능을 사용하여 배치할 수 있는 Blazor 응용 프로그램이 생겼습니다.어떻게 했어요?
  • URL 포털로 이동합니다.새파랗다com에서 Azure에 로그인합니다.
  • 정적 웹 응용 프로그램을 입력하고 권장 사항을 선택합니다.
  • 왼쪽 위 모서리 영역에서 +Add를 클릭합니다.
  • 이제 드롭다운 목록을 볼 수 있습니다. 정보를 작성해야 합니다.

  • 구독, 필요한 구독 선택

  • 자원 그룹, 필요한 자원 그룹을 선택하거나 새로운 자원 그룹을 만듭니다.

  • 이름응용 프로그램 이름을 지정합니다.

  • 지역영역을 선택합니다.

  • SKU.여기에서 선택할 필요가 없습니다. 이 서비스는 현재 무료입니다.
  • GitHub 로그인을 클릭하고 이 버튼을 클릭하면 생성된 재구매를 찾고 선택해야 합니다.

  • 조직하다조직을 선택합니다.

  • 저장소템플릿에서 재구매를 생성할 때 생성된 재구매를 선택합니다.

  • 나뭇가지지점을 선택하십시오. 이런 상황에서 우리는 주 지점만 있습니다.

  • 사전 설정을 생성합니다.사용자 지정 을 선택하면 다음과 같은 옵션이 표시됩니다.

  • 응용 프로그램 위치.클라이언트 프로그램이 있는 곳입니다./client를 입력하십시오.

  • Api 위치, 기본값으로 유지

  • 응용 프로그램 작업 위치이것은 클라이언트 응용 프로그램이 생성한 폴더입니다.wwwroot
  • 보기 + 만들기 를 클릭합니다.
  • 모든 선택에 만족하면 생성을 클릭합니다.
  • 배치 후 자원에 접근하려면 누르십시오.리소스 페이지는 다음과 같이 표시됩니다.

    위에 너는 자원이 있다.지정된 필드에서 URL을 클릭하면 기본 페이지로 이동합니다.왜?응용 프로그램이 아직 구축되지 않았습니다.GitHub 링크를 클릭하여 실행합니다.그러면 GitHub 재구매가 시작됩니다.모든 작업이 완료되면 다음과 같이 해야 합니다.
  • 응용 프로그램에 다시 액세스하십시오.이제 Azure 포털의 리소스 페이지로 돌아가서 응용 프로그램 URL을 클릭합니다.다음을 참조하십시오.

  • 자, 배포한 어플리케이션:)

    API 추가


    현재 Blazor 응용 프로그램은 자신의 백엔드를 포함할 수 있습니다.Azure 정적 웹 응용 서비스의 구축 방식은 백엔드가 Api 디렉터리에 있을 것이라고 가정하지만.그럼 목록에 뭐가 있을까요?이것은 기능형 응용 프로그램이다.다행히도, 당신의 환매는 이미 기능이 정상적인 응용 프로그램을 가지고 있습니다.
    우리의 환매 협의를 신속하게 되돌아봅시다.너의 해결 방안은 마땅히 이렇게 해야 한다.
       -| Api
       -| Data
       -| Client
    
    Blazor 응용 프로그램이 있는 클라이언트 디렉터리를 알고 있습니다.또 다른 관심 디렉터리는 함수 앱이 포함된 Api 디렉터리입니다.이것은 거의 모든 기능을 갖춘 응용 프로그램이다.내가 말한 것은 거의 무슨 뜻입니까?알겠습니다. Api 디렉터리를 확장하는 데 관심 있는 파일이 있습니다.
    Client/
    Api/
      ProductData.cs
      ProductsDelete.cs
      ProductsPost.cs
      ProductsPut.cs
    
    첫 번째 파일ProductData.cs에는 메모리의 데이터 저장소가 포함되어 있습니다.나머지 세 파일은 API 라우팅일 뿐입니다.
    *** 잃어버린 GET 라우팅 추가
    이 API를 완전한 생성-읽기-업데이트-삭제로 만들기 위해서는 다른 파일ProductsGet.cs이 필요합니다. 이 파일을 만들고 다음 내용을 제공해야 합니다.
    using System.Threading.Tasks;
    using Microsoft.AspNetCore.Mvc;
    using Microsoft.Azure.WebJobs;
    using Microsoft.Azure.WebJobs.Extensions.Http;
    using Microsoft.AspNetCore.Http;
    
    namespace Api
    {
      public class ProductsGet
      {
        private readonly IProductData productData;
    
        public ProductsGet(IProductData productData)
        {
          this.productData = productData;
        }
    
        [FunctionName("ProductsGet")]
        public async Task<IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "products")] HttpRequest req)
        {
          var products = await productData.GetProducts();
          return new OkObjectResult(products);
        }
      }
    }
    
    이제 VS 코드의 맨 위 메뉴에서 실행 > 디버깅을 선택합니다.출력 생성의 끝에 다음과 같은 텍스트가 있어야 합니다.
    ProductsPut: [PUT] http://localhost:7071/api/products
    
    ProductsGet: [GET] http://localhost:7071/api/products
    
    ProductsPost: [POST] http://localhost:7071/api/products
    
    ProductsDelete: [DELETE] http://localhost:7071/api/products/{productId:int}
    
    곧 도착할 거야.

    로컬 테스트, CORS 설정


    로컬 테스트를 할 때, 전역의 요청, 즉 우리의 Blazor 응용 프로그램을 허용하는 함수를 표시해야 합니다.우리 어떻게 해야 돼요?로컬을 찾습니다.설치.json 파일은 다음을 포함하고 있는지 확인합니다.
    {
      "IsEncrypted": false,
      "Values": {
        "AzureWebJobsStorage": "",
        "FUNCTIONS_WORKER_RUNTIME": "dotnet"
      },
      "Host": {
        "CORS": "*"
      }
    }
    
    위에서 Host 속성을 추가하고 모든 요청을 허용하도록 CORS를 가리킵니다.이것은 단지 우리가 현지에서 한 일일 뿐이니 제작을 걱정하지 마라.
    클라이언트 Blazor 응용 프로그램을 실행할 수 있습니다.

    Blazor 응용 프로그램은 이제 기능 응용 프로그램 백엔드와 대화할 수 있습니다.

    API를 사용하여 애플리케이션 배포


    그렇다면 API 섹션을 어디에 배치하는 방법은 무엇입니까?다음 작업을 수행해야 합니다.

  • 워크플로우 YML 파일 조정 및 Api 디렉토리 지정

  • 변경 사항을 워크플로우 파일 및 Api 디렉토리로 밀어넣기
  • 이렇게 하면 작업 흐름 파일의 구축 방식은 전송할 때 변경 사항을 얻고 응용 프로그램을 재배치해야 한다.

    워크플로우 파일 조정

  • 워크플로우 파일을 엽니다.이것은 마지막 파일입니다.yml은 당신의 안에 있습니다.github 하위 디렉터리 (이 전에 git 인출이 완료되었는지 확인하십시오. 첫 번째 배치에서 이 파일을 가져와repo에 추가할 수 있도록 합니다.
  • 라는 부분을 찾았습니다.이것이api_위치처럼 보일지 확인하십시오: "/api".그러면 Api 하위 디렉토리가 표시됩니다.
  • 변혁을 추진하다


    다음 명령을 입력합니다.
    git add .
    git commit -m "adding API"
    git push
    
    위의 내용은 변경 사항을 GitHub로 전송하고 GitHub 작업을 트리거해야 합니다.
  • 작업이 완료될 때까지 GitHub 작업 탭으로 이동합니다.페이지를 다시 로드해야 합니다
  • 이제 이러한 내용을 볼 수 있습니다.

    자, 당신의 Blazor 클라이언트와 API가 모두 일하고 있습니다!

    총결산


    너 속았어.
  • GitHub 템플릿에서 Blazor fullstack 응용 프로그램 생성
  • 먼저 Blazor 애플리케이션을 구축했습니다
  • 다음으로 Blazor 응용 프로그램에 API를 추가하여 계속하기 전에 로컬에서 작업하도록 합니다.
  • 마지막으로 제출을 추진하여 API를 추가하여 응용 프로그램이 재배치됨
  • 한 마디로 하면 Azure 정적 웹 응용 서비스는 Blazor 응용 프로그램을 배치하는 매우 빠른 방법이다.만약 당신이 서버가 없는 것을 사용한다면, 이 서비스도 이 문제를 해결할 것입니다.

    다음은 무엇입니까


    퇴선 노선과 응용 프로그램을 어떻게 보호하는지 배워야 할 것도 많다.참고 자료 부분의 링크를 찾아보시면 Blazor에 대한 정보를 더 많이 알 수 있을 뿐만 아니라 저희가 방금 조금 느리게 만든 학습 모듈도 배울 수 있습니다.인증 링크를 추가하는 방법도 있습니다. AAD에 대한 지원은 내장되어 있으며 설정만 하면 작동합니다.
    Blazor 어플리케이션을 많이 개발할 수 있도록 도와주시기 바랍니다.:)

    좋은 웹페이지 즐겨찾기