Nouvelles Technologies - Architecture informatique
Blog de Hugues MEUNIER
Les bases de données ont abandonné depuis longtemps le modèle hiérarchique pour un modèle relationnel beaucoup plus puissant. Du coup ces bases de données relationnelles montrent très vite leurs limites lorsqu'il faut traiter des données ... hiérarchiques.
Pour stocker des données purement hiérarchiques, il y a la solution des bases de données natives xml assez peu utilisées.
Une autre solution est d'utiliser les fonctionnalités xml des SGBD relationnels (Oracle, SQL Server ou DB2).
Depuis longtemps (Oracle v8, Sql Server 2000, DB2 v8), on peut créer dans un modèle purement relationnel, une données hiérarchique sous la forme d'une colonne de type xml.
Les SGBD offre ensuite des fonctions et procédures pour indexer le contenu de cette colonne (entendez "indexer le contenu de la hiérarchie xml) et pour requêter via xpath ou xquery les données de cette colonne.
Les intérêts de cette méthode sont nombreux notamment dans sa capacité à stocker à peu près n'importe quoi pourvu que le contenu respecte le standard xml 1.0.
Pour information, je vous livre mes exemples d'utilisation : construction d'interface dynamique asp.net, stockage de compte-rendus d'evénement, d'opération, stockage de données complexes venant d'une partie étendue du SI, stockage de rejets ...
Quelques références sur SQL Server :
http://programming4.us/database/2576.aspx
Il est souvent utile de construire une interface asp.net dynamique fonction de données XML (ici les données sont récupérées dans une colonne de type xml depuis SQL Server). Ceci permet d'adapter l'IHM en fonction du contenu XML variable.
L'exemple ci-dessous permet d'afficher et de modifier les paramètres msdeploy (Web Deployment Tool). Ces données sont au format suivant:
<parameters>
<setParameter name="IIS Web Application Name" value="WS_TEST" />
<setParameter name="UrlWS" value="http://Serveur/chemin" />
</parameters>
Le but est d'afficher une ListTable contenant pour chaque ligne un couple Label, TextBox.
Première étape : la page aspx
<asp:DataList ID="DataList1" runat
<ItemTemplate
<tr
<td
<asp:Label ID="Label1" runat="server" Width="300" style="font-weight: bold; font-size:small; color: Navy" Text='<%#XPath("@name") %>'></asp:Label
</td
<td
<asp:TextBox ID="TextBox1" runat="server" Width="600" Text='<%#XPath("@value") %>'></asp:TextBox
</td
</ItemTemplate
</asp:DataList>
// Création du document XML
XmlDocument xmldoc = new XmlDocument();
xmldoc.CreateXmlDeclaration("1.0", "ISO-8859-1", null);
//Lecture des données xml
xmldoc.LoadXml(item2["ConfigXml"].Text.ToString());
//Sélection dans l'arbre xml du noeud à afficher
XmlNodeList nodes = xmldoc.SelectNodes("parameters/setParameter"
DataList1.DataSource = nodes;
DataList1.DataBind();
Un très bon article pour aborder les tests unitaires (indispensables) lorsqu'on développe avec Silverlight :
http://www.codeproject.com/KB/testing/SilverlightUnitTestAsync.aspx
Les dernières présentations de Microsoft au CES 2011 tendent à vérifier les bruits de couloir de ces derniers mois. Il semble donc que l'éditeur prépare une refonte globale de l'aspect visuel et graphique du prochain Windows. GDI serait abandonné au profit de Silverlight qui deviendrait la base des applications sous Windows. Il semblerait donc que Windows phone 7 avec son interface Silverlight soit bien le laboratoire pour tous ces aspects IHM.
Un article très instructif sur le temps passé par les développeurs Java pour redéployer les applications dans les conteneurs JEE du marché. Le champion du monde est WAS d'IBM qui nécessite en moyenne 13.8 mn / heure de charge soit plus de 80 mn par jour rien qu'à déployer dans le serveur d'applications...
Les résultats du sondage ici !
La nouvelle n'échappe à personne aujourd'hui. Des bruits couraient depuis quelques temps sur cette opération. Cela risque de porter un coup à VMWARE sur le segment du Cloud et de la virtualisation. Microsoft va pouvoir mettre à disposition gràce à son hyperviseur HYPERV et via ses offres CLOUD, des environnements Windows et Linux basé sur SUSE. De plus, Novell c'est plus de 800 brevets dans des domaines variés qui tombent dans l'escarcelle du géant de Redmond ce qui inquiète au plus haut point les communautés Linux. Celles-ci s'attendent à un abandon progressif de SUSE; moi je parie le contraire car Mcrosoft a tout intérêt à avoir une offre Linux complémentaire à son OS historique.
Le cloud computing semble décoller depuis quelques mois. Ici, la société iKoula propose de bénéficier d'une VM W2K8 avec une franchise d'utilisation pour 1 €.
La franchise est :
|
512 Mo |
|
40 Go |
|
4 200 Ikbogo |
|
5 Go |
|
Entrée : 128 kb/s Sortie : 512 kbs |
Je vous laisse consulter le site pour le calcul précis des éléments de la franchise :
A combien vous reviennent vos environnements de développement?
Les méthodes de gestion de projet agiles permettent d'améliorer la satisfaction des utilisateurs via la mise en place d'itérations qui permettent d'améliorer le produit petit à petit.
La méthode scrum s'appuie sur 2 éléments, la création d'un esprit d'équipe au sein du projet et l'auto-organisation de cette dernière suivant un principe très simple : l'implication des membres de l'équipe dans un projet commun.
De plus en plus d'entreprises appliquent ces méthodes à la gestion d'entreprises notamment en impliquant les salariés dans les décisions de l'entreprise jusqu'à un certain partage des bénéfices. La plupart des entreprises ayant adoptées ces principes ont vu une amélioration de la profitabilité et une diminution de l'absentéisme.
Avant d'aller plus loin dans le raisonnement, revenons un peu à la situation actuelle...
L'organisation des entreprises françaises est basée sur des principes de hiérarchisation très forts tirés de l'époque napoléonienne et des fondements de l'entreprise publique. Après les privatisations, de nombreuses entreprises ont gardé les principes de gestion de l'époque publique. Ces principes sont fondés sur une hyper hiérarchisation dans l'organisation (tout le monde étant pratiquement le chef de quelqu'un). Dans les faits, il est tout de même difficile de trouver des responsables et les cycles de validation sont très longs voir interminables.
Depuis les années 70 (de l'ancien millénaire), le managérial de l'entreprise française type est le monopole des grandes écoles (ENA, centrale, ...) et des écoles de commerce. Nous avons vu, depuis les années 90, apparaître une foison de chefs de projet informatique venant des écoles de commerce. Ces mêmes écoles ont également envahies le monde de la finance avec les résultats que l'on sait. Les principes de management enseignés dans ces écoles sont basés sur la hiérarchisation des responsabilités (CP, DP, Sponsor ...) et sur une pression croissante sur les équipes projet dans le but d'obtenir le résultat attendu, cette pression étant rythmée par les nombreux livrables demandés par les méthodes de gestion de projet classique.
Certains responsables ont fait fi de cette histoire de l'entreprise française et ont appliqué un certain nombre de principes tirés des méthodes agiles notamment de SCRUM :
· J'implique mes salariés dans les décisions de l'entreprise (impliquer signifie qu'il y a une action du salarié pour faire avancer son entreprise, par exemple lors d'un vote);
· Je ne mets pas de pression inutile sur les salariés mais au contraire je favorise créativité, participation active et communication
· Je définis des plannings et des plans de charge raisonnables avec les salariés
· J'organise des activités de groupe qui favorise l'auto organisation.
· Enfin, je fais confiance à mes salariés
Il n'est pas très étonnant de constater que les méthodes fondées sur la confiance, la créativité, l'écoute donnent de meilleurs résultats que les méthodes basées sur l'encadrement et l'hyper pression. Un projet est une micro organisation mais l'application de ces principes sur des organisations plus importantes semble donner des résultats favorables mais l'entreprise française est-elle prête pour cette révolution?
L'exemple ci-dessous est une méthode qui chiffre une chaîne de caractères avec une clé de 128 bits et un vecteur d'initialisation de 128 bits. L'algorithme de chiffrement est AES 128 bits.
///
<summary>
///
Méthode pour chiffrer une chaîne de caractères
///
</summary>
/// <param name="clearText">Chaîne à chiffrer
</param>
/// <param name="strKey">clé de chiffrement obligatoirement de 16 caractères (128 bits)
</param>
/// <param name="strIv">vecteur d'initialisation de 16 caractères (128 bits)
</param>
/// <returns>une chaîne de caractères chiffrée
</returns>
public static string EncryptString(string clearText, string strKey, string strIv)
{
// Place le texte à chiffrer dans un tableau d'octets
byte[] plainText = Encoding
.UTF8.GetBytes(clearText);
// Place la clé de chiffrement dans un tableau d'octets
byte[] key = Encoding.UTF8.GetBytes(strKey);
// Place le vecteur d'initialisation dans un tableau d'octets
byte[] iv = Encoding.UTF8.GetBytes(strIv);
RijndaelManaged rijndael = new RijndaelManaged();
// Définit le mode utilisé
rijndael.Mode = CipherMode.CBC;
// Crée le chiffreur AES - Rijndael
ICryptoTransform
aesEncryptor = rijndael.CreateEncryptor(key, iv);
MemoryStream ms = new MemoryStream();
// Ecris les données chiffrées dans le MemoryStream
CryptoStream cs = new CryptoStream(ms, aesEncryptor, CryptoStreamMode
.Write);
cs.Write(plainText, 0, plainText.Length);
cs.FlushFinalBlock();
// Place les données chiffrées dans un tableau d'octet
byte[] CipherBytes = ms.ToArray();
ms.Close();
cs.Close();
// Place les données chiffrées dans une chaine encodée en Base64
return Convert.ToBase64String(CipherBytes);
}
Sans aucun doute, l'une des technologies importantes apportées par .NET 4 et VS 2010 est MEF.
Shivprasad koirala nous présente simplement le framework MEF et ses différences avec l'IOC dans l'article suivant :
| Février 2012 | ||||||||||
| L | M | M | J | V | S | D | ||||
| 1 | 2 | 3 | 4 | 5 | ||||||
| 6 | 7 | 8 | 9 | 10 | 11 | 12 | ||||
| 13 | 14 | 15 | 16 | 17 | 18 | 19 | ||||
| 20 | 21 | 22 | 23 | 24 | 25 | 26 | ||||
| 27 | 28 | 29 | ||||||||
|
||||||||||