Подтвердить что ты не робот

ASP.NET Web Api vs Node.js

Недавно я начал подключаться к веб-платформе, над которой я работаю, в других довольно сложных системах, в основном написанных на С#. Большая часть моего опыта связана с веб-разработкой в ​​PHP и JavaScript И у меня также есть некоторый опыт написания веб-сервисов в WCF.

К сожалению, у меня было много трудностей с написанием сервисов WCF для моей веб-платформы PHP, медленной разработки, очень (очень) сложных конфигураций, чтобы хорошо реагировать на JSON и работать с RESTful и т.д.

Естественно, я начал осматриваться в других технологиях, в частности, попался на глаза Node.js, который мог бы быть идеальным для меня, потому что у меня довольно большой опыт работы с JavaScript, и таким образом мне не понадобится мой сервер Windows больше. Мой другой вариант - это, конечно, продолжать писать службы на С#, но вместо этого переключитесь на ASP.NET Web API. Переключатель, вероятно, будет намного проще, чем от WCF до Node.js.

Любые мысли или предложения в этом вопросе? Кто-нибудь имеет опыт написания веб-сервисов в Node.js и может указать мне в сторону хорошего учебника? или я ухожу, и я не должен использовать Node.js для веб-сервисов вообще?

4b9b3361

Ответ 1

Недавно я начал работать над express.js. Позвольте мне рассказать вам это не о малодушном. Весь менталитет "Если вы уже знакомы с JS, то эта половина битвы". действительно не могло быть дальше от истины. И.Е. если вы хардкорный дедупс, как я.

У меня есть единый процесс сборки для всех моих приложений asp.net, создания отчетов о тестировании и охвате, развертывания, управления конфигурацией и анализа качества кода, все настройки и автоматизация. Мне требуется буквально 5 минут, чтобы настроить процесс сборки вокруг нового проекта и протестировать его, проанализировать, устроиться и отправиться в производственную среду. (И действительно, так должны все разработчики в мире. Но эй, кого я шучу.) Затем там мониторинг, каротаж, анализ производительности и профилирование. Снова все хорошо объединены, организованы и централизованы.

Я не говорю, что node.js/express.js этого не имеет, но вам нужно разработать/изучить ПОЛНОСТЬЮ НОВЫЙ набор сервисов и платформы для запуска node.js.

Выбивать кучу кода - это одно. Запуск производственной системы по зарубежной технологии - это совсем другое.

Если вы не ищете проблемы, я имею в виду, вызов: D, придерживайтесь WebAPI. WebDeploy - это послание Бога.

BTW. Используйте BasicHttpBinding с конечной точкой WCF и получите PHP для создания класса клиента из WSDL. Да. Мыло - это ваш ответ, а не "простой в использовании отдых". Что-то вроде https://code.google.com/p/php-wsdl-creator/. Архивирование WSDL с конечной точки WCF также позволяет отслеживать с точками точности вашей подписки на услугу и изменения формата. Он обеспечивает безопасность типа и обрабатывает сер/де для вас. Мне все равно, как выглядит уродливое сообщение, если мне не придется с этим справляться. И да, я сделал это раньше с PHP и python. Работает безупречно.

Ответ 2

Обе платформы имеют свои плюсы и минусы, и, в конечном счете, оба будут выполнять эту работу.

Однако, используя оба варианта, для меня Node.js выиграли бы руки для простоты, скорости разработки и развертывания и производительности, которые вы выходите из коробки, - и если это не выходит из строя, большинство вероятно, там пакет для него.

Node существует уже несколько лет, однако он только недавно стал более популярным - настолько, что Microsoft значительно улучшила поддержка инструментов в VS.

Ответ 3

После 10 лет разработки .net, я хотел использовать Nodejs для приложения среднего размера. Я просто делюсь своим опытом.

След Windows

Большинство новых приложений сегодня развернуты в облаке. Для Asp.net нам нужны окна, хотя он работает на Linux с использованием моно, я недостаточно уверен в производительности. Только для сервера Windows требуется более 750 МБ оперативной памяти, я хотел развернуть мое приложение на 1 ГБ сервере памяти, чтобы снизить стоимость. Поэтому мне нужна крошечная ОС. Linux доказал это. В этом случае выигрывает Linux, следовательно node js. Однако я считаю, что Windows Nano Server может решить эту проблему в ближайшем будущем. Забастовкa >

.Net Core

Теперь ядро ​​.net - это следующий node JS. Он открыл дверь для запуска С# на Linux и Mac. Unity также позволяет создавать мобильные приложения. Теперь мы можем создать стандартную библиотеку .net, которая может работать на ядре .net, framework и Unity.

Лучшее время для разработчиков С#.

Быстрый код

Я умею хорошо программировать на С#, а также на js. Так что это не проблема для меня...

Ясность кода

Это важная область. Когда база кода растет, все становится сложным в JavaScript. Один человек javascript может не читаться другому человеку. Многие проекты .net имеют большую базу кода, но легко читаются и отлаживаются. Нормальная квалифицированная команда может лучше управлять кодами С#. Для node js команда должна быть высококвалифицированной в JS. Средний программист может неправильно читать JavaScript.

Простота

nodeJS очень прост, нет dll, нет GAC, классов нет. Это крошечный, действительно крошечный код. Но "Code Clarity" важна для меня, чем количество строк, которые я пишу. Для меня простота означает легко читаемый, а не быстрый код. Я чувствую, что С# проще, чем JS, когда база кода растет.

Производительность

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

Библиотеки с открытым исходным кодом

Здесь выигрывает Nodejs. Слишком много пакетов, это как тонны разновидностей в вашем завтраке. Мне было трудно выбирать то, что я хочу. Я провел неделю в библиотеках ORM для NodeJS, осмотрел Sequlizer, Sails, Knex, все они замечательные. Но есть люди, которые полностью перекодировали свое приложение из одной структуры в другую. Это ясно показывает, что в каждой структуре чего-то не хватает. Это никогда не случалось со мной в мире .net. Я доволен Dapper и Service ORM Lite.

Но у нас больше выбора в node js, поэтому, если мы правильно выберем, все будет хорошо.

Docker

Докер - классный. Кто скажет: "Я этого не хочу"? Это главное, что я хотел для окон. Я слышал, что Microsoft уже что-то делает. Мы должны подождать и посмотреть...

Переносимость платформы

Node js может работать почти на любой ОС, так что? Я собираюсь использовать один тип ОС. AWS предоставляет очень мало вариантов linux. Для меня не имеет значения, какая ОС требуется моему приложению, мое беспокойство - сколько это стоит. В этом случае Windows и Linux почти одинаковы по цене у облачных провайдеров. Единственная причина, по которой мне нравится Linux, - это очень небольшая площадь. Windows - нет. Как я уже говорил, Windows Nano будет решать эту проблему. Поэтому я готов запустить приложение на сервере Windows. Забастовкa >

Теперь ядро ​​.NET работает на linux, поэтому в докере.

Наконец, я решил использовать С# и web api. Главная причина - мой существующий опыт. Однако я буду оглядываться на node js для моего следующего приложения.

Больше не оглядывайся. Будет продолжен с С# для серверной стороны и будет реагировать JS на стороне клиента.

Ответ 4

Как насчет необходимости межплатформенной переносимости? Что делать, если необходимо использовать веб-службы api/REST, которые могут быть развернуты как на серверах Windows, так и на Linux?

WCF - я не думаю, что он может пойти в Linux (пока) (mongo??) WebAPI - Не могу пойти в Linux (я думаю?) NodeJS - Доступна кросс-платформа. Код после развертывания в любом месте. xyz - Что еще у нас есть, что может обеспечить все это?

По крайней мере, из-за этого я бы предложил op для NodeJS