Bref récit: existe-t-il un moyen d'écrire une application de bureau avec une interface graphique en HTML5 et un noyau dans un langage multi-plateformes comme python (ou même en C #/Mono)?
Histoire plus longue: je suis un développeur C #, pour les petits projets personnels que je fais rarement, fonctionnant à la fois sous Windows et OSX, j'utilise C # (Mono) avec une interface utilisant/ Eto.Forms
J'aimerais savoir s'il existe un moyen éprouvé d'obtenir les mêmes résultats en utilisant une interface graphique HTML5, car j'aimerais savoir cela et croire que cela pourrait être une bonne option pour les futures interfaces utilisateur de bureau Windows (ou sinon un outil de Nice avoir dans mes compétences). Bien sûr, si le code qui tourne en coulisse est C #, je serai plus que content, mais je me mettrais aussi à fond dans un autre, peut-être plus multi-plateforme comme python serait bien.
A ce stade, aucune solution orientée mobile ne m'intéresse.
Electron (anciennement Atom Shell) a vraiment mûri ces derniers temps. En fait, c'est sur quoi le VSCode est construit.
Il existe un excellent tutoriel et code de démarrage sur l'utilisation de Angular 2 et de TypeScript, et vous pouvez même utiliser VSCode pour l'écrire et le construire.
Pour moi, c’est le meilleur moyen de passer du monde WPF au HTML5.
les NW.js semblent assez prometteurs ... vous pourriez même être en mesure d'utiliser TypeScript qui serait beaucoup plus proche de C # que de plain ol 'js. Si vous êtes ouvert à l’utilisation de PHP, vous pouvez consulter le projet nightrain https://github.com/naetech/nightrain .
Donnez http://www.tidesdk.org/ a try.
Votre application fonctionnera sous Windows 8, MacOS et Linux. Vous pouvez utiliser HTML5, Javascript et CSS3.
Mais vous pouvez également étendre les fonctionnalités de votre application avec un langage de script avec lequel vous êtes à l'aise. TideSDK supporte actuellement Python, PHP et Ruby.
Je pense qu'un projet très intéressant est Chromium Embedded Framework . Vous intégrez un navigateur Web (simplifié) dans votre application. Pour python, de nombreux outils graphiques sont pris en charge. Vérifiez this pour plus d'informations.
Puisque vous êtes habitué à C #, peut-être que Java avec JavaFX et FXML est une option. FXML n'est pas du HTML, mais vous pouvez aussi le styler avec CSS. Vous pouvez également utiliser Scene Builder avec celui-ci pour créer une interface utilisateur plus rapidement. De nombreux langages JVM supportent ce toolkit afin que Jython au lieu de Java fonctionne également. Je recommanderai cependant Java, car la prise en charge d’autres langages n’est pas encore parfaite.
L'utilisation de C # et de Windows App Store WebView est également une option. Vous pouvez consulter _ MSDN pour plus d'informations.
Je suis sûr qu'il existe d'autres options (Kivy, Node.js, etc.) également. Certains d'entre eux sont déjà mentionnés dans ce fil.
J'ai écrit une application avec http://kivy.org/ il est capable de créer des applications pour différents systèmes.
Qt node https://github.com/arturadib/node-qt semble également intéressant, mais je ne l'ai pas testé moi-même.
Et dernier https://chrome.google.com/webstore/launcher
Vous pouvez créer des applications Web pour Chrome, qui doivent s'exécuter dans les systèmes pris en charge.
Kivy est une solution Python. Qt node est peut-être ce que vous recherchez.
Voici quelques tutoriels intéressants pour kivy: https://www.youtube.com/playlist?list=PLQVvvaa0QuDe_l6XiJ40yGTEqIKugAdTy
Je recommanderais Node-Webkit qui est basé sur nodejs.Vous pouvez toujours utiliser des scripts python pour effectuer des tâches d’intégration intégrées à Node-Webkit, ce qui est facile à gérer. J'ai déjà vu des applications réussies l’utiliser (comme wunderlist). TideSDK est un autre choix, mais la prise en charge de Python dans TideSDK n’est pas assez avancée. Le projet Node-Webkit hébergé à https://github.com/nwjs/nw.js/
Mais c'est Javascript (noeud), pas python ni C #.
J'ai récemment travaillé avec Chromium Embedded Framework , un composant de navigateur pour WPF et WinForms. Cela fonctionne très bien et fournit une sorte d'interopérabilité dans les deux sens, d'un site Web à une application .NET et vice versa. En gros, vous:
// .NET
var mainFrame = browser.GetMainFrame();
mainFrame.ExecuteJavaScriptAsync("any js code");
// .NET
browser.RegisterJsObject("boundObject", this);
// JS
boundObject.someMethod();
Sur cette base, vous pouvez construire une couche de médiation (ViewModels, contrôleurs, ...) entre HTML/JS-UI et la logique .NET ...