Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Разработка под ASP.NET > Подскажите технологии на базе ASP.NET для наших за |
Автор: MasTaKslova 11.1.2016, 14:45 |
В рамках будущего (через несколько месяцев) проекта необходимо реализовать: Веб представление Личный кабинет, регистрация/авторизация (включая смену и напоминание пароля), система оповещения (email,sms), система поддержки (тикеты/чат с поддержкой), интерфейс для удобной подачи входных данных и запуска работы сервиса, отчеты в виде таблиц и графиков (+экспорт в Excel и т.п., сравнение, сортировка, различные варианты отчетов), биллинг, админка, базы данных; Движок Выполняет полезную работу для пользователя, другими словами - основную задачу сервиса. В частности, сбор или мониторинг данных из интернета, обработка данных, аналитика и генерация данных для представления отчетов. Это все будет работать на AWS или Windows Azure (используется масштабируемая по мощностям архитектура). Решили, что реализовать будем на базе ASP.NET. Собираемся заняться его изучением (у нас большой опыт программирования C# .NET). Вопросы 1. Какие технологии в рамках ASP.NET нужно использовать для вебпредставления, какие для движка? 2. В контексте реализации движка (осуществляющего саму полезную работу/вычисления), возможно стоит вместо ASP рассмотреть PHP или что нибудь еще? Если что-то другое, то есть что либо в рамках .NET? Какие плюсы/минусы разных вариантов? 3. Слышал, что для вебпредставления, могут в разработке использоваться следующие технологии:
Заранее спасибо! На базе ваших ответов будем строить свою стратегию изучения технологий ASP. |
Автор: denzubr 12.1.2016, 11:10 |
Здравствуйте! Попробую поделиться своими соображениями. 1. Какие технологии в рамках ASP.NET нужно использовать для вебпредставления, какие для движка? На первый вопрос вы сами по большей мере пытаетесь дать ответ в ответе на вопрос № 3. Поэтому перейдем сразу к нему. 3. Слышал, что для вебпредставления, могут в разработке использоваться следующие технологии: ASP.MVC; Это основное по сути, что сейчас может предложить .NET для полного стэка вэб разработки. Есть еще WebForms, но на настоящий момент выбор этой технологии для перспективного проекта может быть оправдан обстоятельствами уж совсем исключительного характера. Стоит понимать, что это лишь server-side. И что требования современного вэба вынудят вас (в 99,9% случаев) на всю катушку использовать и фронт-енд технологии. Как минимум, VanilaJS))) Как максимум - на фронте будете свой фрейймворк дополнительно использовать. Типа AngularJS или React например. Telerik; Применительно к .NET продукция Telerik - это набор "компонент", ускоряющих решение типовых задач разработки в вебе. Если точнее, то скорее в web-apps. Если еще точнее, то, ИМХО, web-apps для лютого энтерпрайза. Плюс, движок отчетности свой, встраиваемый в вэб-морду довольно быстро. Все перечисленное реализуется также с помощью пакета ASP.NET MVC расширения от компании DevExpress. Intersoft Solutions ; Сложно комментировать. Не знаком с продукцией данной компании, но судя по описанию на сайте - своего рода аналог DevExpress и Telerik, если речь идет о разработке именно под ASP.NET MVC web api 2.* ; Это технология по большей мере для реализации серверной стороны REST парадигмы на .NET SOAP, REST Не совсем честно говоря понял, почему здесь вообще оказались перечислено это))) SOAP - это протокол доступа к данным. Применительно к .NET, реализуется например платформой WCF. REST - парадигма организации вэб приложения. Даже на уровне протокола никаким институтом стандартизации не утвержденная. 2. В контексте реализации движка (осуществляющего саму полезную работу/вычисления), возможно стоит вместо ASP рассмотреть PHP или что нибудь еще? Если что-то другое, то есть что либо в рамках .NET? Какие плюсы/минусы разных вариантов? Тут надо исходить прежде всего из имеющихся у специалистов вашей команды навыков. Если задача не имеет каких-то однозначно определенных специфических требований, то в принципе платформу можно выбирать любую. .NET здесь неплох как минимум с точки зрения удобства самого c#. В то же время, если это backround сервис (движок),то речь будет идти явно не об ASP.NET. Если попытаться подытожить - без определения явно специфических требований (дикий highload например), в принципе думаю не найдется задачи, которую вы бы не смогли решить с помощью .NET. Этот ответ добавлен с нового Винграда - http://ru.vingrad.com/Podskazhite-tekhnologii-na-baze-ASPNET-dlya-nashikh-za-id56939673ae201594108b4568#findElement_E7045_5694b4f0ae20153c6bf98893_0 |
Автор: alexplato 12.1.2016, 12:53 | ||
Очень хороший и развернутый ответ! Огромное спасибо! Я правильно понимаю, преградой использования .net в таких задачах является сравнительно низкая производительность при больших нагрузках? Если так, какие альтернативы? Например php, C++? Еще вопросы по теме: 1. Правильно ли понимаем, что Microsoft Azure или AWS (Amazon Web Services) позволяет запускать на своих серверах программу под Windows, написанную на C#, при этом предоставляя масштабируемые мощности? Например https://azure.microsoft.com/ru-ru/pricing/details/virtual-machines/ 2. Правильно ли понимаем, что у приложений, которые должны будут работать в такой среде, должна быть специальная архитектура? Если так, то есть ли документация/примеры по данной архитектуре? 3. Что лучше для вышеописанной задачи: Microsoft Azure или AWS? Критерии оценки: цена, производительность, простота использования. 4. Сильно ли уступает по производительности такая конфигурация аналогичной, только созданной на ASP.NET. |
Автор: denzubr 13.1.2016, 09:52 | ||
Не за что :)
Здесь я имел в виду, что не .NET в целом, а именно ASP.NET. Иными словами, ASP.NEТ - это часть .NET, предназначенная для создания вэб-приложений. .NET же в целом, безусловно позволяет поставленную задачу выполнить. Просто другими средствами. Но если вернуться к вопросу оценки конкретных критериев для выбора целевой платформы, то конечно результат разработки на .NET будет уступать по производительности решению на плюсах. НО это только в случае "идеального" кода на обоих языках. По факту, даже в самом С# есть миллион тонкостей и правил, следование которым позволяет разрабатывать решения, готовые к действительно ощутимым нагрузкам. По вопросам: 1. Да, в общем и целом верно понимаете 2. Для работы в Azure .NET приложения должны быть оптимизированы лишь отчасти. В целом, если сразу грамотно планировать архитектуру создаваемого проекта с точки зрения иерархии зависимостей и банально следовать принципам SOLID, то абсолютно реально организовать структуру проекта так, чтобы в итоге можно было запускать и в Azure и вне него. Вот здесь есть неплохое локаничное описание ключевых отличий классического ASP.NET от такого под Azure. http://blogs.msdn.com/b/peterlau/archive/2012/04/25/top-7-concerns-of-migrating-an-asp-net-application-to-windows-azure.aspx 3. К сожалению, использовать услуги AWS еще не приходилось. Поэтому не стану вводить вас в заблуждение своими предположениями :) 4. Без замеров вообще сложно о чем-либо здесь рассуждать. В целом, мне кажется, что разница "прироста" затрат на оркестирование экземплярами приложения в облаке с лихвой покрывается эластичностью масштабирования. Этот ответ добавлен с нового Винграда - http://ru.vingrad.com/Podskazhite-tekhnologii-na-baze-ASPNET-dlya-nashikh-za-id56939673ae201594108b4568#findElement_E7045_5695f442ae2015c975f984ac_0 |
Автор: alexplato 13.1.2016, 22:57 |
Еще раз - огромное спасибо за подробнейший ответ! Опишу задачу конкретнее. Задача приложения следующая: регулярно раз в 10 секунд делать запрос в базу данных, для проверки появления новых ссылок (URL). Когда появляются новые ссылки они загружаются и далее загруженные коды страниц отправляются в базу данных. Задача осложняется тем, что один момент времени может прийти 5 новых URL, в другой 100 в третий 5000 и все это нужно оперативно обработать (ведь в каждый момент может потребоваться разное количество оперативной памяти, ресурсов процессора, а также ширины канала интернета для текущих задач). Поэтому вся система должна работать на облачном сервере с автомасштабируемыми мощностями , например Microsoft Azure или AWS. Соответственно, это нужно учесть в архитектуре приложения. Средство реализации C# MicrosoftVisualStudio 2013 (приложение под Windows). denzubr, вы, я так понял, разработчик? Можете оставить контакты для консультации (готов оплатить). |
Автор: alexplato 13.1.2016, 23:17 |
Кстати, и что это за "SOLID принципы" не нашел в гугле в данном контексте. |
Автор: denzubr 15.1.2016, 08:39 |
https://ru.wikipedia.org/wiki/SOLID_(%D0%BE%D0%B1%D1%8A%D0%B5%D0%BA%D1%82%D0%BD%D0%BE-%D0%BE%D1%80%D0%B8%D0%B5%D0%BD%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5) Принципы проектирования ООП систем. Этот ответ добавлен с нового Винграда - http://ru.vingrad.com/Podskazhite-tekhnologii-na-baze-ASPNET-dlya-nashikh-za-id56939673ae201594108b4568#findElement_E7045_5698862aae2015ad30f9a562_0 |
Автор: denzubr 15.1.2016, 08:41 |
Если к деталям реализации, то я бы скорее использовал http://www.quartz-scheduler.net/ Этот ответ добавлен с нового Винграда - http://ru.vingrad.com/Podskazhite-tekhnologii-na-baze-ASPNET-dlya-nashikh-za-id56939673ae201594108b4568#findElement_E7045_56988685ae20152b4cf998fa_0 |
Автор: denzubr 15.1.2016, 08:50 | ||
Поняли верно)) [email protected] Напишите - обсудим детали. :) Вообще, исходя из описания background задачи мне видится более подходяшей платформой для реализации. В качестве языка, в частности, неплохим кажется выбор Erlang или Go. Но такой выбор чреват явным увеличением затрат на поиск людей, способных данную задачу выполнить. Хотя, опять же, исходя из приведенного вами описания, задача особо сложной не выглядит. Этот ответ добавлен с нового Винграда - http://ru.vingrad.com/Podskazhite-tekhnologii-na-baze-ASPNET-dlya-nashikh-za-id56939673ae201594108b4568#findElement_E7045_569888b5ae20150e7bf9b637_0 |