Unit Testing using Mock

Comment utiliser le framework Unit Testing pour réaliser des tests unitaires ?

Pour commencer, peut être ici :
http://www.pgs-soft.com/mocking-with-moq.html

Le meilleur lien sur le sujet, à mon avis :
http://code.google.com/p/moq/wiki/QuickStart

Et sinon juste un peu de code :

// Création de l'objet Mocker
var mock = new Mock<IMonObjetAMocker>();
IMonObjetAMocker monObjet = mock.Object;

// Creer un comportement du mock
mock.Setup(o => o.FonctionDeMonObjet()).Returns(FonctionDeMonObjetMocker());

void FonctionDeMonObjetMocker()
{
    // Faire ce dont j'ai besoin pour le test
}

L'automatisation des tests unitaires nécessite la création d'interfaces car c'est à travers l'interface que l'on pourra définir en test le comportement de l'objet Mocker (ou remplacé pour le test).

Cet article est très succinct mais c'est la porte d'entrée dans l'univers de l'Unit Testing qui lui est extrêmement vaste...

To Be Continued

Base de données PostgreSQL

Astuce de l'editeur de requêtes SQL

Problème : Impossible d'ouvrir un fichier de script qui a été édité par un autre éditeur de fichiers, des caractères sont illisibles.

Une chose bien énervante lorsque l'on démarre avec Postgre que l'on édite des scripts avec un autre éditeur puis que l'on veux les jouer ou les modifier dans postgre c'est cette dialogue box : "Le fichier "source" n'a pas pu être ouvert car il contient des caractères qui ne peuvent pas être interprétés.

Solution : Ouvrir le fichier avec un éditeur capable de "Convertir en UTF8" comme Notepad++

Architecture SOA

Services Oriented Architecture (SOA) ou Architecture Orientée Services en français (AOS), c'est une architecture destinée à rassembler les grandes applications de l'entreprise dites applications composites en applications interopérables et réutilisables.

Les applications composites du système d'information de l'entreprise communiquent entre elles grâce au bus applicatif et communiquent avec les utilisateurs grâce au bus de services leur fournissant ainsi des "services".

Wikipédia - Architecture Orientée Services

Notions du SOA :
Annuaire des Services : on parle d'annuaire UDDI recommandé par le W3C. WSDL : métalangage XML de description du service

Exemples :
Cette architecture apparait de plus en plus souvent dans les spécifications des outils de développement des grands éditeurs car elle répond à la croissante de la complexité de ces projets informatiques.
Eclipse avec STP
Oracle avec BPEL
IBM
Mais j'ai aussi entendu parlé de SOA pour Visual Studio avec MEF et IoC

D'aucuns diront que le SOA n'est qu'un dessins alors des dessins en voici :

http://www.ibm.com/developerworks/library/ar-archtemp/
A metamodel for instantiating the SOA reference architecture for a given solution
Layers of the SOA reference architecture: Solution stack view
The middleware view of the SOA reference architecture

Layer 1 Operational layer
Layer 2 Service component layer
Layer 3 Services layer
Layer 4 Business process layer
Layer 5 Consumer layer
Layer 6 Integration layer
Layer 7 Quality of service layer
Layer 8 Information architecture and business intelligence layer
Layer 9 Governance layer
SOA (9 couches ci-dessus) est presque plus complexe avec autant de choses inutiles que le modèle OSI (modèle des piles de protocoles de télécommunication 7 couches) ... à bon entendeur. Comme toujours en informatique depuis 30 ans ces modèles doivent être adaptés à la réalité du projet à réaliser.


Architecture d'Application vs Architecture de Services
Architecture d'Application vs Architecture de Services

Elément de Services :

Composant de Service
Composant de Service
Architecture du système :


Le système
Le système

Il y a encore beaucoup à dire sur l'architecture SOA. Je reviendrai.

ASP.NET MVC

Développer une applications web avec une architecture MVC - Model View Controler

Le développement rapide du .NET Framework permet l'émergence de MVC et cela va très vite depuis ASP ou les applications web classiques en asp.net html .aspx et le constat qu'elles sont trop lentes (un post et c'est toutes la page qui revient de serveur). D'où l'émergence d'une architecture MVC intégrée au .NET Framework.

Comprendre la différence entre ASP.NET Web forms et APS.NET MVC, c'est ici :
http://msdn.microsoft.com/en-us/library/dd381619(v=vs.98)
Parce que les applications MVC ne maintiennent pas le ViewSate (état de la vue entre deux appels serveur) il ne faut pas utiliser les contrôles de type GridView, Repeater, et DataList.

Comprendre l'exécution d'une application ASP.NET MVC, c'est ici :
http://msdn.microsoft.com/en-us/library/dd381612(v=vs.98)

Razor ou Webforms ?

Peut-on utiliser les deux moteurs de rendu Razor ou WebForms ASP.NET dans une même page ?

http://www.cellenza.com/publications/introduction-a-razor-pour-asp-net-mvc/
Introduction à la syntaxe Razor pour ASP.NET MVC

La réponse est non !

Peut-on utiliser les deux moteurs de rendu Razor et WebForms ASP.NET dans un même projet ?

La réponse est Non, Oui, Peut-être mais cela n'est pas supporté. Quoi qu'il en soit voici quelques techniques :
Vous partez d'une ancienne application web .aspx et vous voulez introduire un peu de razor c'est à dire quelques vues en .cshtml, voici comment faire, ici :
http://www.mikesdotnetting.com/Article/162/Using-Web-Pages-Helpers-in-ASP.NET-Web-Forms

Autres techniques plus complexes, ici :
http://www.hanselman.com/blog/MixingRazorViewsAndWebFormsMasterPagesWithASPNETMVC3.aspx

La véritable solution est probablement dans MvcScaffold.

ASP.NET MVC 3

ASP.NET MVC 3 fournit une infrastructure MVC (Model-View-Controller) au-dessus du runtime ASP.NET 4.

Download
http://www.microsoft.com/en-us/download/details.aspx?id=1491
http://www.microsoft.com/fr-fr/download/details.aspx?id=1491
MVC 3 pour Visual Studio 2010

http://www.asp.net/mvc/mvc3
ASP.NET MVC 3 est un framework pour construire des applications Web évolutives, basées sur les standards en utilisant des modèles de conception (design partterns) bien établies et la puissance de ASP.NET et du .NET Framework.

Avec MVC 3 on passe au moteur de rendu Razor ...

Support de multiples moteurs de rendu ...
Avec l'arrivée de Razor on peut facilement imaginer que les autres moteurs de rendu son amenés à disparaitre.

MvcScaffolding

http://blog.stevensanderson.com/2011/01/13/scaffold-your-aspnet-mvc-3-project-with-the-mvcscaffolding-package/
Scaffold your ASP.NET MVC 3 project with the MvcScaffolding package
Permet lors de la création d'une classe de créer l'ensemble des formulaires permettant de réaliser un Create-Read-Update-Delete (CRUD).
Dans la Package Management Console taper la commande :
PM> Scaffold controler MaClass

Le lien vers le blog de Steven Anderson comporte 7 points ...

Moteur de rendu Razor

http://weblogs.asp.net/scottgu/archive/2010/07/02/introducing-razor.aspx
Introducing “Razor” – a new view engine for ASP.NET

http://weblogs.asp.net/scottgu/archive/2010/10/19/asp-net-mvc-3-new-model-directive-support-in-razor.aspx
ASP.NET MVC 3: New @model keyword in Razor

http://weblogs.asp.net/scottgu/archive/2010/10/22/asp-net-mvc-3-layouts.aspx
ASP.NET MVC 3: Layouts with Razor

http://www.asp.net/web-pages/overview/more-resources/asp-net-web-pages-api-reference
This page contains a list with brief examples of the most commonly used objects, properties, and methods for programming ASP.NET Web Pages with Razor syntax.
...

ASP.NET MVC 4

http://www.asp.net/whitepapers/mvc4-release-notes

http://wildermuth.com/2012/1/18/Modern_Web_Development_-_Part_1
Modern Web Devlopment, how to make Razor and HTML5 web application using Visual Studio
Suppression des JS Microsoft, utilisation de NuGet pour installer JQuery UI.
Ajouter un nouveau controller par bouton droit sur le répertoire Controllers de la solution puis Add puis New Controller.
Ajouter une vue en éditant le C# du  nouveau controller puis bouton Add View...