Implémentation d’une solution fondée sur les Azure App Services : Code et configuration de l’application

Voici donc le septième et dernier d’une série d’articles consacrée à l'implémentation d’une solution fondée sur les Azure App Services organisée de la façon suivante :

Nous voici donc au terme de notre exploration de l’implémentation d’une solution fondée sur les Azure App Services. L’objectif est maintenant de vous permettre de récupérer le code et de déployer la solution correspondante dans le Cloud.

L’environnement de développement

Il vous faudra installer un Visual Studio dans sa version 2015. La « Version communautaire » devrait théoriquement suffire, mais si vous disposez d’une version « Professional » ou « Entreprise », c’est encore mieux…
Le Microsoft Azure SDK for .NET - 2.7 Azure est disponible ici. Je vous invite à plutôt utiliser Microsoft Web Platform Installer (Web PI 5.0), l’outil de référence pour mettre à jour les derniers composants de la plateforme Microsoft.
Un simple Build devrait vous permettre de récupérer les packages NuGet requis (à condition d’activer l’option « Enable NuGet Package Restore » par un simple clic droit sur la solution Visual Studio).

Code de l’application

Le code de l’application est ici. Vous pouvez le récupérer en le téléchargeant depuis le portail GitHub ou  avec la ligne de commande : https://github.com/stephgou/Thot.git

image

Initialisation des services Backend

La première étape consiste à ouvrir une souscription Azure pour ceux qui n’en disposeraient pas encore. Pour ce faire, je vous invite à lire l’article « Testez Azure gratuitement pendant un mois » de mon collègue et ami Benjamin Guinebertière.
Une fois votre souscription activée, il faut créer un compte et un conteneur Microsoft Azure Storage. La procédure à suivre est décrite dans l’article du MSDN « Leçon 1 : Créer un compte et un conteneur Microsoft Azure Storage » .
Il faut ensuite créer une instance de service « Azure Search ». Le début du tutorial « Prise en main de votre première application Azure Search dans .NET » devrait vous permettre de rapidement réaliser cette tâche…
La création du tenant Azure Active Directory se fait depuis le portail actuel.

image
Enfin, il faut y déclarer au moins un utilisateur de l’application. L’article « Création ou modification d’utilisateurs dans Azure AD » devrait vous éclairer sur ce point.

Configuration des paramètres liés aux services Backend

Une fois ces premiers éléments configurés, il faut ensuite renseigner dans le code les différentes clés Azure (« Azure Storage », « Azure Search ») requises pour faire fonctionner cette solution. Les fichiers à modifier dans la solution Visual Studio (« Doc.Search ») sont, en premier lieu, les fichiers de configuration :

  • Le fichier « App.Config » du projet « BuildIndex.Search.App » correspondant à l’application console qui permet de créer et d’initialiser l’index du service de recherche à partir du contenu d’un compte de stockage.
  • Le fichier « Web.Config » du projet « Doc.Search.Portal » correspondant à la « Web App » permettant de télécharger des documents sur le stockage Azure et d’effectuer des recherches sur ce contenu.
  • Le fichier « Web.Config » du projet « Doc.Search.API » correspondant à l’« API App » exposant de façon sécurisée le service de recherche pour l’application Universelle.

  <appSettings>

    <add key="SearchServiceApiKey" value="…" />

    <add key="SearchServiceName" value="…" />

    <add key="ApiKey" value="…" />

    <add key="ApiVersion" value="2014-07-31-Preview" />

    <add key="Endpoint" value="nom-endpoint-search-service.search.windows.net" />

    <add key="QueryKey" value="…" />

    <add key="IndexName" value="…" />

    <add key="SearchCriteria" value="docx" />

    <add key="AzureStorage.ConnectionString" value="DefaultEndpointsProtocol=https;AccountName=searchdoc;AccountKey=…" />

    <add key="AzureStorage.ContainerReference" value="public" />

  </appSettings>

 

Les paramètres SearchServiceApiKey (« PRIMARY ADMIN KEY ») et QueryKey (« docs ») sont disponibles dans le portail (partie masquée en rouge sur la copie d’écran).

image 
Le paramètre AzureStorage.ConnectionString (« PRIMARY CONNECTION STRING ») est disponible dans le portail (partie encadrée en rouge sur la copie d’écran).

image
Enfin, avant de pouvoir utiliser l’application, il faut définir l’index. Pour ce faire, il suffit de lancer l’application console « BuildIndex.Search.App » qui automatise la création de cette index selon la définition décrite dans l’article Implémentation d’une solution fondée sur les Azure App Services : Mise en œuvre du service de recherche.

Publication des services Backend

La publication des Azure App Service est réalisée directement depuis Visual Studio.
La première étape consiste à déployer la « Web App ».

image
Le site devrait être opérationnel, il est indépendant de l’« API App ». Je vous invite à vérifier son bon fonctionnement pour vous assurer que les paramètres ont été bien renseignés.
Puis il faut déployer l’« API App ». L’« API Gateway » sera créée par Visual Studio lors de la publication de l’API.

image

Enfin, il faut configurer cette « API App » et l’« API Gateway » en suivant les indications fournies dans mon précédent article « Implémentation d’une solution fondée sur les Azure App Services : Gestion d’identité ».
Je vous invite à vérifier que l’API App fonctionne avant sécurisation de l’« API Gateway », puis une fois la configuration achevée, en appliquant la démarche décrite dans ce même article.

Configuration de l’application universelle

Il ne reste plus qu’à renseigner les paramètres définis au sein de la classe « ThotSettings » dans le projet « Doc.Search.App » correspondant à l’application Universelle.

image
Ces paramètres API_APP (« URL ») et GATEWAY (« Gateway ») sont lisibles directement sur le nouveau portail Azure, au niveau de l’« API App ».

 image

Conclusion

En principe, vous devriez maintenant pouvoir lancer cette application sans difficulté particulière.
Je n’ai pas eu le temps de m’assurer que la mise en œuvre des différentes étapes que je viens d’énoncer sur un environnement « vierge » permettait de parvenir à remonter la solution sans encombre. Je vous invite donc à me remonter tout élément permettant d’améliorer cette procédure.

D’avance, merci pour votre contribution…