Conception d'une moulinette générant la couche entité et la couche Accès
Bonjour,
Je me suis mis à Visual Studio 2005 depuis cet été et je dois dire que je souffre beaucoup. Je viens du monde VB6 & SQL Server (Ado Oledb), et je n'y connaissais rien en programmation Objet et encore moins en développement WEB.
Je suis un informaticien indépendant (senior et dépassé), et j'ai eu beaucoup de mal à appréhender ce monde là : on ne parle pas le même langage. Je me suis auto formé et j'ai suivi une formation qui m'a quasiment coûté le tiers de mon dernier contrat.
Mon premier soucis avant d'attaquer le développement d'une application Web que j’ai vendue a été de reconstruire un atelier de génie logiciel qui me permette de retrouver un environnement familier, que je maîtrise et qui autorise des développements stables, fiables, et duplicables.
Dans un logiciel de gestion qu'il soit Web ou non, la base de données est la partie la plus importante. Comme mes progiciels VB6, sont hyper stables et suffisamment puissants pour ma clientèle, je n'ai pas voulu la reconcevoir.
Le challenge que je me suis fixé c'est que mes bases de données, puissent être attaquées par mes anciens progiciels VB6 et les applications Web Visual Studio 2005 que je dois écrire.
Ainsi je peux proposer un environnement mixte à mes clients Réseau et/ou Web.
Quand je me suis attaqué au problème, j'ai vite vu qu'il fallait adopter une architecture 3tiers et le DataBinding. Quand j'ai commencé à concevoir la couche métier, je me suis aperçu que la charge de travail était trop importante (plus de 300 tables, et dont certaines sont dodues).
Je me suis mis à la recherche de générateurs (codesmith et autres) mais soit je n'y comprenais rien, soit le résultat était décevant.
En désespoir de cause (comme à l’ancienne) , je me suis mis à écrire un générateur de couche métier adapté à mes besoins.
Auparavant, suite à ma formation ASP Net, j'ai conçu un modèle avec quelques tables pour vérifier le fonctionnement de la couche métier avec le Databinding.
Ensuite j'ai utilisé VB.net (WinForm) pour développer la moulinette (ou le générateur si vous préférez).
Cela m’a pris plus d’un mois de travail (j’en ai profité aussi pour me former à VB.Net que je ne connaissais pas)
Que fait la moulinette :
1) Elle se connecte sur SQL 2000
2) On choisit une base de données
3) On choisit les tables ou les vues
4) On génère au choix :
a) les entités
b) la couche standard d'accés aux données (procédures standard CRUD avec ou sans transaction. Ce sont des classes partielles non modifiables par le programmeur) cette couche est en principe écrasée à chaque génération
c) la couche spécifique d'accès aux données (classes partielles modifiables par le développeur) cette couche n'est pas en principe écrasée à chaque génération
d) les procédures stockées à inclure dans SQL Server
Cette moulinette m'a permis de générer quelques 200.000 lignes de code propre et stable. Elle ne gère pas tous les questions, mais elle permet le DataBinding des GridView avec des collections (List of entites), le DataBinding des formview ou detailview avec des entités. Le problème du tri dans les gridview est résolu avec le SortExpression : on n’a pas besoin de passer par un DataSet.
Pour les jointures et les transactions il faut écrire un peu de code dans les procédures d'accès au données spécifiques (celles qui ne sont pas écrasées par une nouvelle génération).
L’intérêt de tout ceci est que la couche interface Utilisateur est indépendante de la couche métier, et je peux dire que lorsqu’on a fait cet énorme effort, c’est quand même beaucoup mieux.
PS: Pendant ces moments là on se sent un peu seul (techniquement parlant). aussi je suis prêt à partager cette technique, en échange d'indulgence sur le jugement de mon code et pourquoi pas le faire évoluer ensemble
Je ne comprend pas la question
Si la question m'est adressée, je suis désolé, mais je ne la comprend pas...
Citation:
Envoyé par Exsilius
Peut-tu détailler quels mapper objet/relationnel tu as utilisé, et sur quels points il t'ont déçu ?
à propos des générateurs ...
Citation:
Envoyé par Exsilius
Joli boulot !
Concernant la question précédente, j'aimerais savoir qu'est ce qui était decevant lorsque tu as utilisé des générateurs existant lorsque tu dit :
Et également quels 'générateurs' tu as testé.
Cet été, sur les conseils de mon formateur, j'ai regardé CodeSmith, c'est un générateur de code basé sur des templates : C'est assez généraliste, mais surtout c'est trop compliqué pour moi : j'ai besoin de choses simples et faciles à comprendre.
Ensuite j'en ai regardé deux autres, un qui ne m'a pas marqué et dont j'ai oublié le nom et un autre qui m'a influencé pour ma moulinette : TCDesigner.
C'était pas mal, mais il n'était pas adapté au databinding des Objets VS2005 comme le GridView et le Formview. Il travaillait plutôt avec l'objet DataGrid.
Peut être que maintenant c'est résolu car en 6 mois il se passe bien des choses. Il n'était pas très cher.
Il avait aussi l'avantage d'être facilement compréhensible pour un novice, et de plus il pouvait générer les feuilles aspx pour la saisie des tables.
Si j'avais le temps, je me lancerais bien dans la génération automatique des pages Aspx, et pourquoi pas d'un site dans son ensemble, mais tout seul c'est une charge trop lourde.
C# et Mapping objet-relationnel
Salut,
Je veux travailler sur C# et ORM, mais je sais pas quel est l'outil le plus fiable ?
merci d'avace pour vos reponses