Vous êtes ici Forums
  |  Connexion
 Forums
HomeHomeForums DNNForums DNNUtilisation - f...Utilisation - f...base de donnéebase de donnée
Précédente
 
Suivante
Nouveau message
03/09/2007 14:00
 
base de donnée  (N/A)

Bonjour,je souhaite savoir le mode de fonctionnement de DNN concernant l'acces aux données dans une base de données autre que celle de DNN.

A ce que j'ai pu comprendre DNN utilise une DAL(voire DAL+), une BLL et une Presentation Layer pour manipuler les données, les modules ...

Quelqu'un peut-il m'éclaircir à ce sujet?

Merci

 

 

 
Nouveau message
03/09/2007 14:45
 
Re: base de donnée  (N/A) Modifié par ploum  sur 03/09/2007 14:46:22

Bonjour,

DNN et chaque modules utilisent un data providers pour accéder aux données. Si tu jette un coup d'oeil au dossier bin, tu verras plein de dll terminant par SqlDataProvider. C'est cette partie qu'il faut adapter. Aux premiers jours de DNN, il existait une version pour Access. Il y a eu aussi un projet pour FireBird, abandonné maintenant. Il existe une version pour MySQL toujours en vente sur SnowCoverd pour DNN 4.0.3, mais site site de l'entreprise n'existe plus ! Enfin, il existe une version pour Oracle.

Le vrai problème de ces variantes étant le support et la continuité. Comme tous projet, il faut des bonnes volontées. Quand aux projets commeciaux, ils disparaissent car MS offre SQL Serveur Express qui est suffisant pour bon nombre de sites.

Gilles

 
Nouveau message
03/09/2007 17:31
 

Ok merci pour ta réponse.

Cependant quand tu dis "c'est cette partie qu'il faut adapter",si j'ai bien compris alors pour chaque module ayant besoin de ressouces en base de données, je crée les dll correspondantes.

Car moi j'aurai besoin d'acceder aune autre base de données  sur sqlserver.

J'ai lus sur une doc le concept pour implémenter une nouvelle base de donnée avec Factory Design Pattern mais je saisi pas tout.

Si vous avez des infos la dessus, je suis preneur.

Merci

 
Nouveau message
03/09/2007 18:17
 

Re,

Attends, si j'ai bien compris tu as besoin d'accèder à des données sur une autre base (que celle de dnn) qui tourne sur SQL Server ? Précise ton besoin avec suffisament de détails pour que je vois s'il n'y pas une solution.

S'il s'agit d'afficher des données provenant d'une autre base, un autre utilisateur a eu ce besoin. Lit ce post peut-être que cela conviendrait. Cela pourra aussi te donner un début de solution pour accéder à une autre base dans un module spécifique que tu développerais.

Gilles

 
Nouveau message
06/09/2007 11:35
 

Bonjour,

Ben en fait, j'aurais besoin d'acceder a une base de données (clients,produits...)sur un sqlServer.

Deja je ne sais pas s'il faut des custom modules  ou un Iframe  pour chaque fois que j'aurais besoin d'acceder a ma base de donnee.

De plus, ayant deja travailler avec le modele n-tiers, je ne vois pas comment integrer ceci dand DNN.Car a ce que j'ai compris: pour chaque custom module, il faut avoir les class DataProvider et SqlDataProvider.

Je me demande s'il est possible de faire 4 projets correspondant a mes couches(avec par ex toutes mes fonctions d'acces a la BDD dans le projet DAC,toute mes fonctions metiers dans le projet BLL etc)  et faire des reference ensuite sur mon portal pointant vers ses projets.

Merci pour vos réponses.

Merci

 
Nouveau message
06/09/2007 15:15
 

Bonjour,

Il faut éviter à tout prix l'utilisation des IFrame ! Dans ton cas, il faut créer un module pour chaque catégorie de données à accéder (clients, produit, ...). Je te conseille vivement d'acheter le bouquin : Professional DotNetNuke 4 qui explique en détail l'architecture de dnn et la création de module. Tu as le site de Michael Washington du Core Team pour les permier pas et autres exemples. Il a aussi écrit un autre bouquin en collaboration sur le dev de modules (pub sur son site). Je te conseille vivement aussi de réaliser d'abord un tout petit module d'un exemple quelconque pour appréhender les différents aspects de la création de module dnn. Tu gagneras du temps, plutôt que de te lancer tête baissée dans ton dev final. L'idée est de créer un mdoule "standard", mais de modifier légèrement la fameuse classe SqldataProvider dont je parlais.

Cette classe s'appuie sur des méthodes pour aller lire et écrire au travers de procédures stockées de la base cible. Voici un court extrait du module WWStore, cette méthode va lire les données d'une boutique en passant en paramètre le numéro du portail à la procédure et retourn un objet IDataReader :

  public override IDataReader GetStoreInfo(int PortalID)
  {
        return SqlHelper.ExecuteReader(ConnectionString, DatabaseOwner + ObjectQualifier + "WWStore_Administration_GetStoreInfo", PortalID);
  }

On remarque le paramètre ConnectionString. C'est une propriété accédant à une variable locale initialisée dans le constructeur de la classe. Dans un premier temps, tu coderas le contenu de cette chaîne en dur. Puis idéalement, il faudrait aller relire une valeur du fichier web.config pour éviter d'avoir à recompiler le module en cas de changement des paramètres d'accès à la base (nom du server sql ou adresse ip, compte et mot de passe, etc.). Les valeurs DatabaseOwer et ObjectQualifier sont spécifiques à dnn, elle préfixe l'appel à la procédure avec le nom du compte dbo et un préfixe de table/procédure optionnel défini dans web.config. Cela pourrait donner par exemple: dbo.dnn_WWStore_Administration_GetStoreInfo. Tout le reste est du standard dev de module DNN. Donc lorsque tu saura créer un module pour dnn, ce sera vraiment très simple d'accéder aux données de ton autre base.

Pour faire court, un module est composé de contrôles pour afficher les données (Vue, Paramètres, etc.). Comme finalement ce ne sont que des contrôles ASP.NET dérivant d'une classe dnn, si tu sais faire un contrôle en ASP.NET et que tu as suivi mes conseils pour les premiers pas, alors tu ne devrais pas rencontrer de problèmes particuliers. L'avantage étant qu"avec dnn, tu t'appuie sur le framework dnn qui répond à 90% des besoins courants d'un site complexe (gestion des utilisateurs, droist d'accès, etc.).

Dernier conseil, il existe deux modèles de développement sous ASP.NET. WSP qui utilise la compilation dynamique et WAP qui utilise le concept de librairie. Le premier est plus simple et peut être utilisé avec Visual Sutdio Web Express (gratuit chez MS), mais une partie de ton code source est visible. Le second requière Visual Studio 2005 Pro SP1, plus puissant mais aussi un peu plus souple dans certains cas. Moi je n'utilise que WAP. Fais une recherche sur ce forum avec le mot clé WAP pour trouver différents posts sur le sujet.

Gilles

 
Précédente
 
Suivante
HomeHomeForums DNNForums DNNUtilisation - f...Utilisation - f...base de donnéebase de donnée