Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript
JavaScript Forum programmation JavaScript. Lire : Cours JavaScript, FAQ JavaScript, Toutes les FAQ JavaScript et Sources JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 30/10/2011, 13h44   #1
Invité régulier
 
Inscription : novembre 2010
Messages : 34
Détails du profil
Informations forums :
Inscription : novembre 2010
Messages : 34
Points : 7
Points : 7
Par défaut Javascript Server Side

Bonjour,
Je suis arrivée sur cette vidéo:
en cherchant des infos sur Alfresco...
Question simple: je pense ne pas avoir bien saisi l'intérêt d'utiliser jss... selon moi, l'utilité principale est de placer des évènements côté serveur. Si j'ai bien compris, est-ce que quelqu'un aurait un exemple précis pour illustrer jss? Si je n'ai pas compris, est-ce que qqn pourrait m'expliquer clairement pourquoi on utilise du javascript côté serveur?
Autre question : est-ce que qqn connait Alfresco?
Merci
chadoum est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/11/2011, 17h32   #2
Membre régulier
 
Inscription : octobre 2010
Messages : 65
Détails du profil
Informations forums :
Inscription : octobre 2010
Messages : 65
Points : 87
Points : 87
Une conférence plutôt intéressante ! Mais je suis déçu ils n’ont pas mentionnés ma propre techno JSS

Citation:
est-ce que qqn pourrait m'expliquer clairement pourquoi on utilise du javascript côté serveur?
Ben comme dit dans la conférence cela permet la mutualisation du code dans un même langage, un code manipulant une entité métier, peut etre, aussi bien exécuté coté client (sur un navigateur) que coter serveur.

Par contre cette vidéo laisse sous entendre, que le choix du JavaScript comme langage de référence est imposé par le fait que c’est le seul langage disponible sur un navigateur par défaut. Dommage qu’ils ne mettent pas plus l’accent sur les énormes points forts de ce langage…

Dans mon entreprise nous avons décidés de réécrire les totalités de nos applications en JavaScript tournant sur la plateforme .Net, pour toutes nos applications, grâce à la techno Jint. Nous observons une réduction de code de facteur 5 par rapport a du code C#, de plus l’écriture en javascript de certaine de nos application, nous ont sauvés d’un refactoring très bas niveau et très critique pour l’ensemble de nos applications, grâce aux mécaniques des portés de variable par closure et de l’absence de signature pour les fonctions.

Bref le JavaScript coté serveur c’est bien, le JavaScript pour toute les applications logiciel c’est encore mieux ! Mais pour cela faudra changer les mentalités des développeurs car JavaScript ne possède pas un tres bonne image à l’extérieur du développement WEB, moi-même j’avais un tres mauvais apriori sur ce langage avant d’être forcer de l’utiliser
p3ga5e est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 08/11/2011, 12h24   #3
Membre chevronné
 
Inscription : juillet 2006
Messages : 1 194
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 1 194
Points : 746
Points : 746
Citation:
Envoyé par p3ga5e Voir le message
Nous observons une réduction de code de facteur 5 par rapport a du code C#
Ha bon ?
Vous auriez quelques examples pour illustrer cela ?
Sergejack est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/11/2011, 15h34   #4
Membre régulier
 
Inscription : octobre 2010
Messages : 65
Détails du profil
Informations forums :
Inscription : octobre 2010
Messages : 65
Points : 87
Points : 87
Citation:
Envoyé par p3ga5e
Nous observons une réduction de code de facteur 5 par rapport a du code C#
Ces résultats ont été obtenus, en réalité, sur la différence de lignes de code lors de la migration de notre client très Lourd (en C# et DirectX) en client pas si Leger (en JavaScript et plugin O3D sur Firefox/Chrome). Je n’ai pas de chiffre sur le gain obtenu sur les applications coté serveur, a mon avis le gain est supérieur.

Ce gain s’explique plus par un changement radical de nos méthodes conception que par le changement de langage. Quand on a souhaité migrer notre client lourd, nous avons, d’abord, tentés un portage afin de traduire nos class C# en JavaScript . . . problème aucune notion de métadonnée en JavaScript et les différentes technique de définition de Class en JS ne nous convenait pas.
Donc nous avons abandonnés la conception POO, décidés de ne pas modéliser nos entités et de réécrire totalement notre client. Notre approche est d’écrire des jeux de fonctions qui s’adaptent au type qui la référence et/ou aux types des arguments ! Au final nous avons que très rarement utilisés l’héritage par prototype et quasiment jamais le polymorphisme.
Une grande parti de la réduction de code est donc dus à ce changement de méthode de conception, qui utilisé en C# est beaucoup moins élégant qu’en JavaScript !

Petit exemple :
Code JS :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
var Vector2D = 
{
	Add : function()
	{
		var sum = { x : arguments[0].x, y : arguments[0].y };
		for(var i=1;i<arguments.length;i++)
		{
			sum.x += arguments[i].x;
			sum.y += arguments[i].y;
		}
		return sum;
	}
};
 
var v1 = { x : 1.5, y : 3 };
var v2 = { x : 2.5, y : -2.3 };
 
var v3 = Vector2D.Add(v1,v2); // v3 = { x: 4, y: 0.7 }
Code C# :
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
30
31
32
33
34
35
using System;
using System.Collections.Generic;
 
static class Program
{
    static class Vector2D
    {
        static public Dictionary<string, object> Add(params object[] arguments)
        {
            Dictionary<string, object> sum = new Dictionary<string, object>();
            sum["x"] = ((Dictionary<string, object>)arguments[0])["x"];
            sum["y"] = ((Dictionary<string, object>)arguments[0])["y"];
            for (int i = 1; i < arguments.Length; i++)
            {
                sum["x"] =  (double)sum["x"] + (double)((Dictionary<string, object>)arguments[i])["x"];
                sum["y"] =  (double)sum["y"] + (double)((Dictionary<string, object>)arguments[i])["y"];
            }
            return sum;
        }
    }
 
    static void Main(string[] args)
    {
        Dictionary<string, object> v1 = new Dictionary<string, object>();
        v1["x"] = 1.5;
        v1["y"] = 3.0;
 
        Dictionary<string, object> v2 = new Dictionary<string, object>();
        v2["x"] = 2.5;
        v2["y"] = -2.3;
 
        Dictionary<string, object> v3 = Vector2D.Add(v1, v2);
        Console.WriteLine(" x: {0} , y : {1}", v3["x"], v3["y"]);
    }
}
Le code en C# n’est gère plus volumineux, en terme de ligne, que le code JavaScript, par contre de part sa nature fortement typé et system de cast explicite, cela pose quelques problèmes : les types valeurs manipulés par des références de type objet génère une mécanique de boxing/unboxing très coûteuse au niveau du run-time.

Le JavaScript permet la méta-programmation de manière simple par la fonction eval, C# également mais de manière très complexe (compilation a la volée).
Donc voici un cas d’école, la sélection d’entités d’une collection par un filtre :
Code JS :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
var Filter = function(expr)
{
	this.Match = eval(
	[ 	"(function (obj) {",
		"	with (obj) {",
		"		return " + expr + ";",
		"	}",
		"})"
	].join('\n'));
};
 
Array.prototype.SelectByFilter = function(filter)
{
	return this.filter(filter.Match);
};
 
var candidas = 
[	{ Name : 'Pierre', Age: 32 , Permis: false},
	{ Name : 'Paul', Age: 15,  Permis : 'A' },
	{ Name : 'Jack', Age: 56 , Permis: false }
];
 
var adultes = candidas.SelectByFilter(new Filter("Age >= 18")); // [ Pierre, Jack ]
var majeurs_ou_mobiles = candidas.SelectByFilter(new Filter("Age >= 18 || Permis")); // [ Pierre, Paul, Jack]
Je défis quiconque, de réécrire dans autre langage l’exemple ci-dessus en moins de ligne de code !

Si tu n’es toujours pas convaincus, j’ai encore une multitude d’exemples en resserve
p3ga5e est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/11/2011, 22h59   #5
Expert Confirmé
 
Avatar de sekaijin
 
Femme
Urbaniste
Inscription : juillet 2004
Messages : 1 422
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 48
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Urbaniste
Secteur : Santé

Informations forums :
Inscription : juillet 2004
Messages : 1 422
Points : 2 809
Points : 2 809
Citation:
Envoyé par chadoum Voir le message
Bonjour,
...
Question simple: je pense ne pas avoir bien saisi l'intérêt d'utiliser jss... selon moi, l'utilité principale est de placer des évènements côté serveur.
Ben comment dire au tout début du début js à été crée pour scripter coté seveur. sur Netscape serveur.
et lorsque quelqu'un à envisagé de porter le langage sur le client

les auteurs de js de l'époque se sont exclamés
"Mais que voulez vous scripter sur le poste du client ?"

js retrouve sa place d'origine (qu'il n'avait jamais quitté d'ailleurs)
il existe de nombreuse implémentation de js côté seveur.

A+JYT
sekaijin est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h58.


 
 
 
 
Partenaires

Hébergement Web