Scala (2.8)/Подъем (2.2) против С# (4.0)/ASP.NET-MVC 3
Недавно я изучал Scala в свое личное время. На работе я изучал С#/. NET (4.0). Я недостаточно глубоко знаком с тем, чтобы иметь возможность более чем минимально оценить либо Lift, либо ASP-MVC 3. Я на распутье. И учитывая мое очень ограниченное время, я должен выбирать между тем или другим, чтобы учиться и создавать приложение в течение следующих 3-6 месяцев.
Я столкнулся с этой лифтовой статьей сегодня, и я сразу был заинтригован. Я попытался многое из изложенного в статье, что вызвало у меня бесконечные часы разочарования и головных болей. И некоторые из них я в конце концов отказался и реализовал грубые небезопасные простые версии, чтобы завершить проекты. Итак, в этой статье сделан Scala/Lift очень привлекательный.
И затем за обедом мой член команды (и друг) обсуждал его работу над ASP-MVC 3 с использованием С# в .NET 4.0. Похоже, было бы очень приятно учиться и использовать. И он рассказал о достаточном количестве вещей, которые, казалось, перекрывали статью Лифт, о которой я читал утром.
Мой вопрос в том, что: учитывая мое ограниченное время, каковы преимущества и/или недостатки выбора Scala/Lift over С#/ASP-MVC 3? И какие преимущества имеет С#/ASP-MVC 3 над Scala/Lift?
Чтобы уменьшить сложность в моей оценке: Пожалуйста, примите к сведению последнюю версию каждой из этих технологий; Scala 2.8.1 (2010/Dec), подъем 2.2 (2011/январь), С#/.NET 4.0 (2010/апрель) и ASP-MVC 3 (2011/янв.).
Спасибо, что помогли мне в этой важной точке принятия решения.
ОБНОВЛЕНИЕ 2011/Март/19 12:25 CDT:
Я с тех пор наткнулся на пару ресурсов, которые, кажется, очень полезны на стороне Scala/Lift:
1. Бесплатная электронная книга (PDF и HTML) под названием "Изучение лифта (веб-инфраструктура на основе w65)"
2. Статья Wiki создателя Lift под названием "Просмотр первой"
Первая глава книги была очень полезной. Мне очень нравится, насколько сфокусированы принципы и принципы дизайна лифта на "разделение проблем" (сохранение кода из фрагментов дисплея) и "соглашение по конфигурации".
И из того, что я видел до сих пор, в то время как ASP-MVC 3 использует те же "сильные рекомендации", он все еще зависит от уровня, где "гибридизация" кода и презентации. Это где ни разработчики сайта, ни разработчики программного обеспечения не смеют протектора ПОСЛЕ создания. IOW, после создания, есть поддерживающие драконы. Я хотел бы, чтобы кто-то сказал мне, что я здесь неправ.
Ответы
Ответ 1
Scala/Поднимите профи:
- может использовать огромные решения/библиотеки с открытым исходным кодом для веб-сайтов и предприятий
- больше инноваций
- снижение затрат
- (субъективный: предпочитает синтаксис Scala и модель данных)
С#/ASP профи:
- вы изучаете его на работе, поэтому вы знакомы с технологиями .NET.
- Потратьте меньше времени на обучение (с первой точки) и получите поддержку в работе.
Для меня Scala/Lift - более эффективное решение, но я больше знаком с java/jvm и не связан с .NET.
Ответ 2
Я просто читал wikipedia, а С#, кажется, покрывает большинство вещей, которые предоставляет scala.
От wikipedia...
Scala также предоставляет унифицированную систему типов (как в С#, но в отличие от Java), где все типы, включая примитивные типы, такие как целые и логические, являются объектами, которые являются подклассами типа Any. scala также содержит ряд других функций (или не-функций), присутствующих в С#, но не Java, включая перегрузку оператора, необязательные параметры, именованные параметры, необработанные строки (которые могут быть многострочными в Scala), и нет проверенные исключения.
Есть только несколько дополнительных вещей scala, и поскольку у вас есть опыт работы с .net, я бы просто придерживался С#
Ответ 3
Scala pro:
- Поддержка функционального программирования
- Лучшая поддержка linux, если используется jvm (для С# использовать моно, который не является
поддерживается Microsoft)
С# pro:
- Инструмент /IDE более зрелый/надежный
- Более открытые вакансии на рынке в настоящий момент
Ответ 4
Посмотрите http://circumflex.ru/ (английский язык).
Новая привлекательная веб-инфраструктура Scala.
Не MVC, но очень классно для настольных приложений: http://vaadin.com/ - серверная сторона RIA. Вы можете использовать Scala, Java или любой другой язык JVM. Всего один JAR. Плагин не требуется для клиента.