Use-cases untuk node.js dan c #

10

Saya melakukan sedikit pekerjaan ASP.NET (C #, MVC), tetapi sebagian besar adalah pengembangan web biasa. Saya melakukan arsitektur Restful menggunakan repositori CRUD. Sebagian besar klien saya tidak memiliki banyak persyaratan canggih dalam aplikasi mereka.

Saya sekarang melihat node.js dan ini implikasi kinerja (saya kecanduan kecepatan), tapi saya belum menggali terlalu banyak.

Saya ingin tahu apakah

  • node.js dapat secara realistis menggantikan pengembangan web tipikal saya di C # dan ASP.NET MVC (tidak menulis ulang aplikasi yang sudah ada, tetapi ketika mengerjakan yang baru)
  • node.js dapat melengkapi aplikasi ASP.NET MVC dengan menambahkan beberapa kebaikan async ke arsitektur yang ada.

Apakah ada use case untuk / terhadap C # dan node.js?

Edit

Saya suka ASP.NET MVC dan saya sangat senang dengan ke mana arahnya. Hanya mencoba untuk melihat apakah ada kasus penggunaan khusus yang akan mendukung

Chase Florell
sumber
Ya, saya menyadari ini bisa menjadi percakapan yang lebih besar ketika menyertakan Ruby, atau PHP, tetapi untuk pertanyaan khusus ini, saya tidak tertarik pada salah satu dari itu ... itu hanya saya.
Chase Florell
Jawabannya adalah, coba simpul. Baca tentang itu. Lihat apakah Anda menyukainya.
Raynos

Jawaban:

11

Saya sekarang melihat node.js dan ini implikasi kinerja (saya kecanduan kecepatan), tapi saya belum menggali terlalu banyak.

Profil, profil, profil. Itulah satu-satunya cara untuk mengetahui bahwa speedup Anda memiliki pengaruh yang tepat. Anda dapat menebak bahwa itu cukup cepat. Tetapi kebanyakan orang suka mengoptimalkan secara prematur. Itu lebih buruk daripada bermain dengan dirimu sendiri selama kencan.

Saya bertanya-tanya apakah node.js dapat sepenuhnya menggantikan pengembangan web tipikal saya di C # dan ASP.NET MVC, apakah lebih baik sebagai pelengkap C # dan ASP.NET MVC, atau jika ada beberapa hal yang harus "tinggalkan dengan cukup baik saja ".

Apakah ada use case untuk / terhadap C # dan node.js?

Tentu, jika Anda berada di toko yang secara rutin menulis kode dalam C #, maka Anda harus menggunakan MVC (ini jauh lebih baik daripada WebForms, dan disebut WebPages). Anda tidak akan kehilangan banyak waktu untuk pelatihan perkakas, dan itu adalah sesuatu yang harus ditangani oleh alur kerja Anda.

Apa yang tampaknya tidak Anda sebutkan di atas adalah alasan untuk memilih masing-masing. Anda telah memberikan dua opsi pasar saat ini, satu masih dalam tahap Alpha, yang lain pada tahun ketiga penuh dari rilis platform. Saya tidak ingin membandingkan model pengujian mobil listrik saat ini dengan hibrida Honda yang sudah ada di pasaran. Mereka berada di dua liga yang berbeda.

Sekarang, inilah alasan bagi Anda untuk menjauh dari node.js, jika secara nominal Anda adalah toko C #.

Saat ini Anda tidak bekerja di i / o yang tidak sinkron, saat ini Anda bekerja dalam format prosedural.

Itulah kebalikan dari apa yang akan dilakukan simpul untuk Anda.

Namun, jika Anda sering menulis kode async dalam C #, dan Anda sering menggunakannya dalam gaya yang ditunjukkan, maka ya, node.js sangat penting untuk Anda pertimbangkan.

Inilah yang Anda akan menyerah:

  • IIS - Ini sebenarnya penting bagi banyak orang. Hal-hal seperti integrasi A / D asli sudah dilakukan, dan cukup bebas bug. Sebenarnya node.js sekarang terintegrasi dengan baik dengan IIS.
  • Tempor cukur silet - Jika Anda telah melakukan C # MVC serius, maka Anda menggunakan dan mencintai Razor dan seberapa cepat Anda bisa mengocok semuanya. Ada template serupa di node, dan saya tentu saja tidak mengetuk node, tetapi seluruh toolchain sudah ada di C #, dan banyak dari itu saat ini sedang dibangun di dunia node. NB: banyak alat ini sekarang agak matang _
  • compile-time building dlls - node.js umumnya dikompilasi dengan cepat, artinya, tidak semua jalur diperiksa saat startup. Sangat mungkin untuk memiliki kode yang benar-benar buruk di simpul yang tidak pernah disentuh, diperiksa, atau diuji oleh siapa pun.
  • Semua alat saat ini dibangun ke dalam VS yang Anda gunakan setiap hari - Hanya ada tidak banyak dukungan VS untuk javascript. Sebagian karena semuanya dalam javascript sangat dinamis. NB: Microsoft jelas bekerja pada dukungan tooling untuk javascript _

Inilah yang akan Anda dapatkan:

  • semua yang Anda kembangkan akan menggunakan bahasa yang sama, dengan asumsi Anda melakukan scripting sisi klien dan juga sisi server. (atau mengapa Anda bahkan mempertimbangkan javascript di server)

Jadi, karena saya tampaknya membenturkan Node di sini sepenuhnya, izinkan saya menunjukkan bahwa simpul adalah bahasa bermain saya di rumah, saya menyukainya, dan saya membantu orang-orang men-debug-nya kadang-kadang di server obrolan stackoverflow (kamar 642). Saya melihat bahwa ia memiliki potensi besar dan menakjubkan di masa depan.

Saya hanya mengatakan, jangan membuang bayi itu dan bertanya-tanya mengapa air mandinya kotor.

Anda belum memberikan alasan mengapa Anda harus melepaskan pengalaman bertahun-tahun dan memulai sesuatu yang baru. Apakah alat yang buruk? Tidak semuanya. Keduanya hebat dan membuat pengembangan mudah.

Bisakah simpul mengganti C #? Ya, tentu saja. Begitu juga PHP atau Java atau Ruby. Anda tidak bertanya tentang itu.

Inilah cara Anda tahu kapan Anda siap memprogram node.js alih-alih C #:

  • Anda sedang mempertimbangkan untuk menulis buku untuk membantu orang lain "mendapatkan javascript" alih-alih program lama yang membosankan yang telah mereka tulis sebelumnya dalam C # dan lain-lain
  • Anda punya masalah dengan sinkron (pemblokiran) I / O menghentikan aplikasi Anda dari melakukan pekerjaan yang sebenarnya.
  • Anda tidak menggunakan perpustakaan APA PUN di C # selain dari MVC default dan itu hanya untuk routing, dan Anda cukup yakin bahwa Anda dapat melakukan mesin routing yang lebih baik, dan Anda mengkodekan segala sesuatu yang sedekat mungkin dengan logam.
  • Setiap objek data yang Anda desain Anda lihat sebagai hash bukan objek yang sangat diketik.
jcolebrand
sumber
1
Saran saya, tulislah tiga atau empat situs web kompleks di node.js. Mulai dari yang kecil, kemudian menjadi lebih besar.
jcolebrand
1
Saya tidak kuliah / universitas. Saya telah mengembangkan solo selama sekitar 8 tahun dan saya melakukannya dengan cukup baik untuk diri saya sendiri. Saya dapat membuat $$$ lebih baik sendiri daripada di bawah perusahaan lain.
Chase Florell
2
C # tidak mengkompilasi waktu memeriksa semua jalur kode. Itu tidak akan membuang sampai data buruk meledakkannya. Node tidak akan menghentikan pembangunan hanya karena kode yang buruk. Atau saya menggunakan versi lama dan itu berubah.
jcolebrand
1
@ Raynos: Razor bukan proyek sumber terbuka pihak ketiga, ini adalah mesin tampilan yang dikembangkan oleh Microsoft untuk ASP.NET MVC 3
Carson63000
1
Tetapi pada saat penulisan ini, Node.js tidak didukung oleh IIS, namun sekarang.
jcolebrand
5

Jika Anda hanya melakukan arsitektur yang tenang menggunakan repositori CRUD tidak ada alasan yang baik untuk port aplikasi yang ada ke node.js.

Jika Anda menulis aplikasi baru yang melakukan REST dan CRUD mungkin ada alasan bagus untuk menggunakan node.js dari awal.

Ini tergantung per aplikasi.

Sebagai contoh secara pribadi saya akan menulis aplikasi REST / CRUD sepenuhnya di node.js karena itu preferensi pribadi. Node bagus untuk dikembangkan, ASP.NET MVC adalah kerangka kerja membatasi yang mengganggu bagi saya.

Putusan: Kedua alat menyelesaikan pekerjaan. Jika tidak ada persyaratan khusus yang mendukung .NET atau node kemudian gunakan apa pun yang Anda inginkan. yaitu preferensi pribadi.

Namun saya dapat membuat daftar beberapa manfaat obvouis dari kedua platform

ASP.NET

  • Integrasi Windows / .NET. Jika Anda ingin tumpukan microsoft Anda menjadi erat dan sangat terintegrasi maka Anda ingin .NET
  • tenaga kerja tersedia
  • Kerangka kerja monolothic yang memegang tangan Anda
  • Memiliki serangkaian fitur yang berfungsi di luar kotak. Jika Anda puas dengan fitur-fitur ini, ini meningkatkan produktivitas. Jika Anda menginginkan fitur khusus, Anda malah harus berjuang melawan alat dan mengurangi produktivitas.

Node.js

  • Bahasa tunggal untuk seluruh tumpukan web Anda (jika Anda menggunakan basis data noSQL yang menggunakan js untuk "kueri" mereka seperti sofa / mongo).
  • Bagus untuk aplikasi web real-time lunak menggunakan alat seperti socket.io
  • Bagus untuk lem jaringan ketika semua server Anda lakukan adalah berbicara dengan titik akhir jarak jauh dari berbagai jenis.
  • Hanya memberi Anda fitur minimal telanjang di luar kotak. Ini berarti Anda dapat membangun aplikasi sesuai keinginan Anda.
  • Kumpulan alat gaya unix kecil yang melakukan satu hal dan satu hal dengan baik yang mudah dipadupadankan
  • npm : manajemen paket dilakukan dengan benar
  • komunitas open source yang kaya
Raynos
sumber
Ya, tidak ingin port aplikasi yang ada. Memikirkan aplikasi yang akan datang di masa depan.
Chase Florell
5
@Raynos harus menambahkan disclaimer bahwa dia adalah penginjil Node.js dan tidak pernah membangun situs web berdasarkan MVC3 / 4. (Saya pikir ini tercermin dalam jawabannya).
Matt Esch