Microsoft Silverlight

Microsoft Silverlight

Silverlight

Silverlight
Logo Silverlight.gif
Développeur Microsoft
Dernière version 3.0.40624.0 (le 9 juillet 2009) [+/−]
Environnement Microsoft Windows
Mac OS X
Type Application Web
Licence MS-EULA, avec des composants sous licence MS-PL
Site Web silverlight.net

Silverlight est un plugin pour navigateur internet multi-plateforme (Windows et Apple, Linux via le projet MoonLight), qui permet de développer des applications web riches dans un moteur de rendu vectoriel. Il fonctionne de façon similaire à Adobe Flash dont il se veut une alternative. Techniquement Silverlight est l'équivalent de la CLR de Microsoft mais pour les navigateurs Web. La version 2.0 apporte plus d’interactivité et permet aux développeurs d’utiliser des outils de développement et les langages Microsoft .NET en place et lieu de JavaScript de la version 1.0. La version 3 est sortie en juillet 2009. Elle ajoute de nombreuses fonctions comme par exemple le fonctionnement "out of browser" qui permet d'installer l'application sur la machine de l'utilisateur en local. On note aussi la présence de la "2.5D" qui ajoute des transformations de perspectives en 3D aux objets sans pour autant permettre l'exploitation de véritables objets 3D comme le fait WPF.

Silverlight a comme concurrents Adobe Flash, Flex, JavaFX et le Quicktime d’Apple.

La technologie est utilisable dans de nombreux navigateurs via l'utilisation d'un plugin dans les systèmes d’exploitation Microsoft Windows et Mac OS X. Une version pour la communauté du libre appelée Moonlight est en cours de développement. Elle est compatible avec les environnements GNU/Linux. Les téléphones portables sous Windows Mobile 6 et les mobiles Symbian OS (Version 40 et 60) seront aussi supportés.

« SilverLight (code-name WPF / e ou encore Windows Presentation Foundation everywhere) est le nom de code d’une solution navigateur cross-plateforme basée sur XAML qui améliore les présentations à base de contenu riches (2D et 3D, animation, dessin vectoriel, vidéo et audio) en complément du code HTML »

Sommaire

Animation, vidéo, interactivité

Silverlight fournit un système graphique en retained mode (seules les données internes sont modifiées) similaire à WPF. Il intègre le multimédia, les graphiques, les animations et l’interactivité avec l'utilisateur.

Il a été conçu pour travailler de concert avec XAML pour la description de l'interface graphique, et avec les langages Microsoft .NET pour le comportement (partie code). Il reste toujours possible d'utiliser JavaScript comme le permettait la version 1.0 mais ce mode de programmation n'a plus guère d'intérêt depuis le support des langages .NET introduit dans la version 2.0. Silverlight peut aussi être utilisé pour créer de nouveaux gadgets pour le Sidebar de Windows Vista. Silverlight supporte les formats WMV, WMA et MP3 en lecture sur tous les navigateurs, sans avoir besoin d’une installation préalable du Windows Media Player ou des autres plugins habituellement nécessaires. Vu que WMV9 est une implémentation du standard SMPTE VC-1, Silverlight supporte aussi les vidéos VC-1. De nouveaux modes vidéo sont disponibles depuis la version 3.0, voir le site de l'éditeur pour plus de détail notamment le support de la TV HD.

Silverlight rend possible le chargement dynamique du contenu XML, qui pourra être manipulé à travers une interface DOM, une technique qui est cohérente avec les techniques AJAX usuelles. Le support de LINQ simplifie encore plus la gestion des sources XML. La gestion des données peut aussi s'effectuer via ADOT.NET Data Services, technologie transformant des modèles Entity Framework en services Web de type REST, le transport des données se faisant dans un format standard AtomPub ou JSON. Depuis la version 2.0 la logique de programmation peut être écrite en n’importe quel langage Microsoft .NET, inclus aussi de nombreux langages dynamiques de programmation comme Ruby et Python.

Infrastructure Silverlight

voir applet Silverlight

Compatibilité vidéo

Format Statut
MPEG1 N/D
MPEG2 N/D
MP3 Oui
MPEG4 Oui
FlashVideo Oui
H263 Non
H264 Oui
QuickTime Non
RealMedia Non
VC1 Oui
WindowsMedia Oui

Navigateurs compatibles

Il est disponible pour Windows XP, Windows Vista, Windows 7 et MacOSX, à l’aide de plugins disponibles pour Internet Explorer 6, Internet Explorer 7, Internet Explorer 8, Safari d’Apple et Firefox de la Fondation Mozilla. Cependant, il n’est pas encore officiellement disponible sous Linux, et Microsoft n’a pas encore pris de décision à ce sujet[1]. Les utilisateurs de la famille Unix pourront prochainement utiliser un clone de Silverlight 2.0 pour Mono nommé Moonlight[2].

Récapitulatif :

Systèmes d’exploitation/Navigateurs IE 6 SP1 IE 6 SP2 IE 7 IE 8 Firefox/SeaMonkey/Mozilla Safari Konqueror Opera
Windows Vista N/D N/D 1.0, 2.0 A compléter 1.0, 2.0 1.0, 2.0; N/D Non officiel
Windows Server 2003 N/D 1.0, 2.0 1.0, 2.0 A compléter 1.0, 2.0 1.0, 2.0; N/D Non officiel
Windows XP N/D 1.0, 2.0 1.0, 2.0 A compléter 1.0, 2.0 1.0, 2.0; N/D Non officiel
Windows 2000 Prévu 2.0 N/D N/D N/D prévu dans la 2.0 N/D N/D Prévu
Mac OS X 10.4.8+ PPC N/D N/D N/D N/D 1.0 1.0 N/D Prévu
Mac OS X 10.4.8+ Intel N/D N/D N/D N/D 1.0, 2.0 1.0, 2.0 N/D Prévu
Linux x86(Moonlight) N/D N/D N/D N/D 1.0.1 N/D Prévu Prévu
Linux x86-64(Moonlight) N/D N/D N/D N/D 1.0.1 N/D Prévu Prévu

N/D : Non disponible

Remarques:

  • Opera sera supporté officiellement dans les futurs implémentations. Il est déjà supporté non officiellement par bidouillage
  • Sur Linux, la compatibilité sera effective avec le runtime Moonlight. Moonlight sera disponible pour toutes les distributions majeures de Linux, supportant les navigateurs Firefox, Konqueror et Opera.
  • Silverlight pour mobiles sera utilisé pour exécuter du contenu Silverlight sur des appareils mobiles. Une brève démonstration a été faite à l'occasion des TechDays 2009 mais la CTP pour Windows Mobile 6 n'est toujours pas disponible à ce jour. Nokia a annoncé comme projet de rendre Silverlight pour mobiles disponible pour le S60 sous Symbian, ainsi que pour les appareils Série 40 et les Tablettes Nokia Internet. Silverlight pour mobile supportera initialement le contenu Silverlight 2.0.
  • De nouvelles plates-formes sont encore en étude.

Différentes versions

Silverlight 1.0

Silverlight 1.0 est le framework de présentation du noyau, qui est responsable de l’UI (interface utilisateur), de l’interactivité et des entrées utilisateur, des contrôles basiques de l’interface utilisateur, de l’animation et des graphiques, de la lecture des médias, avec support DRM et intégration DOM. Il est constitué des composants suivants :

  • Entrée : prise en charge des entrées des périphériques comme la souris, le clavier, le stylet, etc…
  • Noyau de l’interface Utilisateur : gestion de l’interprétation des images bitmap, des tracés de vecteur, du texte et des animations
  • Médias : lecture des flux MP3, WMA Standard, WMV7, WMV8, WMV9/VC-1
  • XAML : permettant de créer les interfaces utilisateurs en utilisant le langage à balises XAML.

Une application Silverlight commence par l’invocation du contrôle Silverlight à partir d’une page HTML, qui chargera alors un fichier XAML. Le fichier XAML contient un objet Canevas, qui sera le support pour d’autres éléments.

Silverlight fournit de nombreuses primitives géométriques comme des lignes, des ellipses, et d’autres formes, mais aussi du texte, des images, et du média, etc… Les éléments sont disposés de manière à donner la mise en page voulue. N’importe quelle forme aléatoire peut être créée. Tous ces éléments seront animés en utilisant des déclencheurs d’évènements. Certains effets d’animation sont prédéfinis, d’autres peuvent être créés, en composant ceux existants. Des évènements provenant des actions du clavier ou de la souris peuvent aussi être considérés comme évènements, pris en charge par des scripts.

La manipulation « programmatique » de l’interface utilisateur est accomplie en utilisant des langages de script pour modifier le DOM de l’objet canevas de Silverlight. Pour faciliter ceci, Silverlight expose une API, accessible depuis n’importe quel langage de script supporté par Silverlight, qui dans sa version 1.0 est limité uniquement au JavaScript tournant sur le navigateur. Par ailleurs, il n’y a pas de widgets embarqués pour l’interface utilisateur. Les widgets natifs du navigateur devront être placés au-dessus de l’objet canevas pour les entrées utilisateurs. Les formats de données sont limités à POX (Plain Old Xml) et JSON uniquement.

Silverlight 2.0 beta 1 (anciennement Silverlight 1.1)

Silverlight 2.0 inclut une version du Framework Microsoft .NET implémentant entièrement le même CLR que le Framework .NET 3.0. Ainsi, il peut exécuter n’importe quel langage .NET incluant VB.NET, C#. Au contraire du CLR inclus dans le Framework .NET, de multiples instances du CoreCLR inclus dans Silverlight peuvent être contenues dans un seul processus. Ceci permet au fichier de mise en page XAML de pouvoir être étendu avec du "code derrière le code" (code behind), écrit en n’importe quel langage .NET contenant la logique de programmation. Il peut-être utilisé pour manipuler au même moment l’application Silverlight et la page HTML qui contient le contrôle Silverlight. Le XAML, ainsi que le code est compilé en fichiers exécutables .NET qui seront ensuite zippés dans un fichier portant l'extension xap (qui reste un fichier ZIP standard).

Silverlight tourne avec une librairie légère, possédant de nombreuses fonctionnalités contenant entre autres des contrôles extensibles, des Web Services XML, des composants réseaux ou des API LINQ pour les bases de données. Cette librairie est un sous-ensemble et est considérablement plus petite que la librairie de base du Framework .NET.

Le code Silverlight est sécurisé à plusieurs niveau, et comme toute application Web il tourne dans une 'sandbox' ou 'bac à sable' qui empêche d’invoquer les API de la plate-forme. Une application Silverlight ne peut donc pas accéder au matériel de l'utilisateur, ni a ses fichiers.

Silverlight 2.0 apporte aussi du support pour les médias DRM.

La version du Framework .NET dans Silverlight comprend en plus un sous-ensemble du modèle de programmation WPF de l’UI, incluant un support pour les formes, les documents, les médias et les animations de WPF. Les limites de la version Alpha seront levées par la version beta 1 qui ajoutera plus de 20 contrôles à l’UI (incluant les zones de texte, les Checkbox, les contrôles pour calendrier, entre autres), la prise en charge du databinding, une gestion automatique de la mise en page et des contrôles pour la manipulation des données. Les contrôles de l’UI sont habillables, en utilisant des modèles librement définis (notion de feuille de style, 'templating' etc). La manipulation visuelle d'un projet Silverlight s'effectue à l'aide du logiciel Expression Blend, la partie programmation se faisant sous Visual Studio.

La pile de Silverlight

La librairie de base fournit des classes pour les collections, la réflexion, des expressions régulières, les chaines de caractères et l’accès aux données. Elle supporte aussi LINQ, avec un support total de LINQ to Objects et des arbres d’expression. Presque tous les espaces de noms System.LINQ et System.LINQ.Expression sont exposés. Cependant, LINQ to XML n’était pas disponible dans la version alpha, avant d’être présent dans la version bêta. La librairie de base (BCL) supporte aussi la sérialisation d’objets pour la persistance des données. Silverlight peut aussi supporter les données RSS, POX et JSON, en plus du XML. La BCL fournit un support avancé pour travailler sur des données XML, incluant les classes XMLReader et XMLWriter.

Silverlight inclus aussi des classes pour l’accès aux données à travers des Web Services basés sur du XML (POX), REST et les services WCF. Le support réseau inclus dans Silverlight peut être utilisé par les applications Silverlight pour communiquer à travers le protocole HTTP. Alors que dans la version alpha de Silverlight 2 la communication inter-domaines n’est pas permise, elle est supportée dans la version bêta 1.

Silverlight utilise un format basé sur du XML pour contrôler l’accès aux ressources par domaines interposés. En plus, Silverlight supporte aussi le format Adobe Flash régissant les accès inter-domaines. Silverlight 2 à partir de la bêta 1 ajoute aussi un support pour les communications réseaux, utilisant les sockets à travers IPv4 et IPv6. Silverlight 2.0 supporte aussi la programmation asynchrone, par l’utilisation des librairies de « threading ». Cependant, les sockets Silverlight sont plus restrictives. Elles peuvent communiquer uniquement avec l’hôte qui a lancé l’application au départ, et les numéros de port sont restreints du numéro 4502 à 4532. Les prochaines versions pallieront ce problème. Les sockets Silverlight peuvent uniquement initier une connexion, elles ne peuvent être en attente.

Silverlight 2 supporte le DLR, qui permet la compilation dynamique et l’exécution des langages dynamiques. Cependant, le DLR n’est pas inclus initialement dans la distribution Silverlight, une extension supplémentaire appelée Dynamic Silverlight a besoin d’être installée. Les modules spécifiques au langage peuvent être empaquetés avec le DSL dans le package .xap. Le SDK DSL inclus un serveur Web appelé Chiron, qui empaquette automatiquement toutes les dépendances pour l’application DSL avant de la lancer dans le navigateur.

Les premiers langages écrits pour le DLR sont JScript, IronPython 2.0 et IronRuby. Microsoft envisage aussi d’embarquer Visual Basic .NET sur le DLR. Tous les 4 langages partagent la même infrastructure, pour permettre à Silverlight de compiler et d’exécuter la source. Inversement, d’autres langages .NET doivent être compilés avant, et transmis à Silverlight comme des assemblies .NET. L’implémentation du JScript managé est conforme à la spécification ECMAScript 3.0, et Microsoft clame qu’il est 250 fois plus rapide que le JScript interprété.

Avec l’intégration du Framework .NET, Silverlight permet aussi une interaction avec le code HTML managé, qui permet aussi bien la manipulation des éléments HTML du DOM du code implémenté, que l’appel aux objets instanciés par le code implémenté à travers JavaScript. Silverlight encapsule les objets JavaScript et les éléments DOM pour les rendre disponibles dans le code géré. Une application Silverlight n’a pas besoin d’avoir des composants de l’UI pour pouvoir manipuler le DOM du HTML du code géré. Ceci est fait en créant un canevas XAML dont la largeur et la hauteur sont initialisés à 0. Ce code derrière le code permet de modifier le DOM de la page HTML via les API dans l’espace de nom du navigateur.

Silverlight 2 inclus Deep Zoom, une technologie dérivée de Microsoft Live Labs Photosynth. Il permet aux utilisateurs de zoomer sur des images ou un regroupement d’images avec des transitions en douceur, en utilisant le curseur de la souris ainsi que la molette. Les images peuvent mesurer de 2 à 3 Megapixels au Gigapixel, mais l’utilisateur n’a pas besoin d’attendre que l’image soit chargée entièrement, car Silverlight charge uniquement les parties visionnées, optimisées selon le niveau de zoom. Silverlight 2 permet aussi de définir un accès restreint aux données systèmes pour les applications Silverlight. La technologie peut utiliser la boite de dialogue native Ouvrir un fichier du système d’exploitation (OS) pour rechercher un fichier. Le fichier sera exempt des informations sur le chemin pour empêcher l’application d’accéder aux informations comme le nom d’utilisateur. Il sera ouvert en lecture seule.

Pour le stockage local des données, Silverlight fournit un stockage local isolé (Isolated Storage) en dehors du cache du navigateur, dans un dossier caché dans le dossier privé de l’utilisateur. Dans la version 2.0, l’isostockage est limité à 1 Mo par URL. Cette limite étant configurable par l'utilisateur (clic-droit sur l'espace de l'application Silverlight). Les données enregistrées par une application Silverlight, identifiées par l’URL d’où elles ont été chargées peuvent être accessibles par cette application seulement. Toutes les instances de Silverlight partagent le même isostockage, permettant à toutes les instances de l’application de partager les mêmes données, même si elles tournent sur de navigateurs différents.

Le CoreCLR Silverlight utilise un modèle de sécurité axé sur l’attribut, par opposition au modèle Code Access Security (CAS) de la version bureau du Framework .NET. Tous les assemblies sont marqués avec un attribut de sécurité, qui peut être transparent (SecurityTransparentAttribute), ou critique sûr (SecuritySafeCriticalAttribute) ou critique (SecurityCriticalAttribute). Les méthodes dans les assemblies transparents tournent avec une confiance partielle ('partial trust') et de tels assemblages ne peuvent appeler des méthodes critiques. Ils ne peuvent pas non plus contenir du code non vérifié ('unsafe') comme les pointeurs) ou invoquer des fonctions systèmes.

Silverlight 2.0 beta 2 (2.030523.8)

Silverlight 3.0 beta

La version 3 beta a été présentée aux développeurs par Scott Guthrie le 18 mars 2009, lors de la conférence Mix09 à Las Vegas .

Les fonctionnalités sont :

  • l'accélération GPU sur l'interface
  • le mode "hors du navigateur"
  • le support du mode déconnecté comme Adobe AIR ou Gears.
  • l'indexation de Silverlight comme une page html
  • la prise en charge du H264, de l'AAC et du 720p
  • le support de la 2.5D
  • l'apparition d'une version mobile ( Windows Mobile,Symbian OS,BlackBerry  ? )

Silverlight 3.0 finale

La version 3.0 finale a été mise en ligne début juillet 2009. Elle confirme les améliorations présentées dans la version bêta.

Outils de développement

Les applications Silverlight peuvent être écrites dans n’importe quel langage de programmation Microsoft .NET. De même, n’importe quel outil de développement qui peut être utilisé avec les langages .NET peut fonctionner avec Silverlight, dû au fait qu’il pourra cibler directement le noyau CLR de Silverlight, à la place du CLR .NET.

Les versions 2.0 et 2.5 de Microsoft Expression Blend ont été pensées pour la conception des UI des applications Silverlight 1.0 et 2.0 respectivement. Visual Studio 2008 peut être utilisé pour développer et déboguer les applications Silverlight. Mais il faudra pour cela installer préalablement « The Silverlight tools for Visual Studio ». Les application Silverlight 3.0 sont programmables avec Visual Studio 2008 moyennant l'installation du toolkit correspondant. Pour la partie visuelle, Expression Blend en version 3.0 est nécessaire.

Un projet Web Silverlight contient d'une part le projet purement Silverlight ainsi qu'un projet ASP.NET exposant l'application dans une page ASPX ainsi qu'une page HTML (au développeur de choisir la version à utiliser). Pour fonctionner les fichiers Silverlight.js et CreateSilverlight.js sont fournis. Ils permettent l'initialisation du plugin Silverlight pour l’utilisation dans des pages HTML. Un composant permettant d'effectuer ces mêmes fonctions directement existe en mode ASP.NET. Un projet Silverlight est typiquement constitué de fichier XAML pour l’interface utilisateur (UI) et de fichiers de code pour le code applicatif. Les applications Silverlight sont déboguées de la même manière que les applications .NET. Le « Remote Cross Plattform Debugging » du CLR de Visual Studio peut être utilisé pour déboguer les applications Silverlight tournant sur différentes plates-formes.

Licence

Une annonce affirmait que Microsoft pourrait donner libre accès à certains composants du code source Silverlight dans une version open source, mais Sam Ramji, directeur de la stratégie technologique chez Microsoft a démenti l’information. Néanmoins, le DLR inclus avec Silverlight est disponible sur le site CodePlex de Microsoft sous la licence Microsoft Public License. La collection de contrôles incluse dans Silverlight 2 est aussi disponible sous la même licence.

Alternatives

L’équipe Mono développe actuellement une implémentation Open source du runtime Silverlight, appelée Moonlight. Le projet est officiellement supporté par Microsoft, qui après un accord avec Novell a rendu disponible à Mono des spécifications supplémentaires, en plus de celles déjà rendues publiques, ainsi que des tests. Mono a également un accès exclusif à l’API de la bibliothèque de base. Moonlight vise l'iso-fonctionnalité avec la dernière version de Silverlight mais un léger décalage compréhensible pourra exister un certain temps, le produit original étant toujours disponible avant son adaptation sous Mono.

Critiques

Silverlight a été critiquée comme technologie parce qu’elle n’inclut ni Linux ni BSD dans son offre officielle. Même si Microsoft collabore sur le projet Moonlight, Bruce Chizen, ancien PDG d’Adobe Systems a rappelé l’obligation de Microsoft de garder la plate-forme Silverlight compatible avec les autres OS en plus de Windows. Ses craintes se basent sur des exemples passés : Microsoft a promis plusieurs fois de développer des produits compatibles avec de nombreuses plates-formes, sans jamais le faire en réalité.

Le Comité Européen pour les systèmes interopérables (regroupant les plus grands concurrents de Microsoft) craint qu’avec Silverlight, Microsoft cherche à introduire sur le web du contenu qui serait uniquement accessible sur la plate-forme Windows. Ils précisent que l’utilisation du XAML dans Silverlight est positionné pour remplacer la plate-forme croisée HTML standard. On tempèrera ces craintes en notant que Adobe Flash propose exactement le même modèle de longue date et qu'on pourrait en dire la même chose.

Microsoft a également été critiqué (comme Adobe d'ailleurs) pour ne pas avoir utilisé le standard Scalable Vector Graphics (SVG) dans Silverlight, ce qui, selon Ryan Paul d’Ars Technica, relève du refus de Microsoft d’utiliser des standards Open Source dans ses produits. Ces procès d'intention datent de la première version de Silverlight et avec le recul et la connaissance qu'on peut avoir de l'utilisation de XAML sous Silverlight et WPF aujourd'hui on peut néanmoins comprendre que SVG, norme assez ancienne et qui n'a jamais été adoptée par aucun grand éditeur, aurait pu être un frein au développement.

Cependant, selon David Betz, un spécialiste indépendant des technologies .NET, Microsoft aurait eu besoin de modifier la spécification SVG pour intégrer le .NET et les constructions de l’UI au-dessus de la couche SVG pour la rendre appropriée pour les scénarios que Silverlight utilise. Par conséquent, l’utilisation du XAML aurait servi à préserver le standard SVG de l’ajout d’une technologie propriétaire pour l’étendre. Il a ajouté que Silverlight peut être vu comme une extension de WPF, une technologie .NET 3.0, et non seulement comme une nouvelle technologie web[3]. La convergence de plus en plus grande entre Silverlight et WPF aujourd'hui oblige à reconnaitre la justesse de cette vue.

Notes et références

  1. (en) Une discussion sur le forum de Microsoft consacré à Silverlight.
  2. (en) Moonlight - Mono
  3. (en)David Betz, « Silverlight's Adoption as Public De-Facto Standard ». Consulté le 2007-06-20

Voir aussi

Liens internes

Liens externes

  • Portail de l’informatique Portail de l’informatique
Ce document provient de « Silverlight ».

Wikimedia Foundation. 2010.

Contenu soumis à la licence CC-BY-SA. Source : Article Microsoft Silverlight de Wikipédia en français (auteurs)

Игры ⚽ Нужно сделать НИР?

Regardez d'autres dictionnaires:

  • Microsoft Silverlight — Developer(s) Microsoft Corporation Initial release April 2007; 4 years ago (200 …   Wikipedia

  • Microsoft Silverlight — Basisdaten Entwickler Microsoft Corporation Aktuelle Versi …   Deutsch Wikipedia

  • MICROSOFT SILVERLIGHT — Программная платформа, включающая в себя плагин для браузера, который позволяет запускать приложения, содержащие анимацию, векторную графику и аудио видео ролики Словарь бизнес терминов. Академик.ру. 2001 …   Словарь бизнес-терминов

  • Microsoft Silverlight — Este artículo o sección se encuentra desactualizado. Es posible que la información suministrada aquí haya cambiado o sea insuficiente. Microsoft Silverlight Des …   Wikipedia Español

  • Microsoft Silverlight History — Microsoft Silverlight is an application framework for writing and running rich internet applications. This is a technical overview of the platform s history. Contents 1 Silverlight 1 2 Silverlight 2 3 Silverlight 3 …   Wikipedia

  • Microsoft SilverLight — …   Википедия

  • Microsoft Silverlight — …   Википедия

  • SilverLight — Développeur Microsoft Dernière version 3.0.40624.0 (le 9  …   Wikipédia en Français

  • Silverlight — Développeur Microsoft Dernière version 4.0.60531.0 …   Wikipédia en Français

  • Silverlight — Разработчик Microsoft Corporation Написана на Комбинация …   Википедия

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”