56 votes

Quelqu'un a-t-il utilisé Lua pour le développement web ?

Quelqu'un a-t-il utilisé Lua pour le développement web ?

Si oui, quelle est votre expérience de Lua par rapport à Perl/Ruby/Python/PHP/etc ?

29voto

RBerteig Points 23331

Le Lua User's Wiki aborde un certain nombre de sujets relatifs au développement web, en particulier la section Network du site Bibliothèques et reliures pour obtenir une liste des projets de haut et de bas niveau.

Pour un cadre web général en Lua, Kepler est le conseil habituel. Il se situe entre plusieurs serveurs web (dont Apache) et le code spécifique à l'application. Le projet Kepler est également la source d'un certain nombre de liens vers des bibliothèques intéressantes qui étaient nécessaires pour faire fonctionner Kepler.

Pour un cadre MVC sur Kepler, il y a Orbite .

Pour un exemple de wiki complet et de système de gestion de documents basé sur Kepler, voir Sputnik qui peut être personnalisé et étendu à un certain nombre de domaines de gestion de contenu.

J'ai utilisé Kepler pour permettre l'accès à distance, la surveillance et le contrôle d'un système embarqué sur PC, et j'ai eu très peu de difficultés à lui faire faire ce qui était nécessaire. Ce système est resté dans un rack à faire ce qu'il avait à faire pendant quelques années maintenant, sans plus d'attention.

Il existe également plusieurs serveurs web complets mis en œuvre en Lua, ne revenant au C que pour les liaisons avec l'implémentation de la socket spécifique à la plate-forme.

11voto

Mario César Points 1206

Vous pouvez utiliser Luvit Je n'ai pas encore utilisé ce système dans le cadre de la production, mais je pense qu'il serait très amusant de le faire.

local http = require("http")

http.createServer(function (req, res)
  local body = "Hello world\n"
  res:writeHead(200, {
    ["Content-Type"] = "text/plain",
    ["Content-Length"] = #body
  })
  res:finish(body)
end):listen(8080)

print("Server listening at http://localhost:8080/")

La première partie du podcast The Changelog, donne à l'auteur une introduction à Luvit. http://thechangelog.com/post/23610112548/episode-0-8-0-lua-luvit-want-some-more-of-it-with-tim-ca

4voto

Greg Points 41

J'ai entendu de bonnes choses sur le Projet Kepler en tant que framework web Lua ... bien que je ne l'ai jamais utilisé ni Lua personnellement.

4voto

Steven Garcia Points 920

Lua est un choix parfaitement viable pour le développement web. Vous n'aurez pas le même écosystème de fonctionnalités que Ruby, mais des gens produisent des applications web avec ce langage.

Un cadre très intéressant pour cette tâche est Tir pour le mongol 2

3voto

scippie Points 528

Je ne sais pas si vous êtes toujours à la recherche d'une réponse, mais cela peut être utile à d'autres personnes.

J'ai créé un module ISAPI pour IIS qui utilisait LUA pour le traitement de script. Oui, j'ai créé ce module à partir de zéro. En fait, j'ai créé une version simplifiée de PHP avec ma propre philosophie à l'esprit, mais en LUA. Le module ISAPI pouvait accepter des requêtes multiples et lançait des threads séparés pour traiter les requêtes. Je pense que j'avais 8 threads simultanés, mais je n'en suis pas sûr. IIS a ensuite démarré jusqu'à 4 de ces modules ISAPI.

La vitesse était phénoménale. J'ai obtenu de bien meilleurs résultats qu'avec PHP. Mais lorsque vous commencez à utiliser des bases de données (j'ai implémenté MySQL), la différence s'estompe. Les requêtes web sur PHP qui prennent jusqu'à 300 ms prennent en général 290 ms pour la base de données et 10 ms pour le reste. Avec mon système LUA, j'avais < 291ms = 290ms pour la base de données et < 1ms pour le reste avec une requête similaire (j'ai chronométré en microsecondes :)). Bien entendu, ces délais ne sont qu'un exemple.

Ce moteur LUA a été créé pour un autre projet qui n'a malheureusement jamais été utilisé comme produit final et sur lequel j'ai arrêté de travailler.

Fondamentalement, je pense que si vous cherchez à améliorer la vitesse, je ne pense pas que passer à un autre langage de script vous aidera beaucoup, je pense que l'optimisation de choses comme l'accès à la base de données est beaucoup plus importante. Vous pouvez par exemple (c'est ce que j'ai aussi fait à l'époque) créer un composant partagé qui met en cache les données de la base de données de la manière qu'il utilise le plus. Un tel composant est bien sûr très spécifique au projet et doit être prêt à traiter une charge importante de demandes de données.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X