Question

Soit une couche logique d'accès aux données existantes et d'affaires qui est utilisé par plusieurs applications différentes et que, jusqu'à présent, seulement besoin d'une connexion de données unique pour la durée de vie d'une application donnée qui a consommé - donc les informations de connexion pourrait simplement être tiré par la couche de données à partir du fichier de configuration de l'application. Aller de l'avant, cependant, les classes de données et logiques doivent fournir la flexibilité pour les applications pour déterminer la connexion de données sur une base d'appel par. De plus, les classes sont maintenant appelées par plusieurs applications simoultaneously grâce à des services.

Les appelants ne veulent pas gérer les chaînes de connexion spécifiquement, mais plutôt les noms de connexion sous la forme d'un ENUM qui peut être résolu à des chaînes de connexion et par la couche de données.

À l'heure actuelle, toutes les classes de données et logiques sont statiques avec les données scope interne et la logique étant publique scope.

Quelles sont les bonnes stratégies pour obtenir une clé de l'appelant tout le long des méthodes dans les classes de données choses comme API qui envisagent utilisabilité, la performance, la sécurité des threads / isolement de l'appelant, etc.

Deux options évidentes sont:

  1. Ajoutez la clé de connexion en tant que paramètre à toutes les méthodes. Beurk - ne va pas se produire, mais y compris pour l'exhaustivité

  2. .
  3. Modifier la logique et des classes de données à des classes d'instance et d'y passer la clé dans les constructeurs pour toute méthode de membres à utiliser. Il n'y aurait pas de changement de signature de la méthode, mais un changement de rupture sensiblement à la façon dont l'API est appelée.

Quelles sont les autres options?

Était-ce utile?

La solution

Malheureusement, vous a frappé les deux meilleures options pour la façon de traiter ce type de problème. # 2 est fait un peu plus compliqué en ayant des services en cause, parce que les différentes demandes de service vont soit besoin d'un moyen de se rappeler quel client qui (comme les séances) ou devoir transmettre les informations de connexion via le service sur chaque appel.

Je pense que si vous créez un côté client wrapper classe pour accéder au service, vous pouvez limiter le nombre de côté client les changements que vous allez avoir besoin. Pour le service lui-même, je pense que vous allez vraiment être coincé passer la connexion comme un paramètre chaque fois simplement parce que les alternatives sont assez compliquées il.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top