2017-05-25 1 views
1

J'utilise webjob pour traiter la file d'attente des messages et l'API Web pour traiter la requête REST. Quelle est la solution pour le partage de domaine entre ces deux types d'application qui ont le même contexte délimité? Puis-je référencer la même DLL de domaine ou est-ce une mauvaise conception choisir?Partager la DLL de domaine entre webjob et web api?

+1

Pour clarifier, une application WebJob et une API Web s'exécutent sur la même application Web Azure et vous souhaitez connaître les avantages/inconvénients de l'utilisation d'une seule DLL référencée par les deux? –

+0

oui, c'est plus, spécifiquement pour les entreprises DLL – ArDumez

+0

S'il vous plaît voir ma réponse à une question similaire: https://stackoverflow.com/questions/43568325/sharing-custom-code-between-two-nodejs-microservices/43583668#43583668 –

Répondre

1

Je recommande la mise en place de votre solution Visual Studio avec les projets suivants:

  1. projet WebAPI
  2. projet Niveau application
  3. projet WebJob 4 - N. [Tous les autres projets, comme niveau d'accès aux données ]

Les projets WebAPI et WebJob font tous deux référence au projet de niveau application.

Dans l'application Web, les projets WebAPI et WebJob possèdent chacun leur propre copie de la DLL de niveau application. Il n'y a rien à gagner en gardant une copie de la DLL sur votre application Web et en la partageant entre les deux (en plus d'économiser quelques Ko d'espace disque). Mais cela ajoutera de la complexité à votre déploiement.

De même, vous pourriez à un certain moment dans le futur vouloir déplacer votre WebJob vers une application Web différente. Le partage d'une seule copie de la DLL entre les deux vous obligera à apporter des modifications pour le faire.

+0

oui mais dans le microservice qui est recommandé pas de partage code entre microservice, alors webAPI et WebJob sont les mêmes microservices? mais ce n'est pas le même EXE .. donc je suis confus – ArDumez

+1

@ArDumez ce qu'il dit est que WebAPI et WebJob ne sont que des couches de présentation différentes pour le même microservice, je pense –

+0

@ArDumez, si vous créez un Web Application Web ASP.NET Projet API appelé Foo, qui sera compilé à Foo.DLL, et toutes ses bibliothèques de support. Si vous créez un projet Azure WebJob appelé Bar, il compilera Bar.exe et ses bibliothèques référencées. Si Application est une bibliothèque de classes référencée par chaque projet, Foo et Bar auront une copie séparée de Application.DLL. Voici ce que tu veux. –