вторник, 8 марта 2011 г.

О том, почему мы будем использовать HTML(5) вместо Silverlight

I recently had to research which UI technology would be the best choice for the applications that my client is going to build in the next couple of years. This is a .NET shop, so there are 2 major directions you could move into: standards-based web development, or Silverlight. When you have to recommend one over the other, you ideally want to be able to back up your choice with more than just some opinions. So we made a list of candidates and did a POC for each one. Then we came up with a list of criteria, grouped in a bunch of categories. The criteria were all assigned a weight, and we scored each of them for all candidates.

Недавно, я провел исследование о том, какая технология создания пользовательского интерфейса будет наилучшим выбором для приложений, которые собирается создавать мой клиент в следующие несколько лет. Мой клиент – это команда .NET разработчиков, а это значит, что двигаться можно в двух основных направлениях: разработка с использованием стандартных веб-технологий или Silverlight. Когда необходимо рекомендовать одну технологию на противовес другой, то, в идеале, выбор должен быть основан на чем-то большим, чем на нескольких мнениях. Мы создали список технологий-кандидатов. После чего, мы создали перечень критериев, связанных в категории. Всем критерием был назначен некоторый вес, и мы оценили каждую из них для всех технологий-кандидатов.

In this post, i want to go over the categories of criteria, and discuss our findings. I'm also going to share the spreadsheet so you can go through the numbers yourself. Depending on your needs or your opinions, you can change the weights and the scores and see how that affects the outcome. I removed some of the criteria that were specific to my client, but it didn't have a significant impact on the outcome. For this post, I also limited the candidates to ASP.NET MVC 3 in combination with the jQuery family (jQuery Core, jQuery UI and jQuery Mobile) and Silverlight.

В этой статье, я хотел бы пройтись только по категориям критериев и обсудить наши выводы. Я поделюсь детальной таблицей с данными, для того чтобы вы смогли исследовать результаты самостоятельно. В зависимости от ваших потребностей или вашего мнения, вы можете изменить вес и оценку, и посмотреть, как это повлияет на результат. Я удалил несколько критериев, которые были специфичны для моего клиента, но это не вызвало огромного влияния на результат. Для этой статьи, я также сократил количество технологий-кандидатов до ASP.NET MVC 3 в сочетании с семейством jQuery (jQuery Core, jQuery UI и jQuery Mobile) и Silverlight.

Here's a quick listing of the categories and some of their criteria (for the actual list, check the spreadsheet... the link is at the end of the post):
Вот неполный список категорий и некоторых критериев (детальный список находиться в Excel документе, ссылку на который вы найдете в завершении статьи):
  • User experience (compelling UI, accessibility, intuitive/ease-of-use, accessible from multiple devices, accessable from multiple platforms)
    Взаимодействие с пользователем (совершенство пользовательского интерфейса, доступность, интуитивность/простота в использовании, доступность с различных устройств, доступность из различных платформ)
  • Infrastructure (easy/flexible deployment, monitorability)
    Инфраструктура (легкость/гибкость развертывания, контролируемость)
  • Security (safe from XSS, CSRF)
    Защищенность (от XSS, CSRF)
  • Performance (server footprint, client-side resource usage, asynchronicity, UI responsiveness, initial load times)
    Производительность(потребление ресурсов сервера, потребление ресурсов клиента, асинхронность , отзывчивость пользовательского интерфейса, начальное время загрузки)
  • Code/Architecture (maturity, reusability of validation logic, simplicity, maintainability, flexibility, power, testability, i18n, feedback cycle, learning curve, potential efficiency, rapid application prototyping, readable URLs, extensibility)
    Код/Архитектура(завершенность, повторное использовании логики проверок, простота , затраты на поддержку, гибкость, потенциал, тестируемость, i18n, цикл обратной связи, порог вхождения в технологию, потенциальная эффективность, быстрое прототипирование, читабельные URL, расширяемость)
  • People (limits the number of required skills, mindshare, documentation, community support, commercial support)
    Люди (число необходимых навыков, необходимая доля внимания со стороны пользователей, документация, поддержка общественностью, коммерческая поддержка)
  • Strategic (future-proof, standards-compliant, differentiator, backing, vision)
    Стратегия(перспективность, соответствие стандартам, отличия, поддержка, виденье)
  • License (do we have access to the code?)
    Лицензия (у нас есть доступ к коду?)
  • Cost
    Цена
  • Tools (IDE support, availability of extra tools, free 3rd party component availability, commercial 3rd party component availability
    Инструменты (Поддержка со стороны IDE, наличие дополнительных инструментов, наличие бесплатных компонентов от сторонних разработчиков, наличие платных компонентов от сторонних разработчиков)
Depending on what you or your organization requires, some of these might not apply to you. Perhaps there are other criteria that you find important and that we missed. Nevertheless, i think this is a pretty comprehensive list which covers most of the factors that you need to think about when making this kind of decision.

В зависимости от вашей потребности или потребности вашей компании, некоторые из этих критериев могут быть не применимы к вам. Возможно, есть и другие критерии, которые вы считаете важными, но упущенные в этом списке. Тем не менее, я думаю что это довольно полный список, который охватывает большую часть факторов, на которые вы должны обратить внимание при принятии подобного решения.

This graph visualizes how both technologies scored, grouped by category:
Следующий график иллюстрирует оценку обоих технологий по категориям:

HTML 5 vs Silverlight by categories

I'm sure there are quite a few things about that image that surprise you. The first thing you might be thinking is "how can Silverlight score so badly when it comes to User Experience?". The answer to that is quite simple: if your users aren't using a desktop/laptop with Windows or OS X on it, there is no experience to be had at all. Users that require assistive technology are out of luck as well since accessibility support in Silverlight is still very poor. If you hold those factors into account, it really doesn't matter much that you can easily make Silverlight applications incredibly flashy (pardon the pun). Besides, most people get bored and annoyed with excessive animations rather quickly, so you're often better off not to overdo it. With that in mind, jQuery UI and HTML5 will easily meet your needs for that kind of stuff.

Я уверен, что довольно много вещей, которые удивили вас на этом графике. Первое, что вы могли подумать это: «Почему Silverlight был оценен так плохо в категории Взаимодействие с пользователем?» Ответ довольно прост: если ваши пользователи не работают с Windows или OS X, то у них нет возможности использовать Silverlight. Не повезет и пользователям с ограниченными возможностями, так как их поддержка в Silverlight не развита. Если принять во внимание эти факторы, уже не имеет большого значения то, что при помощи Silverlight, вы можете создать невероятно роскошные приложения. Кроме того, большинству людей довольно быстро надоедает чрезмерная анимация, так что лучше в этом деле не переусердствовать. Имея это ввиду, jQuery UI и HTML5 могут лучше удовлетворить ваши потребности.

Another area where Silverlight scores very poorly is the strategic department. The fact that it's not standards-compliant obviously hurts a lot here, but there's more to it than that. First of all, the mobile story (again) pretty much kills it. Android and iOS don't support it. We already know it's never going to work on iOS and as long as it doesn't work on iOS, Android has no reason whatsoever to provide support because Silverlight simply isn't important in the grand scheme of things to any of the important players. Microsoft hasn't even announced a Silverlight browser plugin for WP7 yet and who knows if it will? That means that Silverlight web applications aren't usable on any mobile device right now, except for slates running a full Windows OS which looks like its only a tiny portion of the market. Secondly, despite its original tagline of "Lighting up the web", it appears that Microsoft only has about 3 scenario's in mind where it still actively pushes Silverlight: internal business applications, video streaming and native WP7 development. While internal business applications are certainly a large part of what we're going to do in the next couple of years, we're also going to build things that are available publicly and to a large variety of people. Going with Silverlight for the internal applications and HTML(5) for the public-facing applications wouldn't be very cost-efficient either since that means we have to train our developers for both cases. And it wouldn't make much sense anyway since HTML(5) is a great fit for internal business apps as well.

Следующая область, где Silverlight был оценен очень плохо, это – Стратегия. Факт несоответствия стандартам, очевидно, наносит сокрушительный удар, но, есть и другие недостатки. Прежде всего, мобильные платформы наносят еще один сокрушительный удар. Android и iOS не поддерживают Silverlight. Мы знаем, что эта технология никогда не будет работать на iOS, и пока она не работает на iOS, у Android нет никаких оснований поддерживать Silverlight, просто потому что эта технология не играет никакой важной роли. Microsoft еще даже не анонсировала создание плагина для поддержки в браузерах Windows Phone 7, и никто не знает, дождемся ли мы этого. Это означает, что веб-приложения на Silverlight не доступны с любого портативного устройства, за исключением тех, которые поддерживают полную версию Windows и составляют небольшую долю рынка. Во-вторых, несмотря на свое первоначальный лозунг «Озаряя Интернет», получается, что в планах Microsoft всего 3 активно продвигаемые сценария: разработка внутренних бизнес-приложений, потоковое видео и создание приложений для Windows Phone 7. Хотя, создание внутренних бизнес-приложений и является тем, чем мы будем заниматься в ближайшие несколько лет, мы все же планируем создавать публичные приложение, доступные большому кругу пользователей. Работа с Silverlight для внутренних приложений и HTML (5) для общедоступных приложений выглядит не экономичной, поскольку мы будем вынуждены обучать наших разработчиков обоим направлениям. И это не будет иметь большого смысла, поскольку HTML (5) отлично подходит для внутренних бизнес-приложений.

But, as you can see, there are areas where Silverlight scores better than ASP.NET MVC 3 with jQuery. For instance, when it comes to Tools, you can't deny the fact that Visual Studio and Blend cover a lot of ground when it comes to the whole Silverlight developer experience. At the very least, you can mostly stick to your familiar integrated environment, whereas with standards-based web development, you're likely to spend some time in Firebug or Google Chrome's developer tools instead of sticking almost entirely with Visual Studio. I personally don't mind (at all actually) to use other tools than Visual Studio, but there are quite a few .NET developers who do prefer to stick with Visual Studio. Which brings me to the People category. The biggest benefit that Silverlight has over standards-based web development is that you only need to know C# and XAML. With standards-based web development, you have to know HTML, CSS, JavaScript and the language of your server-side technology, in this case also C#. This might impact your ability to find new developers so Silverlight does have sort of an advantage there. Though i'd argue that you're better off in the long term with people who are willing to step out of their comfort zone instead of clinging to what they know. From a security point of view, Silverlight also scores better because you don't really have to worry about common issues such as XSS, CSRF and other vulnerabilities that are common in web-development.

Но, как вы могли заметить, есть области, в которых Silverlight оценивается лучше, чем ASP.NET MVC 3 + jQuery. Например, по категории Инструменты, вы не можете отрицать тот факт, что Visual Studio и Blend удовлетворяют большую часть потребностей разработчика. По крайней мере, большую часть времени разработки и отладки вы будете проводить в вашей уже знакомой IDE, в то время, как при работе с стандартными веб-технологиями, вам будет необходимо провести некоторое время, используя Firebug или инструментов разработчика в Google Chrome, вместо того, чтобы делать практически всю работу в Visual Studio. И это приводит меня к обсуждению категории Люди. Наибольшим преимуществом Silverlight над веб-разработкой, основанной на стандартах, есть то, что все что вам необходимо знать – это C# и XAML. Для разработки, основанной на стандартах вам необходимо знать HTML, CSS, JavaScript и язык, на котором написано ваше серверное приложение, в данном случае, это также C#. И это может повлиять на вашу способность по поиску новых разработчиков, так что в некотором роде, у Silverlight тут есть преимущество.
Хотя, я хочу отметить, что, в долгосрочной перспективе, вам лучше работать с теми людьми, которые готовы выйти из зоны комфорта, чем с теми, которые цепляются за то, что они уже знают. С точки зрения безопасности, технология Silverlight также оценена лучше, так как вам не придется о таких общих проблемах, как XSS, CSRF и других уязвимостях общих для веб-разработки.


So we have 3 categories where Silverlight scores better than ASP.NET MVC3/jQuery but that's far from sufficient to close the gap. Based on the weights we assigned to the criteria, the maximum possible score is 732. ASP.NET MVC3 with jQuery scored 568. Silverlight scored 304. Obviously, the results will vary depending on what you find important. Which is why we asked an analyst from one of those large IT research & advisory companies to give us some feedback on this. The analyst agreed entirely with our findings and our data, and confirmed that his company is recommending moving towards HTML5 to all of their customers. He even went as far as to say that Silverlight is hard to recommend, unless you're not targeting any mobile users and the applications are internal-only and you've already invested in the technology. I can't provide a link for any of this yet, but a paper about this will be published soon so i'll either link to it when it's out (if it's publicly available) or at least reference it.

Таким образом, мы имеем 3 категории, в которых Silverlight оценивается лучше, чем ASP.NET MVC 3 + JQuery, но этого недостаточно для того чтобы сократить отрыв. Основываясь на весе, который мы присвоили каждому критерию, максимально возможная оценка это 732 балла. ASP.NET MVC3 и jQuery набрали 568 балла. Silverlight набрал 304 балла. Очевидно, что результаты будут отличаться в зависимости от того, что вы считаете важным. Именно по этому, мы проконсультировались с аналитиком из одной крупной компании, специализирующейся на исследованиях и консалтинге в сфере IT технологий. Аналитик полностью согласился с нашими выводами и данными, и подтвердил, что его компания рекомендует переход к HTML5 для всех своих клиентов. Он даже зашел дальше, и сказал, что Silverlight трудно рекомендовать, разве что, в случае, если ваши приложения не нацелены на поддержку мобильных платформ и являются сугубо внутренними и вы уже вложили деньги в эту технологию. Пока что, я не могу предоставить ссылку на это мнение, но документ об этом будет готов в ближайшем будущем, и я лучше дам ссылку, когда он выйдет (если документ будет публичным) или, по крайней мере, сошлюсь на него.

I encourage anyone who is faced with the same decision to use the spreadsheet and modify it to your needs (adding more criteria, changing weights and/or scores, whatever) to see which one is the best fit for your situation. You can download the spreadsheet here.

Я призываю всех, кто столкнулся с такой же проблемой выбора технологии, использовать и модифицировать под свои нужды таблицу, прикрепленную ниже. Вы можете добавлять новые критерии, менять вес и оценку и т.д., чтобы увидеть, что наилучшем образом подходит в вашей ситуации. Загрузить таблицу можно отсюда.

Резервная ссылка MS Excel 2007 (html_vs_silverlight.xlsx)
Резервная ссылка MS Excel 2003 (html_vs_silverlight_xl2003.xls)


Перевод текста: Дмитрий Жарий


Davy BrionАвтор текста: Davy Brion – .NET разработчик, блоггер, владелец бизнеса.
Оригинал текста: Why We’re Going With HTML(5) Instead Of Silverlight

5 комментариев:

  1. Спасибо вам за то что вы делаете. Собираетесь ли дальше делать смешанные тексты? :)

    ОтветитьУдалить
  2. Да, собираюсь. Моя цель – наполнить этот блог хотя бы 20-тью такими текстами

    ОтветитьУдалить
  3. Спасибо! Замечательная работа. То что нужно.

    ОтветитьУдалить
  4. Отличная работа, спасибо!

    ОтветитьУдалить