Alıştırma - Yoklama tabanlı bir web uygulamasının sınırlamalarını analiz etme

Tamamlandı

Prototipi değiştirmeden önce varsayımları doğrulamak için bunu çalıştırmanız gerekir. Prototip, GitHub'daki bir kaynak kodu deposunda yer alır.

Azure kaynakları oluşturma

  1. Ayrı bir tarayıcı sekmesinde veya penceresinde aşağıdaki bağlantıyla GitHub'daki örnek deponun çatalını oluşturun: mslearn-advocates.azure-functions-and-signalr. Bu, değişikliklerinizi kaynak kodun kendi sürümüne göndermenizi sağlar. Bu, modülün ilerleyen bölümlerinde kaynak kodu Azure'a dağıtmak için gerekli bir adımdır.

  2. Terminalde depoyu kopyalayın. Aşağıdaki komutta değerini hesabınızla değiştirin MicrosoftDocs :

    git clone https://github.com/MicrosoftDocs/mslearn-advocates.azure-functions-and-signalr stock-prototype
    
  3. Bağımlılıkları setup-resources klasörüne yükleyin.

    cd stock-prototype/setup-resources && npm install
    

    hakkında EBADENGINEuyarı alırsanız bunları yoksayabilirsiniz.

  4. Azure CLI ile Azure'da oturum açın.

    az login
    
  5. Aboneliklerinizi görüntüleyin ve varsayılan Azure aboneliğinizi ayarlayın.

    Abonelikleri görüntüleyin.

    az account list --output json | jq -r '.[] | .name' | sort
    

    Varsayılan aboneliği ayarlamak için değerini önceki Azure CLI çıkışından bir abonelik kimliğiyle değiştirin YOUR-SUBSCRIPTION-ID .

    az account set --subscription <YOUR-SUBSCRIPTION-ID>
    

    Bu varsayılan abonelik, Azure kaynaklarını oluşturmak için kullanılır.

  6. Azure kaynaklarını oluşturun ve örnek verileri veritabanına yükleyin. İşlemin tamamlanması birkaç dakika sürebilir.

    bash create-start-resources.sh "<YOUR-SUBSCRIPTION-NAME>"
    

    Adı çift tırnak içinde kaydırdığınızdan emin olun. Kullanılabilir kaynak bulunmayan konumla ilgili bir hatayla betik hataları olursa, konumu değiştirmek için betiği düzenleyin: LOCATION=<NEW LOCATION>.

  7. Gerekli bilgileri kopyalayın, prototipi çalıştırmak için bunlara ihtiyacınız olacak.

    Kaynak Türü Ortam değişkeni
    Azure Cosmos DB COSMOSDB_CONNECTION_STRING olarak adlandırılır
    Azure Depolama STORAGE_CONNECTION_STRING olarak adlandırılır
    Kaynak Grubu RESOURCE_GROUP_NAME olarak adlandırılır.
  8. Aşağıdaki komutla veritabanına örnek verileri yüklemek için bir Node.js betiği kullanın.

    npm start
    
  9. Terminalde kök klasöre gidin.

    cd ..
    

Bağımlılıkları yükleme ve prototipi çalıştırma

  1. Bağımlılıkları yükleyin.

    cd start/client && npm install && cd ../..
    cd start/server && npm install && cd ../..
    
  2. Bildirimde çalışma alanı için bir Azure işlevleri uygulaması seçmeniz istenirse öğesini seçin start/server. Bu, sunucu tarafı kodunu çalıştırmak için kullanacağınız işlev uygulamasıdır.

  3. En son Azure İşlevleri Core Araçları'nı yükleme hakkında bir bildirim alırsanız Yükle'yi seçin.

İstemci ve sunucu URL'lerini alma

Yerel olarak çalıştırılırken istemci ve sunucu uygulamalarının birbirlerini nerede bulacaklarını bilmesi gerekir. URL'ler şunlardır:

  • İstemci: http://localhost:3000
  • Sunucu: http://localhost:7071

Azure İşlevleri uygulaması için yerel ayarları güncelleştirme

prototipin Azure İşlevleri uygulamasına bağlantı dizesi ekleyin.

  1. ./start/server/local.settings.json dosyasını oluşturun ve aşağıdakileri yapıştırın. Bu dosya, yerel işlevler projesi için yapılandırma ayarlarına sahiptir.

    {
      "IsEncrypted": false,
      "Values": {
        "AzureWebJobsStorage": "<STORAGE_CONNECTION_STRING>",
        "FUNCTIONS_WORKER_RUNTIME": "node",
        "AzureWebJobsFeatureFlags": "EnableWorkerIndexing",
        "COSMOSDB_CONNECTION_STRING": "<COSMOSDB_CONNECTION_STRING>"
      },
      "Host" : {
        "LocalHttpPort": 7071,
        "CORS": "http://localhost:3000",
        "CORSCredentials": true
      }
    }
    
  2. Aşağıdaki değişkenleri yukarıdan kopyaladığınız değerlerle güncelleştirin.

    Özellik Değer
    AzureWebJobsStorage değerini Depolama bağlantı dizesi ile değiştirin.
    COSMOSDB_CONNECTION_STRING değerini Cosmos DB bağlantı dizesi ile değiştirin.

    artık İşlevler uygulaması istemciden istek alabilir, ardından veritabanına bağlanabilir ve zamanlayıcı tetikleyicisini doğru şekilde yönetebilir.

İstemci uygulaması için yerel ayarlar ekleme

Sunucu URL'sini prototipin istemci uygulamasına ekleyin.

./start/client dosyasını açın ve aşağıdaki içeriklere sahip bir .env dosya oluşturun.

BACKEND_URL=http://localhost:7071

Sunucu uygulamasını çalıştırma

  1. Terminalde Azure İşlevleri uygulamasını başlatın.

    cd start/server && npm start
    
  2. Terminal API uç noktalarını görüntüleyene kadar bekleyin.

    Functions:
    
            getStocks: [GET] http://localhost:7071/api/getStocks
    
            setPrice: timerTrigger
    

İstemci uygulamasını çalıştırma

  1. Yeni bir terminalde istemci uygulamasını başlatın.

    cd start/client && npm start
    
    
  2. Bildirimde uygulamanın çalıştığı görüntülendiğinde prototipi kullanmak için Tarayıcıda Aç'ı seçin.

    Tarayıcıyı açmak için Visual Studio Code bildiriminin ekran görüntüsü.

  3. Terminali ve hisse senedi fiyatlarının prototipini aynı anda görebilmeniz için tarayıcı pencerelerinizi düzenleyin.

  4. Prototip tarayıcı penceresinde tarayıcının geliştirici araçlarını açın. Veriler değişmemiş olsa bile tarayıcının tüm veriler için 5 saniyede bir API'ye istekte bulunu olduğuna dikkat edin.

  5. Tarayıcı penceresinde Azure İşlevleri uygulamasının çıkışını izleyin. Dakikada bir hisse senedi fiyatı değişir. API'deki fiyat değiştiğinde, tüm verilerin bir sonraki istemci getirmesi bu değişikliği içerir.

    Hisse senedi fiyat değişikliğinin konsol çıkışını gösteren Visual Studio Code terminalinin ekran görüntüsü.

  6. Hem başlangıç istemcisi hem de başlangıç sunucusu terminallerinde uygulamaları Ctrl + C ile durdurun veya çöp kutusu simgesini seçerek terminali sonlandırın.

Bu ünitede prototipi çalıştırmıştınız. İstemci başarıyla çalışsa da verimli değildir. Her bir istemci, bu kadar az sayıda hisse senediyle bunu fark etmese de, hisse senedi sayısı arttıkça ve istemci sayısı sunucudan çektiğinde değişecektir. Prototip geliştirilebilir. Şimdi bir sonraki ünitede nasıl yapılacağını öğrenelim.