Sur le champ de bataille des ORM en .NET, NHibernate a fait une percée importante pendant ces vacances estivales avec le support de Linq. L’annonce d’Ayende est ici.
Regardons quelques exemples classiques d’utilisation. Nous partirons du modèle suivant, issu d’un guide sur Fluent NHibernate.

Filtrer une liste d’entités sur une propriété:
var query = from store in session.Linq<Store>()
where store.Name == « SuperMart »
select store;
Charger une collection mappée avec un chargement tardif (lazy loading):
var query = from store in session.Linq<Store>()
from product in store.Products
where store.Name == « SuperMart »
select store;
Attention toutefois, car cette requête retourne un produit cartésien (n objets store identiques avec une collection chargée, n étant le nombre de produits associés au store) et non un arbre d’objets.
Écrire une requête dynamique filtrée sur une collection:
// la requête initiale
var query = from store in session.Linq<Store>()
from staff in store.Staff
from product in store.Products
select store;
// on rajoute dynamiquement des critères de recherche en rajoutant des contraintes à l’arbre d’expressions
var employee = « Harrison »;
query = query.Where(x => x.Staff.Any(y => y.LastName == employee));
Avantages de cette alternative
- Les requêtes sont vérifiées à la compilation
- L’IDE vous propose la complétion et le refactoring
- Vous pouvez toujours utiliser l’API classique (ce n’est qu’un facilitateur)
- La syntaxe est proche d’une syntaxe SQL
- Cerise sur le gâteau : la publication de données avec ADO.NET Data Services va être possible avec NHibernate
Remarque:
- L’implémentation n’est pas encore complète et peut conduire à des effets de bord inattendus (cf la remarque sur le produit cartésien)
Novell propose depuis lundi un kit permettant de développer en utilisant le Framework .NET et le langage C# pour créer des applications iPhone et iPod Touch. Jusqu’ici, les développeurs qui ciblaient ces appareils étaient limités à l’environnement de développement Xcode et au langage C ou Objective-C uniquement disponible sur Mac OS X.
Basé sur Mono, le portage libre de la plate-forme de développement .NET, MonoTouch 1.0 va permettre aux développeurs .NET de réutiliser leurs connaissances en C# et de bénéficier de la puissance du Framework .NET pour exploiter le SDK de l’iPhone.
MonoTouch dispose aussi d’un compilateur croisé capable de traduire les exécutables et librairies en applications natives capables d’être distribuées sur l’AppStore.
Enfin, l’autre idée portée par ce projet est également d’offrir la possibilité aux développeurs d’utiliser leurs connaissances pour créer des applications multiplateformes en incluant l’iPhone dans leur cible.
Seul bémol, ce kit à un prix. MonoTouch Personal Edition est disponible au prix de 399$ par développeur pour un abonnement d’un an, contre 999$ par développeur pendant un an pour la version Entreprise. Une licence Entreprise pour cinq développeurs coûtera quant à elle 3999$ par an.
Plus d’information sur le site du projet : http://monotouch.net/
3 nouveaux séminaires techniques organisés par Objet Direct, en partenariat avec l’éditeur Adobe et XRCE (Xerox Research Centre Europe) : présentation de l’écosystème Flex, retours d’expérience sur la techno et la plateforme Adobe Flash et démonstrations RIA, multimédia, embarqué, temps réel, supervision, 3D…
Comment intégrer Flex de manière industrielle au sein de vos applications ou de votre SI ? Quelles incidences sur les tests unitaires, l’intégration continue, les métriques de qualité du code ? Quels composants sélectionner pour construire votre architecture Flex ? Comment se positionne Flex sur son marché ? Sur quels types d’applications utilise-t-on avantageusement Flex ?
Evénements gratuits, sur réservation ferme.
En savoir plus et s’inscrire en ligne sur le site d’Objet Direct.
Tout commence par une présentation des changements et des nouvelles possibilités apportées par Java EE 5 (EJB 3.0, JPA 1.0…) et Java EE 6 (EJB 3.1, JSF 2.0…).
Puis l’auteur reprend un à un les Core J2EE patterns pour les mettre au goût du jour: Façade, Data Access Object, Transfert Object… Certains deviennent inutiles, d’autres sont transformés, d’autres tirent partie des nouveautés pour faire leur apparition. Les patterns concernant la couche présentation sont toutefois éludés.
J2EE 1.4 était synonyme de lourdeur et de développements rébarbatifs. Ici, toute complexité, tout code superflu est traqué, avec en ligne de mire une architecture simple et du code concis donc maintenable.
Le livre fait la part belle à la pratique en proposant une méthode de migration de J2EE 1.4 vers Java EE 5 et de nombreux exemples de code (DAO générique, connecteur JCA générique…).
L’équipe de Kent Beck a récemment publié JUnit 4.7 qui n’apporte pas grand chose hormis la notion de Rule. Une Rule ressemble énormément à la notion d’intercepteur de l’AOP Alliance ou de TestExecutionListeners dans Spring.
A quoi celà peut-il servir en pratique? Dans les précédentes versions de JUnit 4, pour exécuter un traitement avant/après chaque méthode de test, on utilisait une méthode annotée @Before ou @After. Pour factoriser ce traitement sur plusieurs classes de tests, il fallait passer par une classe mère commune.
Dorénavant, on pourra isoler ce traitement dans une classe:
public class LogRule implements MethodRule {
public Statement apply(final Statement base, final FrameworkMethod method, final Object target) {
return new Statement() {
public void evaluate() throws Throwable {
try {
System.out.println("Begin " + method.getName() + " on " + target);
base.evaluate();
System.out.println("End " + method.getName() + " on " + target);
} catch (Throwable ex) {
System.out.println("Exception " + method.getName() + " on " + target+": "+ex.getMessage());
}
}
};
}
}
puis le référencer dans un test, on ajoute un attribut public annoté @Rule:
public class ComplexTest {
@Rule
public LogRule logRule=new LogRule();
@Test
public void testAdd() { ... }
}
JUnit inclut quelques Rules basiques:
ExpectedException: vérifie qu’une exception est levée (généralise @Test(expected=...) à une classe de test)
Timeout: vérifie qu’un test ne dépasse pas une certaine durée (généralise @Test(timeout=...) à une classe de test
ExternalResource: base pour gérer une ressource: ouvrir/fermer une connexion par exemple
TemporaryFolder: créer/détruit un dossier temporaire pour les tests qui produisent des fichiers
TestWatchman: base pour observer l’exécution d’un test sans intervenir
TestName: donne accès au nom du test depuis la méthode de test
Verifier: base pour vérifier l’état de l’objet de test
ErrorCollector: recueille les erreurs sans interrompre un test
Gageons que des projets connexes à JUnit, comme DBUnit, tireront profit de cette notion.
Un événement à ne pas manquer !
Pour la seconde année consécutive, le Club Agile Rhône Alpes organise l’étape Grenobloise de l’Agile Tour le 20 octobre 2009 de 9h à 18h à Alpexpo / Alpes congrès.
Durant la journée seront proposées des sessions variées, en simultané dans plusieurs espaces (retours d’expérience, exposés techniques, ateliers pratiques …) animées par des orateurs internationaux et locaux de renom: Henrik Kniberg l’auteur du fameux “Scrum and XP from the trenches”; Marie-Pia Ignace, l’une des créatrices de l’Institut Lean France; Elisabeth Hendrickson, experte reconnue dans domaine du test et de la qualité logicielle en mode Agile, Jérôme Barrand, déjà présent l’année dernière pour la session d’introduction, professeur à Grenoble École de Management, fondateur de l’Institut d’Agilité des Organisations et auteur du livre « Le Manager agile » …
Pour ceux qui ne connaissent pas l’Agile Tour : l’Agile Tour est un évènement à but non lucratif organisé cette année dans 18 villes à travers le monde. Il vise un public de décideurs, d’acheteurs, de managers et d’informaticiens qui souhaitent découvrir ou approfondir les méthodes agiles.
Retrouvez ici le communiqué de l’événement de Grenoble. N’attendez pas et bénéficiez d’un tarif spécial en vous inscrivant dès maintenant. S’inscrire!
Objet Direct sponsorise cet événement.
Rendez vous le 20 octobre à Alpes Congrès.
La conférence MD DAY 2009 se tiendra le 26 novembre prochain à Paris, co-organisée par les 10 principaux acteurs du MDA en France : Objet Direct, Blue XML, Jaxio, Mia Software, Microsoft, Obeo, Objecteering Software, Sodius, Softfluent, W4-Lyria.
Cette journée consacrée aux approches « Model Driven » (MD), ou ingénierie dirigée par les modèles, s’attachera, comme les 2 premières éditions, à la découverte pragmatique des techniques d’ingénierie dirigées par les modèles, au travers d’un programme de conférences illustrées de retours clients et de cas d’application concrets. Agilité, fiabilité, rapidité, interopérabilité, maîtrise du processus de conception sont au coeur des problématiques auxquelles répond l’approche MD. Les thèmes abordés lors du MD DAY montrent la polyvalence des usages : modélisation fonctionnelle, génération de code source, migration d’applications, orchestration de processus métier, …
Grégory Weinbach, responsable du pôle MDA d’Objet Direct, animera une session sur le thème de la migration d’application avec le MDA, illustrée par un cas client.
Les inscriptions sont ouvertes sur http://www.mdday.fr
Derniers commentaires