Pourquoi un "Rich Client" plutot qu'une "RIA" (Rich Internet Application) ?

 

En préembule je dois reconnaitre qu'il est vrai que les outils dédiés aux RIA s'ammeliorent très rapidement, Ajax, Flex, Flash, Silverlight, ect... mais car il y a un "Mais" Je vais essayer d'enumerer ici les raisons pour lesquelles je prefere quand meme developper une application de type Client Riche plutot qu'une Interface web pour créér un logiciel, j'argumenterai au fil du temps pour completer cet article.

Pour :

Le poste client est de plus en plus puissant.

il n'est pas rare de trouver des "dual core" avec des cartes graphiques incroyables, reserver l'usage de ces machines a l'utilisation d'un navigateur web pour qu'il ne s'occupe que de la couche UI d'une application, c'est vraiment sous utiliser un systeme qui peut soulager d'une manière spéctaculaire un serveur.

Une experience utilisateur sans limite.

Meme si avec des technologies comme Ajax, on peut voir arriver de l'autocompletion ou du drag n drop, ça ne gere pas encore les frozen columns dans les datagridview, et très mal le paging continu (sauf google reader ;) ).

Avec une application il est assez aisé de contextualiser l'information.

la vitesse d'affichage ne depends pas d'un serveur web.

Gestion possible d'un dual screen voir plus.

Possibilité de passer en mode deconnecté.

Un accès au systeme d'information local aisé.

J'ai besoin d'acceder aux documents presents sur le poste hote, je n'ai pas besoin de l'envoyer au serveur web pour le traiter

Un deployement sélectif.

Souvent on entends dire, oui avec une RIA, je mets tous mes utilsateurs a jour d'un seul coup, certe. Mais on ne peut pas mettre son application a jour pour un groupe d'utilisateur precis sauf à leur indiquer une nouvelle adresse internet, avec Clickonce ceci est tout a fait possible.

Impression des documents.

Le poste client a toute les capacité pour produire une impression d'un document, pas besoin de faire un rendu html ou l'impression est très mal gérée, certe il est possible de demander a un serveur de produire un document word ou pdf et de le telecharger pour l'imprimer mais la solicitation du serveur est augmenté ainsi que la bande passante disponible.

Utilisation des ressources locales.

Possibilité d'envoyer un document par fax, en composant automatiquemnet le numéro du correspondant sans avoir a le saisir une nieme fois.

Possibilité de crawler de l'information sur internet.

Possibilité d'acceder a un CTI dans l'application, ouvir la fiche du client qui appelle au téléphone.

Peer to Peer.

Possibilité de faire communiquer les applications entre elles sans passer par un serveur central.

Un environnement de travail stable et sans surprise.

Application deployée est complement controlée par l'editeur, il n'y a pas de plugin qui peuvent venir poluer l'information,

Avec un navigateur web on ne controle pas la version installée, les plugins installés, l'avenir , est-ce qu'un nouvelle regle de securité ne va pas bloquer telle ou telle fonctionnalité de l'application.

On ne travaille que pour une version, pas besoin d'etre "Crossbrowsing". Meme si l'on doit prendre en compte les spécificités des frameworks installés sur les postes hotes.

Contre:

Securité lors du deployement.

j'ai été confronté recement au deployement d'une application via clickonce sur un poste client, celui-ci avait anti-virus, anti-spyware et firewall et etait derrière un proxy web, et je dois dire que ça n'a pas été simple, en effet l'antivirus ou le proxy interdisait les urls contenant un .exe, du coup impossible de passer directement le bootstrapper (setup.exe) j'ai donc fait un zip, le download a réussi, mais le poste client n'avait pas le framework 2.0 installé et le bootstrapper a lancé le téléchargement , mais l'url contient elle meme un .exe, après quelques dizaines de minutes l'opération d'installation a reussi mais dans la douleur.

Gestion des ressources locales

Il faut s'assurer qu'il reste de la place sur le disque dur.

Il faut avoir suffisement de mémoire.

il faut s'assurer qu'on a le droit de sauvegarder des settings dans une répertoire.

il faut savoir si l'utilisateur est administrateur ou pas de la machine.

Gestion de la securité de l'application

Meme si cette problèmatique existe d'une certaine manière dans une application web (SQL Injection par exemple) elle est démultipliée dans une applicatoin riche. Possibilité de detourner l'usage des assemblies qui composent l'application, Injection de code, version inférieure à celle attendue.

 

Au passage j'utilise Windows Live Writer qui est lui meme un client riche pour publier des articles sur un blog ;)

Les pubs TV d'IBM

 

Je vois passer depuis quelque temps pas mal de pub TV d'IBM vantant leur capacité d'innovation, leurs ateliers d'innovation et j'en passe. Je dois avoir un problème de mémoire, mais la dernière fois que j'ai vu une innovation de leur part c'etait au moment de la sortie d'OS/2, un an avant windows 95 et donc abandonné un an plus tard alors qu'ils avaient a ce moment une chance très serieuse, depuis je dois dire que depuis rien n'a accroché mon attention, mise a part peut etre la pub "C'est linux !" avec le gamin au milieu d'une pièce blanche, un monument de bétise.

Du coup je pense qu'il s'agit d'un doux reve de la part des diregeants et que ces pubs s'adressent plutot à leurs employés pour qu'ils se bougent ce qu'on sait avant un "Changement de programme" ;).

Migration ERP360 Microsoft Framework Dotnet 2.0 vers 3.5

 

Nous avons décidé de migrer notre application ERP 360 sur le Framework dotnet 3.5, et ceci pour differentes raisons à la foi technique et stratégique.

  1. Ayant encore peu de clients deployés, il vaut mieux le faire maintenant que lorsque qu'un parc de 10000 client est installé ce qui multiplie le risque, et encore...
  2. J'ai une confiance sans limite dans ce que peux mettre en production Microsoft,  depuis la version 1.1, la perfection n'est pas loin
  3. Au meme titre que les générics ont conduit a moins de code a maintenir , des technologies comme Linq , les extensions de methodes et autres lambda expressions vont nous simplifier la vie , comme on dit "Less is more".
  4. Il vaut mieux avoir un coup d'avance qu'un coup de retard par rapport a nos concurents meme s'ils codent toujours encore en delphi ou en C ;)
  5. On est un geek ou on l'est pas.
  6. Le designer de Winforms de vs2005 est comment dirais-je...

Nouvelle version d'ERP 360 Studio

 

Voir le message original ici :

http://blog.erp360.net/2008/02/erp-studio-216701546-mise-jour-du-13.html

ERP Studio 2.1.670.1546 mise à jour du 13 fevrier 2008

Les nouveautés :

  • Nouveau contexte Workflow

Nouveau contexte pour l'affichage du workflow de vente, celui-ci est present sur tous les ecrans de vente du devis jusqu'a la facutre, il permet un suivi très precis de toute la chaine de vente.

workflow

  • Categorisation des clients

Vous pouvez associer un client à une categorie de client, l'avantage est de pouvoir parametrer une tarification directement au groupe de client concerné, tous les formulaires de liste on été modifié pour prendre en compte ce nouveau parametre, une colorisation conditionnelle des ligne est possible en associant directement une couleur par categorie.

colorisation

  • Importation au format Excel natif des tarifs fournisseur

Il y a la possibilité de pouvoir importer nativement les fichiers excel de tarif produit des clients

import1

import2

  • Amélioration des filtres sur les listes

Prise en compte des recherche détaillés, par exemple pouvoir avoir la liste de toutes les commandes qui contienne le code produit lambda.

recheche detail

  • Livraison directe fournisseur

Possibilité de deleguer la livraison d'une commande directement du fournisseur vers le client final, le systeme ERP360 recherche toutes les commandes du client associées et génère les bons de livraison direct, vous avez alors la possibilité de fournir ceux-ci a votre fournisseur au format PDF imprimable pour qu'ils soient presents avec le colisage du fournisseur. Lors de la saisie du bon de reception ou de la facture fournisseur, la commande fournisseur est soldée et le stock n'est pas modifié.

  • Rapport multilingue

Possibilité de traduire tous les terme de tous les rapports, très utile pour les clients etrangers.

  • Entete de rapport

Possibilité de changer le logo de l'entreprise uniquement sans changer toute l'entete

  • Imports

Possibilité d'importer des clients, fournisseurs, produits au format csv voir :

http://docs.google.com/Doc?id=ddwmrw7r_16gwtp3wdn

http://docs.google.com/a/serialcoder.net/Doc?id=ddwmrw7r_11hr3shtfp

http://docs.google.com/View?docid=ddwmrw7r_14cxg5zmc3

  • Stockage

La strategie de stockage par defaut pour les nouveaux produit est par quantité reçue, cela veut dire que si l'on receptionne 100 produits, un stockitem de quantité 100 est crée.

  • Mais aussi :

Mise en place d'un nouveau paramètre , devise par defaut pour l'entreprise, celle ci est prise en compte lors de la creation d'un nouveau client.

Nouvelle regle metier, impossibilité de pouvoir faire un avoir a montant positif.

Nouveau report, liste des categories de produit.

Tous les mots de passe sont sauvegardés au format MD5 (pas de possibilité de reverse).

Correction de bug :

  1. Remise en place de l'onglet "qui à commandé" dans devis et commandes client
  2. Separation redacteur et vendeur dans le devis
  3. Correction du doublement des quantités entre un devis client et tranformation en demande de prix fournisseur
  4. Correction du bug sur les horaire de livraison non presents sur les commandes fournisseur, le parametre est mis dans les options.
  5. Correction du filtre commandes fournisseur non transmisent dans la liste des commandes fournisseur
  6. Sauvegarde des largeur et position de colonne dans les listings réactivé.
  7. Ajout d'une icone a coté du bouton "Tout receptionner" dans le formulaire de saisie des receptions fournisseur
  8. Réactivation du filtre "Les commandes fournisseur à relancer"
  9. Réactivation du formulaire inventaire des produits.
  10. Pas de prise en compte des commandes internes (mouvements) pour le calcul de la marge.
  11. Possibilité de modifier le prix d'achat dans le contexte des stock items.
  12. Prise en compte de la DEEE dans le calcul du montant global des devis dans la liste des devis.
  13. Réactivation de la creation d'un entrepot.
  14. Possibilité de pouvoir supprimer des frais de facturation dans un avoir.

De retour des techdays 2008

 

Un grand merci à Microsoft qui touche maintenant à la perfection lors de ce genre de manifestation, mis a part peut etre le manque de place pour certaines sessions ou j'ai vu pas mal de monde debout, mais ce doit etre un bon signe. Je vais au devdays puis techdays depuis 2001 et je dois dire que je suis vraiment surpris du nombre de personnes presentes chaque année, nous sommes de plus en plus nombreux a venir assister a ces sessions très riches.

J'ai pu pour commencer suivre la session de Sami Jabber concernant le Domain Driven Design (DDD) dans le cadre du symposium, je dois avouer que cela ne m'a pas convaicu de partir dans cette direction, certe cela semble interessant a priori mais on se pose beaucoup de questions finalement, par exemple comment est decidé de mettre telle ou telle entité dans tel aggrega, un client est dans l'aggrega vente ou marketing, y a t'il des sous aggrega ou sont les regles de validation, ou se situe le contexte de securité, comment est geré le deeploading. Concernant la 2eme partie sur le binding UI/Entity je dois dire que je ne suis pas du tout convaincu non plus qu'on puisse mettre en place une couche de validation basée sur des attributs, l'exemple qui etait montré indiquait qu'un age devait etre inférieur a 50 ans, je dois dire que je connais plus agile que de devoir recompiler si l'age passe de 50 à 55 ans. pour finir sur cette session, oui il existe un mecanisme de binding "sans code" entre une entité et une textbox ou autre, en passant par une binding source et la technologie Winforms n'est pas du tout pauvre de ce coté la.

J'ai enchainé sur la session d'Eric Meijer concernant le framework volta (tout en anglais) j'avoue que j'avais du mal a suivre sur la langue, j'ai bien pigé le principe, je voulais voir ce qui etait prevu par Microsoft concernant les RIA, je reste néanmoins sur ma position un bon client riche, si possible deployé via clickonce, 1000 fois moins de prise de tete que de vouloir faire fonctionner une autocompletion dans une textbox html avec IE ou Firefox. Faudra que j'ecrive un article un jour sur "Un client riche sera toujours mieux qu'une RIA" pour une centaine de raison.

J'ai assisité a la session sur Astoria , je dois dire que je suis resté scotché, c'est vraiment une techno très prometeuse très legere , le port 80 va chauffer.

Et j'ai terminé ma journée par une session sur Linq avancé, que dire de plus qu'il s'agit d'une techno d'extraterrestres, le seul reproche que je ferais c'est que la ou il fallait 20 lignes de code ou on prenait son temps pour comprendre l'algo il en faut plus qu'une très condensée, il faut etre bien concentré.

Dans l'ensemble je dirais que chaque année MS enfonce de plus en plus le clou sur leur domination des outils de developpement, tout devient plus simple, plus rapide, plus fiable, plus documenté, plus ouvert, la seule contre publicité que j'ai pu voir sur la manifestation c'est le nombre de proposition d'emploi qui va l'encontre du message marketing , faites de plus en plus avec moins de ressource ;)

Vivement 2009

Le service Orange Musiline

 

J'etais en train de decouvrir le service musiline d'orange quand je suis tombé sur cette erreur surprenante, c'est pas pour me moquer, mais bon le bug est arrivé sur mon groupe préféré et ça a le dont de m'ennerver. Juste pour dire au developpeur qui a codé la page que les erreurs il faut se les envoyer par mail ou autre, en général ça n'arrive pratiquement jamais a celui qui developpe.

Je suis surpris qu'une boite comme orange utilise une base de donnée de type MySql avec les moyens collosseaux qu'elle peut avoir et surtout connaissant l'ampleur que va prendre ce genre de service dans un avenir très proche et la montée en charge associée. Autre remarque, je connais mal MySql mais j'imagine que l'on doit pouvoir passer des parametres plutot que de concatener des strings et eviter ainsi toute injection de code sql. Dernière remarque, je trouve le nom de la base assez drole ;).

Sinon le service est impecable je suis en train d'ecouter pendant que je blog, j'avoue que j'ai un peu peur de payer quelque chose à un moment donné on ne sait jamais avec Orange.

orange

Erreur : SELECT COUNT(IDCOMMENT) AS NBCOMMENT FROM RIP2_CLUSTER.RIP2_COMMENT_ARTIST WHERE TYPE=1 AND IDRECORD= AND STATUS >= 1 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AND STATUS >= 1' at line 1