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

Dotnet Discussion :

Une application deux déploiement


Sujet :

Dotnet

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Intégrateur Web
    Inscrit en
    Juillet 2014
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Intégrateur Web

    Informations forums :
    Inscription : Juillet 2014
    Messages : 36
    Par défaut Une application deux déploiement
    Bonjour à tous,

    J'ai développé un progiciel pour une société en .NET Framework 4.8 XAML. Jusqu'ici tout va bien.
    La société en question a une succursale et voudrait lui fournir le progiciel "rebrandé" pour cette marque.

    La solution simple serait de dupliquer le projet et faire les modifs de rebrand dessus.

    Mais dans la suite des Maj seront appliquées aux deux... Donc je devrais dupliquer lignes après lignes au fur et a mesure.

    J'ai pensé à peut être splitter le projet en plusieurs : un core pour les parties communes et un projet pour tout ce qui est spécifique. Mais je n'arrive pas à faire communiquer correctement les jonctions entre les projets. Je n'ai pas trouvé comment faire appel à une view xaml d'un autre projet, ni comment accéder aux "control" depuis un autre projet... Bref, soit je me débrouille mal dans cette façon de faire (mon code ne serais pas assez MVVM?), soit c'est pas possible.

    Est ce que quelqu'un a déjà rencontré cette situation? et trouvé une façon de faire? je suis preneur pour toute piste de ce côté, même si ca passe par beaucoup de refactorisation.

  2. #2
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    en quoi consiste le rebranding ?
    il y a fort à parier qu'il n'y ait pas à dupliquer les projets
    si c'est juste 3 images qui changent ca se fait très facilement
    si ce sont des fenetres qui sont différentes d'une appli à l'autre, ou des menus différents carrément c'est faisable en faisant une dll pour chaque marque, et en chargeant la bonne, et en utilisant la reflection pour exécuter le code dans celle ci
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre averti
    Homme Profil pro
    Intégrateur Web
    Inscrit en
    Juillet 2014
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Intégrateur Web

    Informations forums :
    Inscription : Juillet 2014
    Messages : 36
    Par défaut
    Citation Envoyé par Pol63 Voir le message
    en quoi consiste le rebranding ?
    il y a fort à parier qu'il n'y ait pas à dupliquer les projets
    si c'est juste 3 images qui changent ca se fait très facilement
    si ce sont des fenetres qui sont différentes d'une appli à l'autre, ou des menus différents carrément c'est faisable en faisant une dll pour chaque marque, et en chargeant la bonne, et en utilisant la reflection pour exécuter le code dans celle ci
    Il y a pas mal de texte sur le xaml et des tabitem qui diffèrent. Et sinon certains comportements spécifiques liés à des évent sur le xaml. Et bien sûr l'icone et le nom de l'app...

  4. #4
    Membre averti
    Homme Profil pro
    Intégrateur Web
    Inscrit en
    Juillet 2014
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Intégrateur Web

    Informations forums :
    Inscription : Juillet 2014
    Messages : 36
    Par défaut
    Citation Envoyé par Pol63 Voir le message
    si ce sont des fenetres qui sont différentes d'une appli à l'autre, ou des menus différents carrément c'est faisable en faisant une dll pour chaque marque, et en chargeant la bonne, et en utilisant la reflection pour exécuter le code dans celle ci
    J'ai essayé ceci, mais je me retrouve avec des problèmes de dépendances cyclique. Je n'avais pas pensé à cette possibilité (multi-branding) quand j'ai pensé l'architecture de l'app. Du coup j'ai très peu de méthodes qui ne font pas référence à des spécificités "brandé"

    Pour être plus spécifique:
    les classes qui sont globales -> projet core (pas de problème. donc les projets brandés doivent faire référence au projet core)
    les méthodes de mise à jour Bdd -> projet core ( mais elle font référence aux donnés serveurs spécifique donc : référence au projet brandé !!! référence cyclique)
    un xaml de login global -> projet core (ce n'est pas brandé parceque certains utilisateurs sont multi-brand)
    un xaml app -> projet brandé (chargement depuis le projet brandé....)
    Bref... ce n'est que le début...

  5. #5
    Membre régulier
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2021
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2021
    Messages : 10
    Par défaut
    en utilisant la reflection pour exécuter le code dans celle ci
    Surtout pas, la réflexion pour charger des classes dynamiquement c'est non seulement une mauvaise idée mais c'est surtout un trou de sécurité béant.
    En général la réflexion c'est pour faire des IDE , des explorateurs d'objet ... les autres usages (en production) sont à bannir.

    Il faut commencer par faire un état des lieux exhaustif des spécificités de chaque marque et créer une interface commune.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     public interface IBrand
    {
            Image Logo { get; set; }
            string  Name { get; set; }
            string LongSpecificText { get; set; }
            Action SpecialXamlEventCallback { get; set; }
            DataTemplate SpecialTabItemTemplate { get; set; }
    }
    Implémenter cette interface autant de fois que tu as de client plus une implémentation par défaut.
    C'est dans le processus de build (serveur de build ou simple script de setup) que l'implémentation seras remplacé par celle du client.

  6. #6
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    Citation Envoyé par champy_30 Voir le message
    la réflexion pour charger des classes dynamiquement c'est non seulement une mauvaise idée mais c'est surtout un trou de sécurité béant.
    dans ce cas l'injection de dépendance est une faille de sécurité aussi ...
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  7. #7
    Membre régulier
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2021
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2021
    Messages : 10
    Par défaut
    dans ce cas l'injection de dépendance est une faille de sécurité aussi ...
    Les services injectés sont d'abord enregistrés, leurs dll n'est pas chargé dynamiquement , pas de soucis pour faire de la réflexion sur TES objets, le soucis c'est quand tu commence à charger dynamiquement une DLL avec un AssemblyLoad pour y chercher des types qui implémente une interface particulière par exemple.

Discussions similaires

  1. Partage D'une Application Sur Deux Postes
    Par com-ace dans le forum Access
    Réponses: 2
    Dernier message: 03/07/2006, 14h57
  2. Tomcat 5.5: déploiement d'une application, config server.xml
    Par yizashi dans le forum Tomcat et TomEE
    Réponses: 5
    Dernier message: 02/04/2006, 17h20
  3. [Déploiement] Diffuser une application java
    Par lilli1407 dans le forum EDI et Outils pour Java
    Réponses: 2
    Dernier message: 31/01/2006, 16h49
  4. [D7][ORACLE 8i] déploiement d'une application
    Par Magnus dans le forum Bases de données
    Réponses: 3
    Dernier message: 03/10/2005, 16h40
  5. Réponses: 2
    Dernier message: 15/04/2002, 12h56

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