IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

A propos des paramètres de projet.


Sujet :

VB.NET

  1. #21
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    Pourrais-tu m'en dire plus sur ce que tu appelles un contexte applicatif ?
    Kropernic

  2. #22
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Citation Envoyé par Kropernic Voir le message
    Prenons le cas d'une application avec une interface en winforms pour une utilisation interne à l'entreprise et une interface web pour une utilisation externe. Je n'ai pas d'idée précise sur la raison qui pourrait pousser à vouloir faire cela mais on pourrait imaginer que lorsque c'est l'interface winforms qui est utilisée, il faille accéder à une DB A. Alors que lorsqu'on utilise l'interface web, on accède à une DB B.
    Dans ce cas, soit la DAL doit être informée de l'interface qui est utilisée pour pouvoir adapter la chaîne de connexion (mais il faut alors recompiler la DAL pour chaque nouveau type d'interface utilisé), soit la DAL doit être informée de la chaîne connexion (ce qui ne nécessite pas de recompilation ultérieure).

    Reste à trouver une façon élégante de faire cela (informer la DAL). Malgré tout, je trouve quand même cela bizarre que ce soit la GUI qui décide de la chaîne de connexion de la DAL.
    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.

  3. #23
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Points : 5 100
    Points
    5 100
    Par défaut
    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.

  4. #24
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    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

  5. #25
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Points : 5 100
    Points
    5 100
    Par défaut
    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
    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
    Utilisation

    L'exe lit les propriétés que la DLL à mis à jour avec son fichier de config. (je conseillerai cette utilisation)
    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
    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
    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
    Espérant que cela t'aidera à avancer
    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.

  6. #26
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    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

Discussions similaires

  1. Réponses: 52
    Dernier message: 27/02/2015, 15h14
  2. A propos des projets d'installation
    Par teddyalbina dans le forum Visual Studio
    Réponses: 1
    Dernier message: 03/01/2012, 18h59
  3. Gérer des paramètres globaux dans un projet python.
    Par Narann dans le forum Général Python
    Réponses: 4
    Dernier message: 08/06/2011, 17h47
  4. Réponses: 4
    Dernier message: 22/12/2010, 12h04
  5. Parametrage des options de projet
    Par ares7 dans le forum EDI
    Réponses: 7
    Dernier message: 22/07/2002, 15h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo