Para muitos apps, é necessário fazer o processamento em segundo plano fora do contexto de uma solicitação da Web. Este tutorial cria um app da Web que permite aos usuários inserir texto para traduzir e, em seguida, exibe uma lista de traduções anteriores. A tradução é feita em um processo em segundo plano para evitar o bloqueio da solicitação do usuário.
O diagrama a seguir ilustra o processo de solicitação da tradução.
Aqui está a sequência de eventos sobre como o tutorial do app funciona:
- Acesse a página da Web para ver uma lista de traduções anteriores armazenadas no Firestore.
- Solicite uma tradução de texto inserindo um formulário HTML.
- A solicitação de tradução é publicada no Pub/Sub.
- Um serviço do Cloud Run inscrito nesse tópico Pub/Sub é acionado.
- O serviço do Cloud Run usa o Cloud Translation para traduzir o texto.
- O serviço do Cloud Run armazena o resultado no Firestore.
Este tutorial se destina a qualquer pessoa interessada em aprender sobre o processamento em segundo plano com o Google Cloud. Nenhuma experiência anterior é necessária com Pub/Sub, Firestore, App Engine ou Cloud Functions. No entanto, para entender todo o código, é útil ter alguma experiência com .NET, JavaScript e HTML.
Objetivos
- Entenda e implante os serviços do Cloud Run.
- Testar o app.
Custos
Neste documento, você usará os seguintes componentes faturáveis do Google Cloud:
Para gerar uma estimativa de custo baseada na projeção de uso deste tutorial, use a calculadora de preços.
Ao concluir as tarefas descritas neste documento, é possível evitar o faturamento contínuo excluindo os recursos criados. Saiba mais em Limpeza.
Antes de começar
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Firestore, Cloud Run, Pub/Sub, and Cloud Translation APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Firestore, Cloud Run, Pub/Sub, and Cloud Translation APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Atualize os componentes
gcloud
:gcloud components update
- Prepare seu ambiente de desenvolvimento.
Como preparar o aplicativo
Na janela de terminal, clone o repositório do app de amostra em sua máquina local:
git clone https://github.com/GoogleCloudPlatform/getting-started-dotnet.git
Outra alternativa é fazer o download da amostra como um arquivo ZIP e extraí-lo.
Mude para o diretório que contém o código de exemplo da tarefa em segundo plano:
cd getting-started-dotnet/BackgroundProcessing
Como entender o serviço TranslateWorker
O serviço começa importando várias dependências, como Firestore e Translation.
Os clientes do Firestore e do Translation são inicializados para que possam ser reutilizados entre chamadas do gerenciador. Dessa forma, você não precisa inicializar novos clientes para cada chamada, o que atrasaria a execução.
A API Translation traduz a string para o idioma selecionado.
O construtor do controlador recebe os clientes do Firestore e do Pub/Sub.
O método
Post
analisa a mensagem do Pub/Sub para ver o texto a ser traduzido. Ele usa o ID da mensagem como um nome exclusivo para a solicitação de tradução para garantir que não armazene nenhuma tradução duplicada.
Como implantar o serviço TranslateWorker
No diretório
BackgroundProcessing
, execute o script do PowerShell para criar e implantar o serviço no Cloud Run:PublishTo-CloudRun.ps1
Como entender o script PublishTo-CloudRun.ps1
O script PublishTo-CloudRun.ps1
publica o serviço no Cloud Run e protege o serviço TranslateWorker contra abuso. Se o serviço permitisse todas as conexões de entrada, qualquer pessoa poderia postar solicitações de tradução para o controlador e, portanto, incorrer em custos. Portanto, você configura o serviço para aceitar apenas solicitações POST
do Pub/Sub.
O script faz o seguinte:
- Cria o aplicativo localmente usando
dotnet publish
. - Cria um contêiner que executa o aplicativo usando o Cloud Build.
- Implanta o aplicativo no Cloud Run.
- Permite que o projeto crie tokens de autenticação do Pub/Sub.
- Cria uma conta de serviço para representar a identidade da assinatura do Pub/Sub.
- Concede à conta do serviço permissão para chamar o serviço
TranslateWorker
. Cria um tópico e uma assinatura do Pub/Sub.
Como entender o serviço TranslateUI
O serviço TranslateUI
renderiza uma página da Web que exibe traduções recentes e aceita solicitações de novas traduções.
A classe
StartUp
configura um aplicativo ASP.NET e cria clientes do Pub/Sub e do Firestore.O gerenciador de índices
Index
recebe todas as traduções existentes do Firestore e preenche umViewModel
com a lista:Novas traduções são solicitadas através do envio de um formulário HTML. O gerenciador de tradução de solicitação valida a solicitação e publica uma mensagem no Pub/Sub:
Como implantar o serviço TranslateUI
No diretório
BackgroundProcessing
, execute o script do PowerShell para criar e implantar o serviço no Cloud Run:./PublishTo-CloudRun.ps1
Como entender o script PublishTo-CloudRun.ps1
O script PublishTo-CloudRun.ps1
publica o aplicativo no Cloud Run.
O script faz o seguinte:
- Cria o aplicativo localmente usando
dotnet publish
. - Cria um contêiner que executa o aplicativo usando o Cloud Build.
Implanta o aplicativo no Cloud Run.
Como testar o app
Após executar com êxito o script PublishTo-CloudRun.ps1
, tente solicitar uma tradução.
O comando final no script
PublishTo-CloudRun.ps1
informa o URL do seu serviço de IU. Na janela do seu terminal, encontre o URL do serviçoTranslateUI
:gcloud beta run services describe translate-ui --region $region --format="get(status.address.hostname)"
No seu navegador, acesse o URL que você recebeu na etapa anterior.
Há uma página com uma lista vazia de traduções e um formulário para solicitar novas traduções.
No campo Texto a ser traduzido, digite algum texto a ser traduzido, por exemplo,
Hello, World.
Selecione Enviar.
Para atualizar a página, clique em Atualizar refresh. Há uma nova linha na lista de tradução. Se você não vir uma tradução, aguarde mais alguns segundos e tente novamente. Se você ainda não vir uma tradução, consulte a próxima seção sobre como depurar o aplicativo.
Como depurar o aplicativo
Se você não conseguir se conectar ao seu serviço do Cloud Run ou não vir novas traduções, verifique o seguinte:
Verifique se o script
PublishTo-CloudRun.ps1
foi concluído com êxito e não gerou erros. Se houver erros (por exemplo,message=Build failed
), corrija-os e tente executar novamente.Verifique se há erros nos registros:
No console do Google Cloud, acesse a página do Cloud Run.
Clique no nome do serviço,
translate-ui
.Clique em Registros.
Limpeza
Para evitar cobranças na sua conta do Google Cloud pelos recursos usados no tutorial, exclua o projeto que os contém ou mantenha o projeto e exclua os recursos individuais.
Excluir o projeto do Google Cloud
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Exclua os serviços do Cloud Run.
Exclua os serviços do Cloud Run que você criou neste tutorial:
gcloud beta run services delete --region=$region translate-ui
gcloud beta run services delete --region=$region translate-worker