Je crée un cadre pour ajouter des plugins à une application de la mienne. Chaque plugin doit implémenter une classe abstact. Chaque plugin est ensuite compilé comme une DLL que l'application principale peut trouver avec Directory.GetFiles(myPath, "*.dll")
Où mettre en utilisant (SqlConnection)
Tout cela fonctionne bien et je peux instancier mes plugins dans l'application principale et les utiliser. Chaque plugin est essentiellement un widget de tableau de bord que l'utilisateur peut ajouter à son tableau de bord pour lui montrer des graphiques ou des graphiques. Cela signifie que chaque plugin dispose d'une minuterie et à chaque événement de minuteur, il rafraîchit le graphe avec les données de la base de données SQL de l'application.
Donc, ma question est, où puis-je mettre le SqlConnection
? Est-ce que je crée un SqlConnection
et le passe en tant que paramètre à chaque plugin ou est-ce que je passe la chaîne de connexion et ai chaque plugin crée son propre SqlConnection
?
Si je passe le SqlConnection
de l'application au plugin alors j'imagine que cela impliquerait une certaine gestion de la connexion dans le plugin. Je dois évidemment vérifier que c'est ouvert et que faire si l'état est ConnectionState.Fetching
ou ConnectionState.Executing
? Cela semble juste compliqué. Mais d'un autre côté, étant donné que plusieurs utilisateurs exécuteront l'application et que chaque utilisateur peut avoir plusieurs plugins sélectionnés dans son tableau de bord, il peut ajouter un nombre de SqlConnections
. Est-ce souhaitable? Dois-je envisager une troisième option où le plugin donne sa requête à l'hôte qui la met en file d'attente avec d'autres requêtes provenant d'autres plugins et renvoie l'ensemble de résultats au plugin une fois la requête exécutée? De cette façon, il n'y a qu'un seul SqlConnection
pour chaque utilisateur, quel que soit le nombre de plugins sélectionnés.
Pour être honnête, cette dernière option me semble plutôt compliquée et je ne sais pas encore comment je l'implémenterais. Si quelqu'un pouvait me diriger vers un article qui explique quelque chose de similaire, je l'apprécierais vraiment.
Merci, cela ressemble à l'approche la plus facile. Je ne suis pas familier avec "usine de connexion". Je le google maintenant, mais si vous avez un article ou quelque chose à portée de main que vous pouvez me signaler, ce serait génial. –
@DewaldSwanepoel Voir mes mises à jour :) – CodingGorilla
Cool bananas. Je viens de voir la mise à jour. Regarde très élégant. Je pense que c'est la voie que je vais suivre. Je ne pense pas que le plugin pourra utiliser (SqlConnection) dans ce cas? –