Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

GESTION BASE DE CONNAISSANCE / CONCEPTION 3 TIERS


Information sur la source

Catégorie :Applications Source .NET ( DotNet ) Classé sous : conception, 3 tiers, base connaissance, service Niveau : Initié Date de création : 10/12/2007 Date de mise à jour : 13/12/2007 13:57:39 Vu / téléchargé: 6 083 / 597

Note :
Aucune note

Commentaire sur cette source (2)
Ajouter un commentaire et/ou une note


Description

Cliquez pour voir la capture en taille normale
Bon comme le commentaire est un peu loin, j’ai fait un petit sommaire

L’APPLICATION
Description de l’application

INSTALLATION
Comment l’installer et la tester

DESCRIPTION DE LA CONCEPTION
Le titre parle de lui même

CONCLUSION
Idem

--------------------------------------------------------------------------


L’APPLICATION

Voici une petite application permettant de gérer des fiches de connaissance

Ces fiches on un titre et un contenu au format RTF et peuvent être relié à différents critères.

Les critères sont organisés hiérarchiquement :

Par exemple :

Technologie
+--Web
   +--Asp
   +--Ajax
Langages
+--C#
+--Javascript
Framework
+--Net 1.1
+--Net 2.0

Pour exemple, je veux ajouter une petite source qui concerne une page web asp.net 2.0 en c#. Ma fiche sera donc reliée aux critères suivants :

* Technologie\Web\Asp
* Langages#
* Framework\Net 2.0

Et donc aux critères parents : Technologie, Web, Langage, Framework.

Il est possible ensuite de faire une recherche avec comme critère :
- Le titre
- Le contenu
- Un ou plusieurs critères


INSTALLATION

Le projet devrait normalement fonctionner sans pb mais il vous faut :
- Créer une base SQLServer et y exécuter le script fournit.
- Définir la chaine de connexion dans le ficher app.config
- S’assurer que vous avez les droits sur les procédures stockées. (Les tables ne sont jamais accédées directement)

Ensuite il vous faudra créer des critères :
Menu Outil / Gérer les critères
Pour ajouter un critère (sélection le critère parent ou non puis Fichier | Ajouter (Ctrl+N) )
Une fois que la liste de critère vous convient, fermer le formulaire de gestion des critères.

Menu Fichier -> Nouveau (ou CTRL+N) permet d’ajouter une fiche
Ensuite vous pouvez tester la recherche : Menu Outils | Rechercher | Contenu

(Il est normal que certaines options de menu soient toujours désactivées étant donné que la fonction n’est pas encore développée).

Si vous modifiez la structure des critères alors qu’il existe déjà des fiches, vous pouvez lancer une procédure qui réorganisera les liens Contenu -> Critère en tenant compte que chaque critère liés, doit lier également ses parents.

En définissant TRY_CATCH comme symbole de compilation conditionnelle, vous activerez la gestion des exceptions, mais il peut être utile de le supprimer pour le débogage. (Propriétés du projet / Onglet Générer)

Pour info, tous les try catch sont dans les formulaires (ou rarement, dans le gestionnaire de formulaire). Si vous en trouvez d’autre dans la couche de donnés, les exceptions sont traités puis  retransmises à la couche supérieur via un ‘trow’.


DESCRIPTION DE LA CONCEPTION

L’application ne gère que 2 entités (Contenu et Critères) et la conception peut sembler un poil lourde pour gérer aussi peu, donc j’explique pourquoi :

J’ai voulu faire un essai d’architecture avant de me lancer dans une application qui gèrera plus de 50 entités. J’ai voulu me faire ce petit outil (que j’utilise) et en même temps tester cette conception.

Il y a quelques diagrammes de classe dans le projet et le document GIF qui donne une vision globale.

Dans le diagrame GIF les entités n’apparaissent pas sinon le schéma aurait comporté des liaisons dans tous les sens. Il faut savoir que les entités sont utilisées partout car elle transporte l’information de la couche de persistance à la couche de présentation.

Avant qu’on me dise, ‘pourquoi utiliser des entités et non les datasets’, je réponds que je suis contre, car trop lourd, trop liés à l’aspect base de données. Ha si… j’utilise les dataview pour retourner les résultats de la recherche  (dans ce cas, la collection d’entité est trop lourde)

Les entités utilisent le late binding. Cela signifie qu’on ne charge que l’entité et pas les entités dépendantes. .Si vous chargez une fiche (un contenu), les critères qui lui sont liés seront chargés uniquement si vous tenter d’y accéder.


L’application est une MDI avec un menu général.
Le menu concerne toujours la fenêtre qui a le focus. (SI aucune fenêtre n’est ouverte, le menu est grisé (sauf l’option ‘quitter’…)

Les options du menu sont activées suivant la fenêtre active et les interfaces qu’elle implémente (IFrmMenuFile, IFrmMenuEdit ou IFrmMenuTools).

Lors d’un clic sur un élément de menu, mainMdiForm  appel le manager pour afficher un éditeur d’instance, un éditeur en arbre, ou un formulaire de recherche. (IFrmEditorInstance, IFrmEditorTree, IFrmSearch)

Le FormManager gère l’affichage et fait en sorte de dialoguer avec le formulaire. Il est la passerelle entre les formulaires et les services d’accès aux données.

Le ProcessManager est un peu particulier, il utilise un backgroundworker lancer le traitement de réorganisation des liens Contenu / Critère (vu précédement pour ceux qui lisent tout…)

Les services sont des classes statiques (sans état). Elles fournissent à la couche de présentation l’accès aux données via des entités, ou des Dataview pour les résultats de recherche.
Les services se charge de vérifier que l’appel est viable et appel les méthodes appropriés pour obtenir ou gérer les données. (C’est ici que l’on place les règles métier, mais le métier pour cette application est assez.. inexistant….)

Les services interrogent le DataProvider qui fournit l’implémentation de l’accès aux données via des interfaces IDBContent, IDBCriteria

Ici ces interfaces sont implémentées pour SqlServer. (c’est paramétrable dans le fichier de config mais seul l’implémentation SqlServer exite). Si vous avez d’attaquer une autre base, il suffira d’implementater les interfaces (IDBContent, IDBCriteria, IDBContentCriteria)


 

Conclusion

L’application est en winform, mais je pense travailler sur une autre couche de présentation en asp.net, enfin ca dépendra du temps…., peut etre un web service…  Si il y a de la demande….


N’hésitez pas à m’envoyer des remarques sur le fonctionnement de l’appli, mais j’attends plutôt des commentaires sur la conception.

 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Historique

13 décembre 2007 13:53:50 :
Correction du bug lors de la suppression d'un critères ayant des critères enfants. Pb de rafraichissement de l'afficahge en cas d'erreur.
13 décembre 2007 13:57:39 :
Correction du bug dans le controle utilisateur EntityTreeView, lors de la suppression d'un critère ayant des critères enfant.

Commentaires et avis

signaler à un administrateur
Commentaire de TheSaib le 13/12/2007 01:54:47 administrateur CS

C'est propre, plutôt bien foutu, et commenté.

C'est agréable à lire.

Merci.

signaler à un administrateur
Commentaire de thiosyiasar le 13/12/2007 12:15:49

Salut TheSaib,

Merci pour ton commentaire :)
Bon je suis sure que tu peux etre un peu plus critique?

Il n'y a rien qui te gène dans la conception ? Il y a forcément quelques trucs qui aurait pu etre mieux fait.
Par exemple j'ai encore un doute sur le late bingind des entités...
L'entité est juste un conteneur, donc pas de méthodes (bon a part la surcharge de ToString() ), pas d'appel de méthodes vers d'autres classe. Ce qui me pose un pb pour la gestion du latebinding. On est obligé d'appelé un service pour s'assuer que les référence sont bien chargées (ContentService.EnsureReferencesLoaded()). Je ne trouve pas cela trés 'open'.

T'en penses quoi?

A+

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Web Service C# et *.asmx [ par kbumbazz ] Salut g fé un nvo projet C# Web Serice et g vu ke ca fé un HelloWorld donc il disent de faire F5 et ca lance en fait IE ki va chercher mon http://loca stockage de session [ par t1Kiet ] Bonjour.J'utilise 1 web form qui appelle un web service. Dans la session de ce web service je stocke des objets. Mon pb est qu'à chaque appel d'1 méth ecrire un service sous w2k serveur [ par albubu ] Bonjour,j'utilise les fichiers de la MSDN afin de faire un service à partir d'un programme en C. Il s'agit de deux fichiers qui comprennent toutes les Requete XML sur service PDS pour project server [ par elrick23 ] Voilà je suis confronté au manque de doc de Micsoroft pour les requetes sur le service PDS du Project Server.Il s'agit des ajouts de tâches dans un pr Web Service - Compression XML [ par zerpoi ] Le XML c'est bien. Mais un peu lourd pour le réseau ...Je sais qu'il existe un moyen de placer un filtre de compression sur le web service, du style g Pb Web Service type de donné... [ par DJCODEKILLER ] Bonjour à tousJe suis en train de développer un service web sous Visual Studio en C#.J'utilise le protocole HTTP GETla methode de mon web service me Service Web : Serveur en C# - Client en PHP. Possible?? [ par pete87150 ] Bonjour a tous,Je voudrais savoir s'il est possible de créer un service web avec un serveur en C# et un client en PHP.Je pense à l'utilisation de NuSO Web Service+rs232 [ par fryounet ] Bonjour ,Voici mon problèm : j'aimerais accéder à périphérique qui est connecté par port rs232 ,par un Web service.tout d'abord j'aimerais savoir si c Pb web service en c# [ par judepom ] Bonour, cela fait un mois que je m'intéresse aux technologies des web services principalement sous dotnet en c#.Je dois en ce moment récupérer un wsd Comment creer un service en C# [ par crack_xp ] Bonjour,je voudrai savoir est ce que j ai besoin d'un composant pour creer des services sous windows XP ou pas?et comment faire, merci d'avanceFINAL F


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,546 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.