Обоснование выбора платформы
В ходе выбора платформы для разработки приложенияинтернет - магазина Avito.ru, выбор был сделан в пользу новой ОС от корпорации Microsoftтак как данная платформа имеет огромный потенциал, а также из-за своего недавнего выхода, отсутствие конкурентов в лице крупных компаний. В процессе выбора были учтены и прочие преимущества данной платформы, описанные далее.
Возможность использования широкого спектра видов монетизации приложения. Каждому разработчику доступны две основные схемы продаж приложения: платное и бесплатное. При этом, самой платформой и соответствующим API поддерживаются trial-версии приложений двух типов: с ограничением по сроку (контролируется системой автоматически) и по функционалу (функционал приложения в trial-режиме определяется им самим).
Реклама, встроенная в приложения является одним из основных источников дохода разработчиков. Система поддерживает свой собственный «движок» рекламы – Microsoft Advertising с соответствующим SDK и элементами управления для интерфейса пользователя. Другое дело, что никто не мешает встроить в приложение свой собственный механизм показа рекламы.
Возможность совершать покупки внутри приложения. Windows Store имеет встроенный механизм покупок внутри приложений (in-apppurchases) и соответствующий API. Важной особенностью Windows Store является возможность использования своих механизмов оплаты внутри приложения. Это не только позволит работать с привычными инструментами, но и избавит от необходимости делиться доходом с Windows Store.
Разделение дохода. Пока доход, полученный за приложение, не превышает $25000, он делится по схеме 70/30: 70% получает разработчик, 30% — Microsoft. Как только доход превышает сумму в $25К, разработчик получает уже 80% дохода от приложения.
Ни для кого не секрет, что платформа от Microsoftимеет огромную популярность по всему миру и Windows 8 не является исключением, а именно в ней и идет распространение приложений через WindowsStore.
Аудитория Windows Store. Для начала, обратимся к редакциям Windows 8. Их всего три:
- Windows
- WindowsPro
- WindowsRT
Первая и вторая предназначены для устройств с традиционной для PC архитектурой (x86/x64), третья – исключительно для устройств с архитектурой ARM, характеризующихся, как правило, более низким энергопотреблением и габаритами. Сейчас, говоря о WindowsRT, прежде всего подразумеваются планшеты.На Windows и Windows Pro будут работать и классические desktop-приложения и Windows 8-style UI-приложения. При этом, на всякий компьютер, имеющий метку «Designedfor Windows 7» или де-факто попадающий под этот статус, не только можно установить Windows 8, но и полноценно работать с ней.
С Windows RT все несколько иначе. Эта система работает на ARM-архитектуре и существующие desktop-приложения на ней выполняться не могут. Другое дело, что для Windows 8-style UI-приложений Microsoft гарантирует выполнение на обоих типах систем – и Windows/Windows Pro и Windows RT. Даже для приложений, написанных на C++ и компилируемых в native-код, нужно будет лишь сделать соответствующую сборку и включить её в состав пакетов приложения при его публикации в Windows Store. Повторюсь, это работает только для Windows 8-style UI-приложений. Более того, в Windows RT, за исключением отдельных корпоративных сценариев, возможна будет установка приложений только из Windows Store.
Таким образом, разрабатывая приложения в стиле Windows 8-style UI, мы получаем в качестве потенциальных пользователей и покупателей всех, кто установит себе Windows 8 или купит устройство с ней – вне зависимости от типа этого устройства.
В Windows 8 Microsoft активно продвигает идею использования touch-экранов на всех категориях устройств – от планшетов до десктопов с огромными мониторами (конечно же, тоже touch). Эта идея очень хорошо воспринимается производителями устройств и многими пользователями.
Разумеется, не для всех сценариев подходит touch-интерфейс. Именно поэтому так важно во всех Windows 8-style UI-приложениях поддерживать работу с клавиатурой и мышью. Естественно, что в Windows 8 и Windows 8 Pro есть обычный desktop и работают все привычные нам приложения. Кстати, даже в Windows RT будет поставляться специальная ARM-версия MS Office, работающая именно в desktop-режиме.
НовыеустройствадляWindows 8 (представлены на рис. 1.5). КрисКапоссела, вице-президент Microsoft помаркетингу, как-тосказал: «If your Christmas gift cannot be plugged-in, it is a bad gift». Гаджеты – это то, чем сегодня можно заинтересовать людей по-настоящему.
Настоящей выставкой новых устройств для Windows 8 стала Computex 2012. Там увидели свет как многочисленные ультрабуки (большинство, кстати, touch-экранами), так и планшеты, а также системы типа «все в одном».
Рис. 1.5. новые устройства на Windows 8
Планшеты могут работать не только на ARM и Window RT. Последние чипсеты от Intel позволяют добиться приемлемого энергопотребления в форм-факторе планшета.
Эти и многие другие компьютеры в самых разных исполнениях начнут продаваться с Windows 8 на борту. И их покупатели одновременно с этим становятся потенциальными покупателями приложений, опубликованных в Windows Store. Люди в более чем 200 странах, говорящие на 100 с лишним языках начнут покупать приложения.
Кто является второй большой группой потенциальных пользователей приложений из Windows Store? Правильно, пользователи предыдущих версий Windows. Что их будет толкать к апгрейду? Три простых, но работающих фактора:
- Новые привлекательные устройства.
- Новые потребительские свойства Windows 8 (например, увеличенное время автономной работы).
- Низкая цена апдейта до Windows 8 – всего $40 для всех легальных пользователей Windows XP, Windows Vista и Windows 7.
Есть и еще один немаловажный фактор – ваши новые приложения.
Только за последний год Windows 7 была продана в количестве 230 миллионов копий. Общее число проданных лицензий достигло 630 миллионов.
Рис. 1.6. График распространенности операционных систем
И это только Windows 7. И только легальные пользователи. Сегодня больше миллиарда пользователей Windows на Земле, но даже только тех, кто купил Windows 7 с момента её запуска, больше, чем покупателей устройств на iOS, Android и OSX вместе взятых, проданных за это же время. И ведь львиная доля покупателей iOS и Android используют еще и Windows.На рис. 1.6 показан график популярности операционных систем.
Экономическое обоснование достаточно просто в данной ситуации. Предположим, необходимо получить доход в 1 миллион долларов США, продавая приложение в Windows Store. Пусть приложение стоит $1.99.Получается, нужно продать приложение примерно 503 тысячи раз. А ведь это всего 0,08% сегодняшних легальных пользователей Windows 7. Восемь десятитысячных от общего числа.
Допустим, что приложение бесплатно, но работает по схеме Freemium. Пусть нечто, что продается внутри приложения, стоит тоже $1.99.Представим, что в среднем каждый десятый тратит в вашем приложении эти самые $1.99. Кто-то больше, кто-то меньше, кто-то вообще не тратит, но в среднем получается, что 10% покупают один раз на $1.99.Что будет, если приложение скачают полпроцента от числа сегодняшних пользователей Windows 7? Получаемый доход почти $630 000 дохода.
Как и всякая подобная структура Windows Store работает по определенным правилам, также устанавливая требования и к публикуемым приложениям, которые проходят сертификацию перед появлением в Store:
- Windows Store App Developer Agreement;
- Certification requirements for Windows apps;
Хорошим инструментом для разработчика является Windows AppCertificationKit (WACK). Это автоматический инструмент, позволяющий найти проблемы в приложении еще до его публикации. Полный текст правил сертификации представлен в приложении Б.
Требования к программному продукту
Разрабатываемое приложение, каки любой программный продукт должен соответствовать определенным требованиям. В случае с приложениями для Windows 8, распространяемыми в MicrosoftWindowsStore это:
-Пальце ориентированный интерфейс
- Соответствие стилю оформления WindowsmodernUI
- Соответствие возвратным и иным ограничениям, согласно правил, установленных Microsoft, полная версия представлена в приложении Б.
Дляприложения интернет-магазина «Avito.ru»была избрана модель бесплатного приложения с применением рекламы внутри приложения, что в свою очередь является наиболее лояльным по отношению к пользователям.
Средства разработки
Среда разработки
Для разработки приложения интернет – магазина используется среда разработки Microsoft Visual Studio 2013. Microsoft VisualStudio — линейка продуктов компании Майкрософт, включающих интегрированную среду разработки программного обеспечения и ряд других инструментальных средств. Данные продукты позволяют разрабатывать как консольные приложения, так и приложения с графическим интерфейсом, в том числе с поддержкой технологии Windows Forms, а также веб-сайты, веб-приложения, веб-службы как в родном, так и в управляемом кодах для всех платформ, поддерживаемых Microsoft Windows, Windows Mobile, Windows CE, .NET Framework, Xbox, Windows Phone .NET CompactFramework и Microsoft Silverlight.
VisualStudio включает в себя редактор исходного кода с поддержкой технологии IntelliSense и возможностью простейшего рефакторинга кода. Встроенный отладчик может работать как отладчик уровня исходного кода, так и как отладчик машинного уровня. Остальные встраиваемые инструменты включают в себя редактор форм для упрощения создания графического интерфейса приложения, веб-редактор, дизайнер классов и дизайнер схемы базы данных. VisualStudio позволяет создавать и подключать сторонние дополнения (плагины) для расширения функциональности практически на каждом уровне, включая добавление поддержки систем контроля версий исходного кода (как например, Subversion и VisualSourceSafe), добавление новых наборов инструментов (например, для редактирования и визуального проектирования кода на предметно-ориентированных языках программирования или инструментов для прочих аспектов процесса разработки программного обеспечения (например, клиент Team Explorer для работы с Team Foundation Server). VisualStudio распространяется в тех же редакциях, что и 2010. Изменения коснулись VisualStudio 2012 Express — устанавливаются все языки программирования, а не один (как раньше VisualBasic 2010 Express, Visual C# 2010 Express), а также теперь существует пять версий VisualStudioExpress: VisualStudioExpress 2012 для Web, VisualStudioExpress 2012 для Windows 8, VisualStudioExpress 2012 для Windows Desktop, VisualStudioExpress 2012 для Windows Phone и VisualStudioTeam Foundation ServerExpress 2012. Все версии распространяются, как отдельные приложения. VisualStudioExpress 2012 для Windows 8 позволяет разрабатывать приложения для Windows Store с Modern-интерфейсом, а VisualStudioExpress 2012 для Windows Desktop позволяет разрабатывать «классические» приложения для Рабочего стола. Что касается VisualStudioTeam Foundation ServerExpress 2012, то эта версия поставляется с оболочкой VisualStudio 2012.
Разрабатывать приложения с помощью VisualStudio 2012 можнотолькоподWindows 7 SP1 иWindows 8. Вышло исправление, позволяющее разрабатывать приложения и под Windows XP.Финальный релиз VisualStudio 2013 стал доступен для загрузки 17 октября 2013 вместе с. NET 4.5.1.Вид среды разработки Microsoft Visual Studio 2013 представлена на рис. 2.1.
Рис. 2.1. главная страница MicrosoftVisualStudio 2013
Именно MicrosoftVisualStudio 2013 была использована при создании приложения интернет – магазина «avito.ru».
Язык написания приложения.
В ходе разработки программного продукта использовался объектно-ориентированный язык программирования. Объе́ктно-ориенти́рованное, или объектное, программи́рование (в дальнейшем ООП) — парадигма программирования, в которой основными концепциями являются понятия объектов и классов. В случае языков с прототипированием вместо классов используются объекты-прототипы.
В центре ООП находится понятие объекта. Объект — это сущность, которой можно посылать сообщения, и которая может на них реагировать, используя свои данные. Объект — это экземпляр класса. Данные объекта скрыты от остальной программы. Сокрытие данных называется инкапсуляцией.
Наличие инкапсуляции достаточно для объектности языка программирования, но ещё не означает его объектной ориентированности — для этого требуется наличие наследования.Но даже наличие инкапсуляции и наследования не делает язык программирования в полной мере объектным с точки зрения ООП. Основные преимущества ООП проявляются только в том случае, когда в языке программирования реализован полиморфизм; то есть возможность объектов с одинаковой спецификацией иметь различную реализацию. Основными понятиями объектно-ориентированного программирования являются:
- Абстракция— это способ выделить набор значимых характеристик объекта, исключая из рассмотрения незначимые. Соответственно, абстракция — это набор всех таких характеристик;
- Инкапсуляция — это свойство системы, позволяющее объединить данные и методы, работающие с ними в классе, и скрыть детали реализации от пользователя;
- Наследование — это свойство системы, позволяющее описать новый класс на основе уже существующего с частично или полностью заимствующейся функциональностью. Класс, от которого производится наследование, называется базовым, родительским или суперклассом. Новый класс — потомком, наследником или производным классом;
- Полиморфизм — это свойство системы использовать объекты с одинаковым интерфейсом без информации о типе и внутренней структуре объекта;
- Класс является описываемой на языке терминологии (пространства имён) исходного кода моделью ещё не существующей сущности (объекта). Фактически он описывает устройство объекта, являясь своего рода чертежом. Говорят, что объект — это экземпляр класса. При этом в некоторых исполняющих системах класс также может представляться некоторым объектом при выполнении программы посредством динамической идентификации типа данных. Обычно классы разрабатывают таким образом, чтобы их объекты соответствовали объектам предметной области;
- Объект - Сущность в адресном пространстве вычислительной системы, появляющаяся при создании экземпляра класса или копирования прототипа (например, после запуска результатов компиляции и связывания исходного кода на выполнение);
- Прототип — это объект-образец, по образу и подобию которого создаются другие объекты. Объекты-копии могут сохранять связь с родительским объектом, автоматически наследуя изменения в прототипе; эта особенность определяется в рамках конкретного языка;
Многие современные языки специально созданы для облегчения объектно-ориентированного программирования. Однако следует отметить, что можно применять техники ООП и для не-объектно-ориентированного языка и наоборот, применение объектно-ориентированного языка вовсе не означает, что код автоматически становится объектно-ориентированным.
Как правило, объектно-ориентированный язык (ООЯ) содержит следующий набор элементов:
- Объявление классов с полями (данными — членами класса) и методами (функциями — членами класса).
- Механизм расширения класса (наследования) — порождение нового класса от существующего с автоматическим включением всех особенностей реализации класса-предка в состав класса-потомка. Большинство ООЯ поддерживают только единичное наследование.
- Полиморфные переменные и параметры функций (методов), позволяющие присваивать одной и той же переменной экземпляры различных классов.
- Полиморфное поведение экземпляров классов за счёт использования виртуальных методов. В некоторых ООЯ все методы классов являются виртуальными.
Некоторые языки добавляют к указанному минимальному набору те или иные дополнительные средства. В их числе:
- Конструкторы, деструкторы, финализаторы.
- Свойства (аксессоры).
- Индексаторы.
- Средства управления видимостью компонентов классов (интерфейсы или модификаторы доступа, такие как public, private, protected, feature и др.)
Одни языки отвечают принципам ООП в полной мере — в них все основные элементы являются объектами, имеющими состояние и связанные методы. Примеры подобных языков — Smalltalk, Eiffel. Существуют гибридные языки, совмещающие объектную подсистему в целостном виде с подсистемами других парадигм как «два и более языка в одном», позволяющие совмещать в одной программе объектные модели с иными, и размывающие грань между объектно-ориентированной и другими парадигмами за счёт нестандартных возможностей, балансирующих между ООП и другими парадигмами (таких как множественная диспетчеризация, параметрические классы, возможность манипулировать методами классов как самостоятельными объектами, и др.). Примерытакихязыков: CLOS, Dylan, OCaml, Python, Ruby, Objective-C. Однако, наиболее распространены языки, включающие средства эмуляции объектной модели поверх более традиционной императивной семантики. Алан Кэй назвал такие языки «склеиванием возможностей» (англ. agglutinationoffeatures), в противовес «чистоте стиля» (англ. crystalizationofstyle) языков, воплощающих некую парадигму непосредственно[9]. Примеры таких языков — Симула, C++, VisualBasic, Delphi, Модула, Модула-2, Java, C#, PHP.
Для написания приложения интернет - магазин «avito.ru» был применен язык объектно-ориентированного программирования C#.
C# (произносится си шарп) — объектно-ориентированный язык программирования. Разработан в 1998—2001 годах группой инженеров под руководством Андерса Хейлсберга в компании Microsoft как язык разработки приложений для платформы Microsoft .NET Framework и впоследствии был стандартизирован как ECMA-334 и ISO/IEC 23270.C# относится к семье языков с C-подобным синтаксисом, из них его синтаксис наиболее близок к C++ и Java. Язык имеет статическую типизацию, поддерживает полиморфизм, перегрузку операторов (в том числе операторов явного и неявного приведения типа), делегаты, атрибуты, события, свойства, обобщённые типы и методы, итераторы, анонимные функции с поддержкой замыканий, LINQ, исключения, комментарии в формате XML.Переняв многое от своих предшественников — языков C++, Pascal, Модула, Smalltalk и в особенности Java — С#, опираясь на практику их использования, исключает некоторые модели, зарекомендовавшие себя как проблематичные при разработке программных систем, например, C# в отличие от C++ не поддерживает множественное наследование классов (между тем допускается множественное наследование интерфейсов).
Особенностью данного является то, что C# разрабатывался как язык программирования прикладного уровня для CLR и, как таковой, зависит, прежде всего, от возможностей самой CLR. Это касается, прежде всего, системы типов C#, которая отражает BCL. Присутствие или отсутствие тех или иных выразительных особенностей языка диктуется тем, может ли конкретная языковая особенность быть транслирована в соответствующие конструкции CLR. Так, с развитием CLR от версии 1.1 к 2.0 значительно обогатился и сам C#; подобного взаимодействия следует ожидать и в дальнейшем. (Однако, эта закономерность была нарушена с выходом C# 3.0, представляющего собой расширения языка, не опирающиеся на расширения платформы .NET.) CLR предоставляет C#, как и всем другим .NET-ориентированным языкам, многие возможности, которых лишены «классические» языки программирования. Например, сборка мусора не реализована в самом C#, а производится CLR для программ, написанных на C# точно так же, как это делается для программ на VB.NET, J# и др.
Так как Microsoftотдает предпочтение именно C#, было принято решение использовать именно этот язык объектно-ориентрованного программирования.