Besoins de conseils en développement ASP.Net

cs_Promesses Messages postés 17 Date d'inscription mercredi 5 mars 2003 Statut Membre Dernière intervention 7 décembre 2010 - 26 sept. 2008 à 12:33
cs_Promesses Messages postés 17 Date d'inscription mercredi 5 mars 2003 Statut Membre Dernière intervention 7 décembre 2010 - 20 oct. 2008 à 23:12
Bonjour,
dans le cadre d'un développement d'un portail Web dans mon entreprise j'ai besoin de quelques conseils.


Mon environnement:
Visual Studio 2008
SQL Server 2005


Je travaille dans un service qui produit des tableaux de bord de suivi d'activité à destination d'utilisateurs.

Ces tableaux de bord sont sous forme de fichiers Excel
La "fonction prinicpale" de ce portail est de mettre ces fichiers à disposition en téléchargement.

Certains utilisateurs (avec des droits particuliers) ont la possibilité
d'intervenir sur une base de données particulières qui permet de
paramétrer les informations (paramétrer des enregistrements dans des
tables) qui doivent apparaître dans les tableaux de bord.

Des applications Access avaient été développées pour donner la
possibilité à ces utilisateurs d'intervenir sur cette base (SQL Server).

Le portail Web doit reprendre ces applications Access pour se débarasser définitivement d'Access.





Solution qui a été mise en place:
Nous avons scinder le développement en plusieurs DLL (en 3 couches data, objet, métier)



<li>Développement d'un projet relatif à la gestion des utilisateurs/groupes</li>
<li>Développement d'un projet relatif à une application</li>

Couche présentation



<li>Développement d'un webusercontrol par application</li>
<li>Développement d'un webservice par application</li>
<li>Développement d'un javascript par application</li>

Dans la partie présentation, nous sommes partis sur une navigation type Netvibes avec Onglets.

La sélection d'un onglet permet de charger le webusercontrol de l'application sélectionnée.

Le javascript de l'application est chargée et fait des appels au webservice de l'application pour toutes les actions.

Généralement, ces actions sont des opérations de listage d'enregistrements, ajout, suppression, modification.

Le portail est donc fortement "Ajaxé".

Je n'utilise pas du tout de controles asp.net.

Le framework Javascript utilisé est Prototype, et Script.aculo.us pour tout ce qui animations.

Nous avons aussi du Windowsjs pour les popups.





Mes besoins de conseil, mes questions:
Que pensez vous de cette architecture?Nous sommes 3 développeurs à migrer les applications Access, et cela
commence à faire un certain nombre de projet dans la solution. Cela
pose-t'il un problème ?

Nous avons un environnement de Préprod et de Prod.

Si une modification est faite sur 1 seule application, c'est toute la solution que je dois publier.

De plus, tout est centralisé sur mon poste, donc si une modification est faite, je suis la seule personne qui publie tout.

N'y a t'il pas de solutions plus simple?Les éléments en prod et en préprod sont désynchronisés.
Il est possible, en effet, d'avoir des applications qui sont passés de
préprod en prod car ils ont été recettés et jugés fonctionnel.
Je me suis donc créer deux solutions, une prod, une préprod, et chaque
fois que je copie les fichiers qui vont bien.

Voila, pour l'instant, c'est tout ce que j'ai comme question je
reviendrais surement agrémenter les explications et alimenterais mes
interrogations.

Merci de votre aide, et n'hésitez pas à me poser des questions pour plus d'éclaircissement.

15 réponses

nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
27 sept. 2008 à 22:36
Salut

Quand tu mets la phrase "Je n'utilise pas du tout de controles asp.net"
C'est à dire que tu utilises que des composants standards HTML
<select>
ou que tu utilises des librairies tierces

Que veux-tu dire par
"Développement d'un webusercontrol par application"

Par webservice, essai de partir sur du WCF.

Par couche data et object (ces deux couches peuvent être généré par du Linq ou a terme du entity framework)
-->  gain de temps pour le développement et les performances.
Il faut bien étudier linq avant, mais le gain doit etre considerable en productivité par rapport à des requetes à la main.
Les requetes les plus complexes peuvent etre mise en proc stocks

Je ne vois pas l'interet de mettre un projet données et un projet date.
Je verais plutot comme il est recommandé en WCF
Un projet contrat ou il y a les interfaces et un projet implementation
ou il y a les codes sources correspondant aux contrats.

Apres ou intégré le / les fichiers linq, j'ai pas travaillé sur la question.

Bon courage
0
cs_Promesses Messages postés 17 Date d'inscription mercredi 5 mars 2003 Statut Membre Dernière intervention 7 décembre 2010
27 sept. 2008 à 23:25
Bonjour,
tout d'abord merci pour ta réponse.

Quand je dis que je n'utilise pas de controles asp.net, cela veut dire effectivement que j'utilise des controles html simples.

Par développement d'un webusercontrol, cela veut dire que ce qui correspondait à une application jadis, est maintenant remplacé par un .ascx

De plus, pour l'instant nous avons développé sur le framework 2.0.
Donc pour l'instant linq et autres Entity, ce n'est pas pour le moment.

Que veux tu dire par un projet Données et un projet Date ?

Aussi, je suis parti à la chasse aux infos, j'ai vu que pour faciliter les publications, on pouvait utiliser CruiseControl.Net

Quel bon controlleur de fichier puis je utiliser pour asp.net ?
0
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
27 sept. 2008 à 23:40
 un projet Data ? (c'est le clavier qui a dérapé)

Pour la gestion des sources
tu as SVN CSV (gratuit)
source safe (payant)
Team system (payant)

Sinon CruiseControl.Net est une usine a construire les builds
c'est a dire prends les sources (par exemple toutes les buits)
extraits des focntionnalités

extraits les données
les construits par des scripts nant ou msbuild  (et leurs taches mail, ftp, fichier d'aide, obfusctaiton)....
passe les tests unitaires si y en a
passe les tests de qualité (fxcop, ...)
0
cs_Promesses Messages postés 17 Date d'inscription mercredi 5 mars 2003 Statut Membre Dernière intervention 7 décembre 2010
28 sept. 2008 à 12:05
Je n'ai pas un projet Données et Data, j'ai pas bien compris la :/

Donc tu me confirmes que CruiseControl est bien ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
28 sept. 2008 à 14:46
pour les projets
Data --> Acces aux données requetes (DAO)
Objet --> Objet metier qui circule entre les couches (DTO)
Metier --> Couche metier
Présentation --> Couche de présentation

Apres cela dépend de l'architecture que tu veux mettre en place.
Cette architecture est beaucoup utilisée.
 
Apres faire un projet par couche est-ce recommandé je ne pense pas. Car apres tu passes ton temps a circuler d'un fichier a l'autre.

Pour cruisecontrol, c'est un outil puissant apres j'ai pas de retour d'expérience sur cet outil.
http://www.tv4it.net/permalink/548/industrialisation-des-developpements-net.aspx
Pour plus d'info
0
cs_Promesses Messages postés 17 Date d'inscription mercredi 5 mars 2003 Statut Membre Dernière intervention 7 décembre 2010
28 sept. 2008 à 14:54
Ah ok.
Je n'ai pas fait un projet par couche :)

En fait, j'ai fait un projet par application à développer.
Et un projet compte bien ces trois couches.
Et pour la partie présentation, j'ai un .ascx pour chaque application.

Merci beaucoup pour le lien que tu viens de me fournir.
Je commence donc à avoir des réponses précises sur comment on doit faire de la publication.

Sinon, lorsque l'on travaille à plusieurs développeurs, comment faire pour que les développeurs n'aient pas besoin d'avoir toute la solution ?

Un développeur travaille une nouvelle application, il va donc développer le projet et la partie présentation.
Quelle est la démarche à suivre pour intégrer cette nouvelle application à la solution existante ?
0
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
28 sept. 2008 à 15:09
Moi, la publicatin je la fais pas des MSI car je n'est pas acces au machine.
Les admins installent l'application comme une application windows.

Pour les applications pourquoi passer par des ascx et pas des pages aspx??
Tu peux utiliser les masterpages pour avoir un aspet uniforme des pages et le contenu de tes pages sont l'application

Il te faut un projet federateur avec la masterpage qui peut contenir des objets transverses à toutes tes applications
Log / Connection BDD et autres.
Exemple chargement d'un client (tu ne vas pas ecrire le chargement du client pour tes 10 applications)
peut etre en phase de gestion de performance.

Mais pas au départ.
0
cs_Promesses Messages postés 17 Date d'inscription mercredi 5 mars 2003 Statut Membre Dernière intervention 7 décembre 2010
28 sept. 2008 à 19:42
Ah ok, moi j'ai accès au serveur, donc je fais un peu comme bon me semble mais comme je suis tout seul, je tatonne.

Pourquoi passer par des .ascx ? Parce que l'on veut un portail genre à la netvibes avec onglets.
Cela fait que l'on charge l'ascx qui va bien lorsque l'on clique sur un onglet.
Tout est "ajaxé".
Après on est parti sur une architecture de ce type ne sachant pas forcément si c'était bien.
Ce que je peux dire, c'est que l'on est parti sur ça et cela fonctionne pas trop mal.
Le hic (si hic il y a), c'est que l'on fait beaucoup de javascript.

En fait, ASP.Net c'est bien pour l'utilisation des controles et le développement rapide , mais je me suis aperçu que dès que tu veux faire des choses un peu plus poussées (rafraichissement partiel ou autre ouverture de popup), il faut quasi réimplémenter le fonctionnement du controle.
On va me parler d'updatepanel, mais j'en suis vite venu à bout ...
0
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
28 sept. 2008 à 20:13
Oui

l'update panel c'est un peu un composant magique
mais il savoir l'utiliser car si tu mets toute la page dedans ca ne sert pas a grand chose.
Sauf que te ne vois plus ta page se rechargé.

Il faut le faire comme les composants ajaxtoolkit
brancher sur des webservices.

Il y avait les webparts pour faire ce que tu veux à la place des ACX (c'est que le composant de base des applications de type sharepoint)
Avec la gesstion de communication entre les composants (ASCX chez toi)
0
cs_Promesses Messages postés 17 Date d'inscription mercredi 5 mars 2003 Statut Membre Dernière intervention 7 décembre 2010
29 sept. 2008 à 09:00
Au tout début, j'avais regardé du coté des webparts, mais ils sont buggés.
Ils n'ont pas le même fonctionnement sur IE et FF. Du coup j'ai laissé tomber.

En tout cas, merci de ta réactivité, de tes réponses...
Les éléments qui me manquent autour d'ASP.Net n'est pas tant la technique (on n'arrive toujours à faire ce que l'on veut), mais est plutot conceptuel.
Et puis aussi sur l'industrialisation...
0
cs_Yopyop Messages postés 586 Date d'inscription lundi 7 janvier 2002 Statut Membre Dernière intervention 10 février 2010 1
29 sept. 2008 à 15:30
Salut,

Mon commentaire vaudra ce qu'il vaudra, mais finalement, concernant ta méthode/architecture... du moment que cela fonctionne et que le client est content du résultat (et toi aussi), il ne faut pas chercher beaucoup plus loin (mais ca ne veux pas dire qu'il faut arrêter de se remettre en question).

J'ai vu bon nombre de projets avec 5 couches, respectant les design pattern à 100%... des bijoux d'architecture... à pleurer tellement c'était beau... mais au final, temps de développement était explosé, et l'application ne faisait pas ce qu'on lui demandait.

Perso, je suis par trop pour l'ajax (comment faire du neuf avec du vieux... le remote scripting ca à 10 ans minimum)... je préfère le smartclient surtout pour un intranet (idem, c'est le même principe qu'un activeX donc rien de nouveau).

Par contre, si à chaque modification tu dois tout republier (il me semble avoir lu ca)... c'est qu'il y a un problème concernant le découpage de ta solution.

Bref, ca à l'air d'être un projet relativement intéressant

yopyop
0
cs_Promesses Messages postés 17 Date d'inscription mercredi 5 mars 2003 Statut Membre Dernière intervention 7 décembre 2010
29 sept. 2008 à 17:12
Merci beaucoup pour ce commentaire encourageant!

Oui, effectivement, les questions que je me pose, entres autres question d'architecture, sont sur l'industrialisation des projet ASP.Net.
Après plusieurs recherches et vos conseils, je suis en train de m'orienter vers un subversion + cruisecontrol.net.
J'ai un problème de recopie des fichiers compilés mais ca vient.

Avec CruiseControl, le probleme de tout republier ne se posera plus car c'est lui qui le fera.

Il faudra que je règle mon problème de séparation de mon projet en plusieurs.

Merci
0
cs_Promesses Messages postés 17 Date d'inscription mercredi 5 mars 2003 Statut Membre Dernière intervention 7 décembre 2010
20 oct. 2008 à 13:09
Après des recherches, j'ai adopté une solution que justement Omar Al Zabir explique dans un post sur son blog:
http://msmvps.com/blogs/omar/archive/2008/10/06/asp-net-website-continuous-integration-deployment-using-cruisecontrol-net-subversion-msbuild-and-robocopy.aspx

Je n'ai pas exactement tout utilisé et je n'ai pas utilisé non plus toutes ses configurations.
J'utilise Subversion et CruiseControl.Net.

Vraiment, l'intégration continue est beaucoup mieux ainsi.

Je recherche maintenant comment faire pour passer des fichiers de la Preprod vers la prod.
Je ne suis pas sur que cela se recopie tel quel puisque les DLL peuvent être différentes.

Pour l'instant je ne sais pas vraiment comment faire.
0
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
20 oct. 2008 à 21:41
Les dll différentes entre la prod et la préprod c'est pas du bon.

Normalement toute la configuration doit etre faite dans des fichier web.config et des fichiers xml
rattaché au web.config (il me semble que c'est possible) j'ai cru voir le 4 pour log4net.

Les dls différentes en dev et preprod ok (mais c'est déja limite) (cas de bouchon par exemple attaque de systeme externe a ton domaine)
envoie de donnée sur une plateforme externe, envoie de mail. Utilisation de composant autre pour l'authentification (active directory d'entrreprise client)

Pour gerer c'est cas, il est possible de faire de la compilation conditionnelle, mais c'est dangereux.
Il est possible de faire d'autre de configuration avec VS2008 (debug/release/ETC) pour cela lancé le configuration manager a partir de la combo debug/release pour ajouter prod par exemple.

Bon coding.
0
cs_Promesses Messages postés 17 Date d'inscription mercredi 5 mars 2003 Statut Membre Dernière intervention 7 décembre 2010
20 oct. 2008 à 23:12
Merci pour ta réponse.
En fait, je me suis mal exprimé.
Les DLL ne sont pas différentes entre la préprod et la prod.

Par exemple:
dans ma solution, j'ai deux projets et un site web en preprod.

Coté prod, le site web est en ligne ainsi qu'un des deux projets.
Maintenant, le deuxieme projet est recetté validé, je dois le basculer en PRod.
Comment rendre cette manipulation industrielle ?

Aujourd'hui, j'ai deux solutions une Prod et une préprod.
Je trouve cela un peu bancal.
J'espère avoir été plus clair
0
Rejoignez-nous