Pourrais-tu m'en dire plus sur ce que tu appelles un contexte applicatif ?
Pourrais-tu m'en dire plus sur ce que tu appelles un contexte applicatif ?
Kropernic
Je pense que tu as mal choisi ton exemple, car la connection string doit se trouver normalement dans le fichier de config (app/web.config). Ce fichier étant présent à la racine de l'application (win/wpf/web), et les connection strings étant alors disponibles dans toute l'application. C'est la couche Business qui devra déterminer le contexte (web ou Windows), et indiquer à la DAL quelle connection string utiliser (ou la lui passer directement, au choix). Pas besoin de recompiler quoi que ce soit.
Less Is More
Pensez à utiliser les boutons , et les balises code
Desole pour l'absence d'accents, clavier US oblige
Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.
C'est une fabrication maison.
Plutôt que d'avoir des variables globales ou shared (ou des classes shared), j'ai une variable qui représente mon contexte de travail applicatif ou se trouve tout ce qui est commun à l'appli. Un peu à l'image d'une session windows mais au niveau applicatif (si tu vois ce que je veux dire)
Traductions d'articles :
La mémoire en .NET - Qu'est-ce qui va où ?
Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.
Hello,
Je n'ai pas tout compris ce que vous avez dit.
Vu qu'il faut que j'avance, j'ai ajouté un fichier texte nommé BLL.conf dans la couche GUI et j'y stocke le path du folder où le fichier doit être stocker. Comme ça c'est modifiable facilement lorsque je passe en prod.
Bref, j'utilise la même technique pour le nom du serveur de la DB.
Quand j'aurai du temps (ou quand ma boite se décidera à me payer une formation .NET), je regarderai pour rassemble cela dans un seul fichier xml "hébergé" par la couche GUI mais qui serait accessible par toutes les couches de l'application.
Kropernic
Bon, voici peut-être une piste.
Résumons pour être bien d'accord, tu as une DLL avec son fichier de config, et tu souhaites lire les données de ce fichier de config concernant la dll.
Contrainte : l'exe, la dll et son fichier de config doivent être dans le même répertoire.
Le fichier de config de DLL nommé clSettings.dll.config
Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 <?xml version="1.0" encoding="utf-8" ?> <configuration> <appSettings> <add key="TestDll" value="test dll avec modif en prod"/> <add key="Test2" value=" valeur numéro 2, modif 2"/> <add key="Essai" value="Essai pour verif ; ok"/> </appSettings> <configSections> <sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" > <section name="clSettings.My.MySettings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" /> </sectionGroup> </configSections> </configuration>
Mise en place des lectures des settings dans le fichier de config
2 approches :
La DLL lit sa config
La DLL met a disposition le nom de son fichier de config
La dll clSettings.dll
Utilisation
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 Imports System.Configuration Public Class Class1 Public Property TestDLL As String Public Property Test2 As String Public Property Essai As String ''' <summary>Lecture interne du fichier de config et alimentation des propriétées relatives aux settings</summary> Sub LitSettings() ' Alimentation des propriétés de la DLL par les settings du fichier de config Dim config = ConfigurationManager.OpenExeConfiguration(New Uri(System.Reflection.Assembly.GetExecutingAssembly().CodeBase).LocalPath) Dim DllConfigAppSettings As AppSettingsSection = DirectCast(config.GetSection("appSettings"), AppSettingsSection) TestDLL = DllConfigAppSettings.Settings("TestDLL").Value Test2 = DllConfigAppSettings.Settings("Test2").Value Essai = DllConfigAppSettings.Settings("Essai").Value End Sub ''' <summary>Fourni le nom du fichier de config de la DLL</summary> ''' <returns>Le nom du fichier de config de la DLL</returns> ''' <remarks>Au programme appelant d'effectuer les accés</remarks> Public Function GetAssemblyDLLFile() As String Return New Uri(System.Reflection.Assembly.GetExecutingAssembly().CodeBase).LocalPath End Function End Class
L'exe lit les propriétés que la DLL à mis à jour avec son fichier de config. (je conseillerai cette utilisation)
L'exe obtient le nom du fichier de config de la dll et fait ses lectures
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 ' lecture settings dll par propriété (settings lu par DLL dans son fichier de config) Private Sub btnLitSettingsDLL_Click(sender As System.Object, e As System.EventArgs) Handles btnLitSettingsDLL.Click Dim icl As clSettings.Class1 = New clSettings.Class1 icl.LitSettings() Label4.Text = icl.TestDLL Label5.Text = icl.Test2 Label6.Text = icl.Essai End Sub
Espérant que cela t'aidera à avancer
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 ' lecture setting dll - direct avec le fichier config dll Private Sub btnDLLFileConfig_Click(sender As System.Object, e As System.EventArgs) Handles btnDLLFileConfig.Click Dim icl As clSettings.Class1 = New clSettings.Class1 Label16.Text = icl.GetAssemblyDLLFile Dim config = ConfigurationManager.OpenExeConfiguration(icl.GetAssemblyDLLFile) Dim DllConfigAppSettings As AppSettingsSection = DirectCast(config.GetSection("appSettings"), AppSettingsSection) Label15.Text = DllConfigAppSettings.Settings("TestDLL").Value Label16.Text = DllConfigAppSettings.Settings("Test2").Value Label17.Text = DllConfigAppSettings.Settings("Essai").Value End Sub
Traductions d'articles :
La mémoire en .NET - Qu'est-ce qui va où ?
Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.
Bah déjà, merci de t'être penché sur le sujet.
Je testerai cela demain ou la semaine prochaine. Pour le moment, je me bats avec une connexion sftp (et c'est pas moi qui gagne )
Kropernic
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager