Подскажите технологии на базе ASP.NET для наших за

 
+1
 
.NET
ava
MasTaKslova | 11.01.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.
Ответы (9)
ava
denzubr | 12.01.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.
ava
alexplato | 12.01.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/d...rtual-machines/ 
2. Правильно ли понимаем, что у приложений, которые должны будут работать в такой среде, должна быть специальная архитектура? Если так, то есть ли документация/примеры по данной архитектуре?
3. Что лучше для вышеописанной задачи: Microsoft Azure или AWS? Критерии оценки: цена, производительность, простота использования.
4. Сильно ли уступает по производительности такая конфигурация аналогичной, только созданной на ASP.NET.
ava
denzubr | 13.01.2016, 09:52 #
Не за что smile

Цитата

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

Здесь я имел в виду, что не .NET в целом, а именно ASP.NET.
Иными словами, ASP.NEТ - это часть .NET, предназначенная для создания вэб-приложений.
.NET же в целом, безусловно  позволяет поставленную задачу выполнить. Просто другими средствами.
Но если вернуться к вопросу оценки конкретных критериев для выбора целевой платформы, то конечно результат разработки на .NET будет уступать по производительности решению на плюсах. НО это только в случае "идеального" кода на обоих языках.
По факту, даже в самом С# есть миллион тонкостей и правил, следование которым позволяет разрабатывать решения, готовые к действительно ощутимым нагрузкам.

По вопросам:
1. Да, в общем и целом верно понимаете

2. Для работы в Azure .NET приложения должны быть оптимизированы лишь отчасти. В целом, если сразу грамотно планировать архитектуру создаваемого проекта с точки зрения иерархии зависимостей и банально следовать принципам SOLID, то абсолютно реально организовать структуру проекта так, чтобы в итоге можно было запускать и в Azure и вне него.
Вот здесь есть неплохое локаничное описание ключевых отличий классического ASP.NET от такого под Azure.
Your text to link here...

3. К сожалению, использовать услуги AWS еще не приходилось. Поэтому не стану вводить вас в заблуждение своими предположениями smile

4. Без замеров вообще сложно о чем-либо здесь рассуждать.
В целом, мне кажется, что разница "прироста" затрат на оркестирование экземплярами приложения в облаке с лихвой покрывается эластичностью масштабирования.
ava
alexplato | 13.01.2016, 22:57 #
Еще раз - огромное спасибо за подробнейший ответ!

Опишу задачу конкретнее.

Задача приложения следующая: регулярно раз в 10 секунд делать запрос в базу данных, для проверки появления новых ссылок (URL). Когда появляются новые ссылки они загружаются и далее загруженные коды страниц отправляются в базу данных. Задача осложняется тем, что один момент времени может прийти 5 новых URL, в другой 100 в третий 5000 и все это нужно оперативно обработать (ведь в каждый момент может потребоваться разное количество оперативной памяти, ресурсов процессора, а также ширины канала интернета для текущих задач). Поэтому вся система должна работать на облачном сервере с автомасштабируемыми мощностями , например Microsoft Azure или AWS. Соответственно, это нужно учесть в архитектуре приложения. 

Средство реализации C# MicrosoftVisualStudio 2013 (приложение под Windows). Если средство реализации (C#) или варианты облачных хостов, по вашему мнению, не оптимальны в контексте задачи, рассмотрим ваши предложения.

denzubr, вы, я так понял, разработчик? Можете оставить контакты для консультации (готов оплатить).
ava
denzubr | 15.01.2016, 08:50 #
Цитата

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

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

Вообще, исходя из описания background задачи мне видится более подходяшей платформой для реализации. В качестве языка, в частности, неплохим кажется выбор Erlang или Go.
Но такой выбор чреват явным увеличением затрат на поиск людей, способных данную задачу выполнить. Хотя, опять же, исходя из приведенного вами описания, задача особо сложной не выглядит.
ava
alexplato | 13.01.2016, 23:17 #
Кстати, и что это за "SOLID принципы" не нашел в гугле в данном контексте.
ava
denzubr | 15.01.2016, 08:39 #
Вики
Принципы проектирования ООП систем.
ava
mihryak | 14.01.2016, 15:01 #
Цитата (alexplato @  13.1.2016,  23:57 findReferencedText)
Задача осложняется тем, что один момент времени может прийти 5 новых URL, в другой 100 в третий 5000 и все это нужно оперативно обработать (ведь в каждый момент может потребоваться разное количество оперативной памяти, ресурсов процессора, а также ширины канала интернета для текущих задач). 

На backend стоит использовать какой-нибудь планировщик задач, например, Hangfire. Он и проверять наличие обновлений может, и порождать обрабатывающие задачи, и контролировать количество одновременно выполняемых задач, и многое другое.
ava
denzubr | 15.01.2016, 08:41 #
Если к деталям реализации, то я бы скорее использовал Quartz.NET 
Зарегистрируйтесь или войдите, чтобы написать.
Фирма дня
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Участники
advanced
Отправить