Vous êtes ici Forums
  |  Connexion
 Forums
HomeHomeForums DNNForums DNNDéveloppementDéveloppementadapter un module DNN4 pour DNN5adapter un module DNN4 pour DNN5
Précédente
 
Suivante
Nouveau message
30/11/2010 13:46
 
Bonjour,

Il y a plus d'un an, nous avons acheté un module d'e-commerce ( ASPDotNetStoreFront ) pour DNN4.x, or le vendeur ne fournit plus de versions pour DNN5.x . A l’époque nous avions acheté les sources, nous pouvons donc l'adapter pour le rendre compatible avec DNN5 or... nous n'avons aucune idée des changement entre DNN 4 et 5 qui pourraient avoir un impact sur le module.

Ce module est sensé s'installer en plusieurs parties, nous avons tenté de recompiler la première partie avec les dll de DNN 5.6 (ne provoque pas d'erreurs pendant la compilation) mais lors de l'installation sur la plateforme, un warning SQL survient (une fonction AddListEntry necessite un paramettre @SystemList qui est non fourni). La première partie arrive donc a s'installer jusqu'au bout. Nous avons continué avec la deuxième partie: aucun warning ni erreur, tout s'installe correctement mais lors du retour a la page de modules, une erreur ASP apparait, le site est complement down :" impossible de charger le fichier ou l'assembly" (correspondant a la deuxieme partie, pourtant il est bien present dans le package), cette erreur apparait pour toutes les pages du site.

Nous n'avons aucune idée de la façon de procéder pour faire ce genre d'adaptation donc nous sommes preneur de tous conseils ! 

Merci d'avance,
Jean-Marc
  
 
Nouveau message
01/12/2010 17:41
 
Bonjour Jean-Marc,

Concernant l'erreur @SystemList, il faut vérifier ce que fait le module dans les fichiers .SqlDataProvider. Ce sont des fichiers texte contenant les commandes T-SQL pour créer/modifier les tables et procédures stockées du module. Le fait qu'ils fassent directement appel à des procédures stockées de DNN montre qu'ils n'ont pas compris ou voulus appliquer les bonnes pratiques de dev.

Par nature, la base de DNN et ses procédures sont appelées à évoluer au fil du temps (heureusement). Il ne faut donc JAMAIS faire directement référence à celles-ci. L'exemple typique est une jointure dans une sproc de module avec une table DNN. Si jamais cette table change, la sproc ne fonctionne plus ! Il faut donc juste maintenir une référence vers l'id ciblé dans ses propres tables, puis faire appel aux méthodes de l'API pour retrouver les données correspondantes MEME SI CELA EST PLUS LONG ! :-)

Trop souvent, sous prétexte qu'ils ont les sources de DNN, certains développeurs "tapent" directement dans le code ou dans les éléments sous-jacents comme les tables et sproc. C'est la toute dernière chose à faire avant de se jeter sous un train ! Car alors ce développement se coupe des évolutions futures du système et par là même créé un fork sans le savoir. Dans ce cas, l'instance de DNN ne peut plus être mise à jour et expose parfois les utilisateurs de l'application à de graves failles de sécurité.

Je n'ai pas le détail de "l'affaire ASPDotNetStoreFront", mais il faut savoir qu'il s'agit d'une application ASP.NET autonome qui a été portée sous DNN 4.x. Manque de chance, il semble que les développeurs n'ont pas suivi certaines régles de développement. Or, lors de la sortie de DNN 5.x, ils ont compris qu'ils ne pourraient pas faire une simple mise à jour et sont allé au clash avec DNN Corp. J'affirme que ce n'est pas un problème lié à DNN mais bien à la façon d'utiliser un framework quel qu'il soit. Ils auraient eu exactement le même problème avec un Jomla, Drupal ou tout autre CMS. Pour preuve, le module Store officiel que je développe depuis plus de 3 ans maintenant fonctionne parfaitement avec toutes les versions depuis DNN 4.4.1 (4.6.2 pour les dernières béta) jusque la dernière 5.6 !

Je comprends que toutes ces explications ne t'arrange sûrement pas ! :-( Je précise tout ceci pour que tu comprenne bien que tu risque d'avoir pas mal de boulot à faire pour porter correctement ce module vers DNN 5.x ! Je ne peux pas me prononcer formellement n'ayant jamais utilisé ce module. Peut-être serait-il plus simple de chercher un autre module avec des fonctions équivalentes puis de faire des exports/imports des données entres les différentes tables directement dans SQL Serveur.

Gilles
 
Précédente
 
Suivante
HomeHomeForums DNNForums DNNDéveloppementDéveloppementadapter un module DNN4 pour DNN5adapter un module DNN4 pour DNN5