Варианты использования для node.js и c #

10

Я довольно много работаю с ASP.NET (C #, MVC), но в основном это типичная веб-разработка. Я делаю Restful архитектуру с использованием CRUD-репозиториев. Большинство моих клиентов не имеют много дополнительных требований в своих приложениях.

Сейчас я смотрю на node.js и его влияние на производительность (я зависим от скорости), но я не слишком углублялся в это.

Мне интересно, если

  • node.js может реально заменить мою типичную веб-разработку на C # и ASP.NET MVC (не переписывая существующие приложения, а работая над новыми)
  • node.js может дополнять приложение ASP.NET MVC, добавляя некоторые асинхронные свойства в существующую архитектуру.

Существуют ли варианты использования для / против C # и node.js?

редактировать

Я люблю ASP.NET MVC и очень взволнован тем, что происходит. Просто пытаюсь увидеть, есть ли особые варианты использования, которые бы предпочтение

Чейз Флорелл
источник
Да, я понимаю, что это может быть более масштабный разговор, когда речь идет о Ruby или PHP, но по этому конкретному вопросу меня не интересует ни один из них ... это только я.
Чейз Флорелл
Ответ: попробуйте узел. Читайте об этом. Видишь ли тебе это нравится.
Raynos

Ответы:

11

Сейчас я смотрю на node.js и его влияние на производительность (я зависим от скорости), но я не слишком углублялся в это.

Профиль, профиль, профиль. Это единственный способ узнать, что ваши ускорения оказывают должное влияние. Вы можете догадаться, что это достаточно быстро. Но большинство людей любят преждевременно оптимизировать. Это хуже, чем играть с собой во время свидания.

Мне интересно, может ли node.js полностью заменить мою типичную веб-разработку на C # и ASP.NET MVC, если он лучше в качестве дополнения к C # и ASP.NET MVC, или если есть некоторые вещи, которые следует просто «оставить в покое»? ».

Существуют ли варианты использования для / против C # и node.js?

Конечно, если вы находитесь в магазине, который регулярно пишет код на C #, то вам следует использовать MVC (он намного лучше, чем WebForms и называется WebPages). Вы не потеряете много времени на обучение инструментам, и ваши рабочие процессы уже должны справиться с этим.

То, что вы не указываете выше, это причины, по которым следует выбирать каждый. Вы предоставили два текущих рыночных варианта, один из которых находится на стадии разработки Alpha, а другой - на третьем году выпуска платформы. Я бы не хотел сравнивать текущие тестовые модели электромобилей с гибридами Honda, которые уже есть на рынке. Они в двух разных лигах.

Теперь у вас есть причина держаться подальше от node.js, если вы номинально являетесь магазином C #.

В настоящее время вы не работаете с асинхронным вечерним вводом-выводом, вы в настоящее время работаете в процедурном формате.

Это противоположность тому, что nodejs собирается сделать для вас.

Тем не менее, если вы часто пишете асинхронный код на C # и часто используете его в четном стиле, тогда да, node.js - это то, что вам следует серьезно рассмотреть.

Вот что вы откажетесь:

  • IIS - это действительно важно для многих людей. Такие вещи, как встроенная аналого-цифровая интеграция, уже сделаны и практически не содержат ошибок. На самом деле node.js теперь хорошо интегрируется с IIS.
  • Шаблонирование Razor. Если вы работали с серьезным C # MVC, то вы используете Razor и любите его, а также то, как быстро вы можете создавать вещи. В ноде есть похожие шаблоны, и я, конечно, не стучу нодом, но весь набор инструментов уже присутствует в C #, и большая часть его в настоящее время создается в мире нод. NB: много этого инструмента теперь достаточно зрелые _
  • сборка dlls во время компиляции - node.js обычно компилируется на лету, то есть не все пути проверяются при запуске. Вполне возможно иметь действительно плохой код в узле, который никто никогда не трогает, не проверяет и не проверяет.
  • Все инструменты, в настоящее время встроенные в VS, которые вы используете ежедневно - просто не так много поддержки VS для javascript. Отчасти потому, что все в JavaScript так динамично. NB: Microsoft, очевидно, работает над инструментальной поддержкой javascript _

Вот что вы получите:

  • все, что вы разрабатываете, будет на одном языке, при условии, что вы выполняете сценарии на стороне клиента, а также на стороне сервера. (или почему вы даже рассматриваете javascript на сервере)

Итак, поскольку мне кажется, что здесь я полностью блокирую Node, позвольте мне отметить, что узел является моим языком воспроизведения дома, мне это нравится, и я помогаю людям иногда отлаживать его на серверах чата stackoverflow (комната 642). Я вижу, что это имеет большой и колоссальный потенциал в будущем.

Я просто говорю, не выбрасывайте ребенка и не удивляйтесь, почему вода в ванной грязная.

Вы не указали причину, по которой вы должны отказаться от многолетнего опыта и начать что-то новое. Или плохие инструменты? Не за что. И то, и другое великолепно и делает разработку проще простого.

Может ли узел заменить C #? Да, конечно. Так мог бы PHP или Java или Ruby. Вы не спрашиваете об этом.

Вот как вы узнаете, когда будете готовы программировать node.js вместо C #:

  • Вы подумываете о том, чтобы написать книгу, чтобы помочь другим людям «получить javascript» вместо скучных старых программ, которые они написали ранее на C # и т. Д.
  • У вас есть проблемы с синхронным (блокирующим) вводом-выводом, мешающим вашим приложениям выполнять реальную работу.
  • Вы не используете ЛЮБЫЕ библиотеки в C #, кроме MVC по умолчанию, и это только для маршрутизации, и вы почти уверены, что можете сделать лучший механизм маршрутизации, и вы кодируете все настолько близко к металлу, насколько это возможно.
  • Каждый объект данных, который вы разрабатываете, вы видите как хеш вместо строго типизированного объекта.
jcolebrand
источник
1
Мой совет, пишите три или четыре сложных сайта в node.js. Начните с малого, затем становитесь больше.
Jcolebrand
1
Я не в колледже / университете. Я занимаюсь соло около 8 лет и чувствую себя неплохо. Я могу зарабатывать лучше $$$ самостоятельно, чем в другой компании.
Чейз Флорелл
2
C # выполняет проверку времени компиляции всех путей кода. Он не выдаст, пока плохие данные не взорвут его. Узел не остановит сборку только из-за плохого кода. Или я использовал старую версию, и она изменилась.
Jcolebrand
1
@Raynos: Razor - это не сторонний проект с открытым исходным кодом, это официально одобренный разработанный Microsoft движок для ASP.NET MVC 3
Carson63000
1
На момент написания этой статьи Node.js не поддерживался IIS, но теперь это так.
Jcolebrand
5

Если ваши просто делают успокоительную архитектуру , используя CRUD репозиториев нет никаких оснований для порта существующего приложения для Node.js.

Если вы пишете новое приложение, которое выполняет REST и CRUD, могут быть веские причины использовать node.js с самого начала.

Это действительно зависит от приложения.

Например, лично я написал бы приложения REST / CRUD полностью в node.js, потому что это личное предпочтение. Узел отлично подходит для разработки, ASP.NET MVC был для меня раздражающей ограничительной средой.

Вердикт: оба инструмента выполняют свою работу. Если нет конкретных требований в пользу .NET или узла, используйте то, что вы хотите. т.е. это личное предпочтение.

Однако я могу перечислить некоторые из преимуществ обеих платформ.

ASP.NET

  • Интеграция Windows / .NET. Если вы хотите, чтобы ваш стек Microsoft был тесно связан и высоко интегрирован, вам нужен .NET
  • легкодоступная рабочая сила
  • Монолотические рамки, которые держат вашу руку
  • Имеет набор функций, которые работают из коробки. Если вы довольны этими функциями, это повышает производительность. Если вы хотите использовать пользовательские функции, вы в конечном итоге боретесь с инструментом и снижаете производительность.

Node.js

  • Единый язык для всего вашего веб-стека (если вы используете базы данных noSQL, которые используют js для своих «запросов», таких как couch / mongo).
  • Отлично подходит для мягких веб-приложений реального времени, использующих такие инструменты, как socket.io
  • Отлично подходит для сетевого соединения, когда все, что делает ваш сервер - это общение с n удаленными конечными точками различных типов.
  • Только дает вам минимальные функции из коробки. Это означает, что вы можете создать свое приложение в соответствии с вашими потребностями.
  • Коллекция небольших инструментов в стиле Unix, которые хорошо выполняют одну вещь и одну, которую легко смешивать и сочетать
  • npm : управление пакетами сделано правильно
  • богатое сообщество Open Source
Raynos
источник
Да, не смотря на портирование существующих приложений. Думая о приложениях, которые появятся в будущем.
Чейз Флорелл
5
@Raynos должен добавить отказ от ответственности, что он евангелист Node.js и никогда не создавал веб-сайт на основе MVC3 / 4. (Я думаю, что это отражается в ответе).
Мэтт Эш