Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка под 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.MVC;
  • Telerik;
  • Intersoft Solutions ;
  • web api 2.* ;
  • SOAP, REST .
Возможно, вы посоветуете что либо еще. Уточню - для нас важно, чтобы технология/фреймворк давала возможность максимально быстро реализовать функциональные блоки, которые нам необходимы в вебпредставлении.

Заранее спасибо! На базе ваших ответов будем строить свою стратегию изучения технологий 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
Цитата(denzubr @ 12.1.2016,  11:10)
В то же время, если это backround сервис (движок),то речь будет идти явно не об ASP.NET.

Если попытаться подытожить - без определения явно специфических требований (дикий highload например), в принципе думаю не найдется задачи, которую вы бы не смогли решить с помощью .NET.

Очень хороший и развернутый ответ! Огромное спасибо! Я правильно понимаю, преградой использования .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
Не за что :)

Цитата

   В то же время, если это backround сервис (движок),то речь будет идти явно не об ASP.NET.
   

Здесь я имел в виду, что не .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 принципы" не нашел в гугле в данном контексте.

Автор: mihryak 14.1.2016, 15:01
Цитата(alexplato @  13.1.2016,  23:57 Найти цитируемый пост)
Задача осложняется тем, что один момент времени может прийти 5 новых URL, в другой 100 в третий 5000 и все это нужно оперативно обработать (ведь в каждый момент может потребоваться разное количество оперативной памяти, ресурсов процессора, а также ширины канала интернета для текущих задач). 

На backend стоит использовать какой-нибудь планировщик задач, например, http://hangfire.io/. Он и проверять наличие обновлений может, и порождать обрабатывающие задачи, и контролировать количество одновременно выполняемых задач, и многое другое.

Автор: 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
Цитата

   denzubr, вы, я так понял, разработчик? Можете оставить контакты для консультации (готов оплатить)
   

Поняли верно))
[email protected]
Напишите - обсудим детали. :)

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

Этот ответ добавлен с нового Винграда - http://ru.vingrad.com/Podskazhite-tekhnologii-na-baze-ASPNET-dlya-nashikh-za-id56939673ae201594108b4568#findElement_E7045_569888b5ae20150e7bf9b637_0

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)