Archive

Archives pour 09/2009

Linq to NHibernate

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.

Notre modèle

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)
Categories: .NET Tags: , , ,

Développer en .NET pour iPhone, c’est possible !

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/

Categories: .NET, Actualités Tags: , , ,

Flex, technologie incontournable du Web 2.0

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 ? 

=> le 15 octobre à Lyon, le 22 octobre à Paris, le 26 novembre à Grenoble, 9h-11h30 (accueil petit déjeuner)
Evénements gratuits, sur réservation ferme.
En savoir plus et s’inscrire en ligne sur le site d’Objet Direct.

Categories: Actualités, RIA Tags: , , ,

Livre: Real World Java EE Patterns

CouvertureTout 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…).

Categories: Java EE, Web Services - SOA Tags: , , , ,

JUnit Rules

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.

Agile Tour Grenoble 2009

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.

Categories: Actualités, Méthodes Agiles Tags: ,

MD DAY 2009 : la journée du Model Driven, le 26 novembre

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 SoftwareSodius, 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

Categories: Actualités Tags: , ,