Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

Projet de fin d'Etudes : Clinique INSIA (Silverlight 3 MVVM et OutOfBrowser, WCF, TFS)

image

Et voilà ! Une année cloturée avec un beau projet utilisant Silverlight 3 et plus particulièrement le mode OutOfBrowser pour la partie applicative. Je souhaitais partager mon enthousiasme avec la communauté sur ce projet et démontrer ici qu’il était possible de construire une solution sérieuse dans le domaine médicale avec Silverlight 3… même en béta !

Définition du contexte :

La Clinique INSIA dispense un certain nombre de soins spécialisés, reposant chacun sur un matériel spécifique. La Clinique dispose d'un site internet, qui constitue à la fois une vitrine/interface avec les patients, mais devrait également constituer un puissant outil de communication/organisation en interne.

L’entreprise est installée à Paris ( XXe ) : c'est sur cet unique site que devront être déployées les applications ( hormis web, pouvant être placé chez un hébergeur ).

La Clinique se trouve aujourd'hui confrontée à des besoins, certes anciens, devant trouver une solution souple et efficace :

- capacité à communiquer efficacement, rapidement et massivement vers l'extérieur,

- centraliser et normaliser la communication et l'organisation en interne ,

- augmenter l'efficacité de taches ponctuelles par l'ajout d'outils spécifiques,

- améliorer l'efficacité de services en perfectionnant l'utilisation de certaines ressources.

imageTechnologies Utilisées :

- Visual Studio Team System 2008 et Team Foundation Server pour la partie gestion de projet, contrôle de code source, intégration continue et développement.

- SQL Server 2008 BI/Data : Intégration des codes postaux, des médicaments, mais aussi Analysis Services et Reporting Services

- Silverlight 3 béta pour la vitrine internet et applicative (mode out of browser) : Deux applications à réaliser .. une seule avec Silverlight 3, déploiement facilité pour l’applicatif client.

- WCF : Dans une solution hospitalière, il est préférable d’exposer nos fonctionnalités sous forme de service

réutilisable par d’autres applications.

 

Apercu de certains écrans :

Intégration Virtual Earth pour la géolocalisation :

image
Présentation des activités :

image
BackOffice avec persistence des crédentials dans l’isolated storage
image
Mode OutOfBrowser
image 
CrudViewModelBase et le pattern MVVM avec Silverlight 3 :

Le pattern MVVM apporte des vrais solutions d’architecture logicielle dans nos applications WPF ou Silverlight d’aujourd’hui, vous trouverez plein de liens à ce sujet sur internet notamment : http://msdn.microsoft.com/fr-fr/magazine/dd458800.aspx

Au cours du projet nous avons fait face à plusieurs écrans de Creation, Lecture, Edition, et Suppression d’une entité au sens Linq To SQL T4 :

- Traitement en local sur la collection d’entité (Ajout, Suppression, Modification ..)

- Utilisation de l’isolated storage et mécanisme de change tracking sur les entités en reflection

- Recherche

Faire une copie de la collection source :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
private ObservableCollection GetShallowCopy()
{
ObservableCollection cloneList = new ObservableCollection();

foreach (T item in CollectionOriginals)
{
object cloneItem = Activator.CreateInstance(typeof(T));

foreach (PropertyInfo property in item.GetType().GetProperties())
{
property.SetValue(cloneItem, property.GetValue(item, null), null);
}

cloneList.Add((T)cloneItem);
}
return cloneList;
}

Vérifier si une entité a été modifié :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
private bool CheckIfModified(T canBeModifiedEntity, T originalEntity)
{
foreach (PropertyInfo pOfCanBeModifiedEntity in canBeModifiedEntity.GetType().GetProperties())
{
object propertyValueM = pOfCanBeModifiedEntity.GetValue(canBeModifiedEntity, null);
object propertyValueO = originalEntity.GetType().GetProperty(pOfCanBeModifiedEntity.Name).GetValue(originalEntity, null);

if (propertyValueM != null && propertyValueO != null)
{
if (!propertyValueM.Equals(propertyValueO))
{
return true;
}
}
}

return false;
}

Annuler les modifications :

1
2
3
4
5
6
7
public void UndoChanges()
{
ClearChangeTracking();
CollectionOfEntities = null;
SelectedItem = default(T);
CollectionOfEntities = GetShallowCopy();
}

Le but étant de travailler en local et de contacter le serveur seulement sur les entités impactés.

Dans les prochains posts je reviendrais sur d'autres aspects que je considère intéressant du projet...

Conclusion .. Silverlight Rulez :)

Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :
Publié jeudi 2 juillet 2009 22:38 par davidrei
Classé sous :

Commentaires

vendredi 3 juillet 2009 08:36 by Thomas LEBRUN

# re: Clinique INSIA - Projet de fin d’Etudes (Silverlight 3 MVVM et OutOfBrowser, WCF, TFS) - Part 1

Pas mal du tout dis donc: beau travail :)

Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- [SharePoint] Les sessions TechDays 2012… par Le blog de Patrick [MVP SharePoint] le il y a 6 heures et 57 minutes

- TechDays Paris 2012 : Session pleinière jour 3 par Blog Technique de Romelard Fabrice le 02-09-2012, 11:01

- Mishra Reader : un lecteur RSS très Zune Style en Open Source ! par Cyril Sansus le 02-09-2012, 08:28

- [framework 4] Les Tasks et le Thread UI par Fathi Bellahcene le 02-09-2012, 00:33

- Workflow Foundation 3 a un pied dans la tombe par Blog de Jérémy Jeanson le 02-08-2012, 22:15

- TechDays Paris 2012 : Nouvelles tendances du poste de travail - Bring Your own PC par Blog Technique de Romelard Fabrice le 02-08-2012, 19:42

- TechDays Paris 2012 : System Center Service Manager 2012 Vue d’ensemble par Blog Technique de Romelard Fabrice le 02-08-2012, 17:32

- TechDays Paris 2012 : Pleinière second jour par Blog Technique de Romelard Fabrice le 02-08-2012, 16:23

- TechDays Paris 2012 : Retour d'expérience sur la mise en place d'un Cloud Privé par Blog Technique de Romelard Fabrice le 02-08-2012, 16:04

- TechDays Paris 2012 : Comment SharePoint a sauvé mes TechDays par Blog Technique de Romelard Fabrice le 02-07-2012, 23:59