Mon monde en .NET

Aller au contenu | Aller au menu | Aller à la recherche

février 2008

jeudi, février 28 2008

Nouvelles de la blogosphère ...

Je vous invite à consulter un post donnant quelques benchmarks pour le temps de création d'un objet (mot clé new, Activator, Reflection)... Les résultats sont à lire attentivement ;-) ... Bonne lecture

dimanche, février 24 2008

NUnit VS MsTest 2008

Dernièrement, j'ai passé quelques temps sur 'l'optimisation' de tests unitaires et après plusieurs discussions avec Pierre-Emmanuel Dautreppe et je suis tombé par hasard sur un article qui m'a étonné ... Celui-ci relatait une lenteur dans mstest ... Dès lors, j'ai effectué un mini test ce we qui n'a rien de tres parlant mais qui pourrait refleter certaines réalités entre mstest de vs 2008 et NUnit. J'ai lancé dans 4 méthodes différentes le même code ...
[csharp]
        public void TestMethod4()
        {
            for (int i = 0; i < 100000000; ++i)
            {
                Assert.IsTrue(true);
            }
        }
Le résultat est assez surprenant ..
  • MSTest 2008: 12 secondes
  • NUnit : 460 secondes

jeudi, février 21 2008

Log des requêtes SQL effectuées par DLINQ

Il est parfois intéressant de pouvoir tracer les requêtes SQL générées par n'importe quelle bibliothèque afin de pouvoir optimiser certaines choses mais comment le faire sous LINQ ? Voici la réponse ... Il suffit d'utiliser un TextWriter et de positionner la propriété Log de l'objet DataContext .... Et pour faire simple ... il est tout à fait possible de le faire sortir directement sous la console en sortie en utilisant "Console.Out" qui renvoie un TextWriter ;-)

Pagination sous SQL Server

Depuis quelques temps, dans le cadre du développement des bibliothèques Lelibre.Fwk, j'étais à la recherche de la solution pour supporter la pagination sous SQL Server ... Après, quelques tests et autres demandes, j'ai trouvé la solution ^_^. Je vous la donne. J'ai par après eu l'idée de valider ou améliorer celle-ci en regardant ce qu'executait LINQ lorsque je demandais une "requête" ....
[csharp]
var q = (from c in dataContext.Blog select c).Skip(5).Take(10);
Et voici le code SQL généré:
SELECT [t1].[BlogID], [t1].[Title]
FROM (
    SELECT ROW_NUMBER() OVER 
   (ORDER BY [t0].[BlogID], [t0].[Title]) AS [ROW_NUMBER], [t0].[BlogID], [t0].[Title]
    FROM [Blogs] AS [t0]
    ) AS [t1]
WHERE [t1].[ROW_NUMBER] BETWEEN @p0 + 1 AND @p0 + @p1
ORDER BY [t1].[ROW_NUMBER]
En SQL simple, on aurait également pu effectuer un query du type:
SELECT TOP 10 * FROM (SELECT ROW_NUMBER() OVER (ORDER BY BlogID, Title) AS RowNumber, *
FROM Blogs
WHERE RowNumber > 5
Cependant, je reste d'avis qu'il aurait été plus sympathique de pouvoir utiliser LIMIT / OFFSET ;-).

mercredi, février 20 2008

Lelibre.Framework: Exemple d'appel dans la couche business

Les corrections / optimisations ne s'arrêtent pas ... En attendant, voici un petit exemple de ce qui sera possible d'effectuer sans problème via ces bibliothèques.
Nous pouvons avoir par exemple dans la couche business des traitements ou de la récupération de collections ... Dans l'exemple ci-dessous, la première méthode récupère les données de la base de donnée et récupère également le "Customer" / les "BillItems" etc. En retour de l'appel "Services.Bill.GetBillList(), on aura une collection d'objets. Pour la seconde méthode, On modifie les lignes de factures et l'on sauvegarde en base de donnée la facture ... (on appliquera les règles définies dans NHibernate pour l'enchainement des objets à persister). On ajoutera égalament dans l'actionManager une tâche à réaliser. Celle-ci s'effectuera que si le commit n'a pas provoqué d'erreur. Dans les autres cas, les actions placées en pile seront annulées.
[csharp]
public virtual IList<Bill> GetBillList()
{
	BillTreeRetrieve billTree = new BillTreeRetrieve();
	billTree.Customer.retrieve = true;
	billTree.BillItems.retrieve = true;
	billTree.BillItems.VatCode.retrieve = true;
	IFilter filter = BillModel.Instance().DateTime.Filter.SetFilter(DateTime.Now, DateTimeFilterType.IsSmallerOrEqualWithTimePrecision);
	IList<ISortOrder> sort = new List<ISortOrder>();
	sort.Add(BillModel.Instance().DateTime.GetSortOrder(SortOrder.Ascending));

        return Find<Bill>(filter, billTreeFilter, sort);
}

public virtual void SaveOrUpdateBill(Bill bill)
{
	CheckVatCodeBillItems(bill.BillItems);
	Save<Bill>(bill);
	ActionManager.ExecuterAfterCommit.Add(new MailAction(bill.Customer.EmailDest,bill));
}

Ceci montre en quelques lignes les possibilités qui seront offertes .... Un exemple de logiciel de gestion de DVD est en préparation pour expliquer plus en détail le fonctionnement de la génération du code CS/XML via Entreprise Architecte, des droits accès, visibilité des tuples, .... A bientôt !

Ebook MS press gratuits

Trois nouvelles publications sont disponibles gratuitement en ebook via le site de Microsoft ..
  • Introducing Microsoft LINQ by Paolo Pialorsi and Marco Russo (ISBN: 9780735623910)
  • Introducing Microsoft ASP.NET AJAX by Dino Esposito (ISBN: 9780735624139)
  • Introducing Microsoft Silverlight 1.0 by Laurence Moroney (ISBN: 9780735625396)
Pour les informations ... c'est par ici.

mercredi, février 13 2008

Wiki ASP.NET

Depuis quelques temps, un wiki a été mis en place par certaines personnes de l'équipe ASP.Net ... Il y a quelques videos etc ... je vous invite à le consulter à cette adresse. J'ai pu lire un petit peu dans le métro + train ce soir ... Il y a des tutoriels très sympa ... ;-)

Deuxième et 3ème jour Tech Days @Paris 2008

Je profite de cette petite pause pour rédiger un petit article résumant la seconde journée et mon avis sur cette troisième journée.

Lire la suite...

lundi, février 11 2008

Premier jour des Tech Days @Paris 2008

En cette fin de journée, me voici de retour de cette première journée des Tech Days avec la tête bien remplie de nouveaux concepts architecturaux qui seront certainement de plus en plus demandé en 2008.

Voici dès lors un petit résumé des sessions auxquelles j’ai pu assister ce jour.

Lire la suite...

mercredi, février 6 2008

NHibernate 1.2.1 + .NET 3.0

Voici la mise-à-jour de NHibernate supportant les en .NET 3.0 que j'ai modifié pour le fwk Lelibre.Fwk. Voici le lien.
Bonne soirée ;-)

mardi, février 5 2008

Lelibre.Framework suite (mais pas fin)

Le projet a pris un peu de retard ... Mais voici en attendant un petit fichier powerpoint expliquant quelques fonctionnalités de ces librairies ;=). Bientôt ... une application de démo pour expliquer l'abc ... :)

Le lien