web-dev-qa-db-ja.com

ASP.NET Web API対Node.js

私が取り組んでいるWebプラットフォームを、ほとんどがC#で記述された他の非常に複雑なシステムに接続し始めました。私の経験のほとんどは、PHPおよびJavaScriptでのWeb開発です。また、WCFでWebサービスを作成した経験もあります。

悲しいことに、PHP Webプラットフォーム、遅い開発、非常に複雑な設定(JSONで応答し、RESTfulで動作するなど)のためのWCFサービスの作成で多くの困難を経験しました。

当然、私は他のテクノロジーに目を向け始めました。特に、Node.jsは私の目を引くものでした。これは、JavaScriptの経験が豊富で、Windowsサーバーが不要になるため、私にぴったりかもしれません。私の他のオプションは、もちろんC#でサービスを記述し続けることですが、代わりにASP.NET Web APIに切り替えます。この切り替えは、おそらくWCFからNode.jsへの切り替えよりもはるかに簡単です。

問題についての考えや提案はありますか? Node.jsでWebサービスを作成した経験のある人はいますか。良いチュートリアルの方向を教えてください。または私は道を進んでいて、WebサービスにNode.jsを使用するべきではありませんか?

36
Itay Weiss

私は最近、express.jsの作業を開始しました。心の弱い人向けではないことを教えてください。 「あなたがすでにJSに精通しているなら、それは戦いの半分です」という全体的な考え方。本当に真実から遠く離れることはできませんでした。 I.E.あなたが私のような筋金入りのdevops男なら。

すべてのasp.netアプリケーションのビルド、テストとカバレッジのレポート、展開、構成管理、コード品質分析をすべてセットアップおよび自動化するための統合ビルドプロセスがあります。新しいプロジェクトのビルドプロセスをセットアップし、テスト、分析、ステージング、および実稼働環境への出荷を行うには、文字通り5分かかります。 (実際、世界中のすべての開発者もそうである必要があります。しかし、ちょっと、冗談です。)それから、監視、ログ、パフォーマンス分析、およびプロファイリングがあります。繰り返しますが、すべてがうまく統合され、調整され、一元管理されています。

Node.js/express.jsにそれらが含まれているとは言いませんが、node.jsを実行するためだけに、完全に新しいサービスとプラットフォームのセットを開発/学習する必要があります。

大量のコードを破壊することは一つのことです。外国のテクノロジーで生産システムを実行することは、まったく別のことです。

トラブルahemを探しているのでなければ、チャレンジ:D、WebAPIに固執します。 WebDeployはゴッドセンドです。

ところで。 WCFエンドポイントでBasicHttpBindingを使用し、PHPを取得して、WSDLからクライアントクラスを生成します。はい。石鹸は、「残りを使いやすい」ではなく、答えです。 https://code.google.com/p/php-wsdl-creator/ 。WCFエンドポイントからWSDLをアーカイブすると、サービスシグネチャと形式の変更を正確に追跡できます。型の安全性を確保し、ser/deを処理します。対処する必要がない場合、メッセージの見栄えはあまり気にしません。そして、以前にPHP and python。完全に動作します。

46
Sleeper Smith

10年にわたる.net開発の後、私はNodejsを中規模のアプリケーションに使用したいと考えました。私は自分の経験を共有しています。

Windowsフットプリント

現在、新しいアプリのほとんどはクラウドにデプロイされています。 Asp.netには、Windowsが必要です。これは、モノを使用するLinuxで動作しますが、パフォーマンスについては十分に自信がありません。 Windowsサーバーだけでも750MB以上のRAMが必要です。コストを削減するために1 GBのメモリサーバーにアプリを展開したかったのです。だから私は小さなOSが欲しかった。 Linuxはそのために証明されています。この場合、Linuxが勝つため、ノードjsです。ただし、Windows Nano Serverは近い将来これに対処できると考えています。 Linuxで.Net(コア)が実行されるようになりました

.Net Core

.netコアが次のNode JSです。LinuxとMacでC#を実行できるようになりました。Unity、Xmarinはモバイルアプリやゲームも作成できます。 .netコア、フレームワーク、xmarin、Unityで動作可能なネット標準ライブラリ。

C#開発者にとって最適な時期。

コーディングが速い

Jsと同様にC#でもうまくコーディングできます。だから、これは私にとって問題ではありません...

コードの明快さ

これは重要な領域です。コードベースが大きくなると、JavaScriptですべてが複雑になります。ある人のjavascriptは別の人には読めない場合があります。多くの.netプロジェクトには大きなコードベースがありますが、簡単に読み取りおよびデバッグできます。通常の熟練したチームは、より良い方法でC#コードを管理できます。ノードjsの場合、チームはJSに高度に熟練している必要があります。平均的なプログラマーはJavaScriptを適切に読み取れない可能性があります。

シンプルさ

nodeJSは非常にシンプルで、dllなし、GACなし、クラスなしです。それは非常に小さなコードです。しかし、「コードの明瞭さ」は、私が書く行数よりも重要です。私にとってシンプルとは、コードを書くのではなく、読みやすくすることを意味します。コードベースが大きくなると、C#はJSよりも簡単だと感じます。

性能

これは議論の余地があります。両方のテクノロジーを使用して、パフォーマンスの良いアプリを作成できると思います。

オープンソースライブラリ

ここでNodejsが勝ちます。あまりにも多くのパッケージ、それはあなたの朝食の品種のトンのようなものです。欲しいものを選ぶのは大変でした。私はNodeJSのORMライブラリに1週間を費やし、Sequlizer、Sails、Knexを見て回りました。それらはすべて素晴らしいです。しかし、あるフレームワークから別のフレームワークにアプリを完全に再コーディングした人がいます。これは、すべてのフレームワークに何かが欠けていることを明確に示しています。これは、.netの世界では決して起こりませんでした。 DapperとService stack ORM liteに満足しています。

しかし、ノードjsにはより多くの選択肢があるので、適切に選択すれば、すべてうまくいきます。

Docker

Dockerはすばらしいものです。誰が「欲しくない」と言うでしょうか?これが私がウィンドウに求めていた主なものです。 Microsoftは既に何かをしていると聞きました。待って見る必要があります…

プラットフォームの移植性

Node jsは、ほぼすべてのOSで実行できますが、それは何ですか? 1種類のOSを使用します。 AWSは、Linuxのバリエーションをほとんど提供していません。私にとって、アプリがどのOSを必要とするかは問題ではありません。心配するのは費用です。この場合、WindowsとLinuxの価格はクラウドプロバイダーによってほぼ同じです。 Linuxが好きな唯一の理由は、フットプリントが非常に小さいことです。 Windowsはそうではありません。前述したように、Windows Nanoはこれに対処します。だから私はOk Windowsサーバーでアプリを実行する。

現在、.NetコアはLinuxで実行されるため、Dockerで実行されます。

最後に、C#とWeb APIを使用することにしました。主な理由は、私の既存の経験です。 ただし、次のアプリではノードjsを振り返ります。

もう振り返る必要はありません。サーバー側のC#を続行し、クライアント側のJSに対応します。

21
CreativeManix

両方のプラットフォームには長所と短所があり、最終的には両方が仕事をします。

ただし、両方を使用すると、Node.jsは単純さ、開発/展開の速度、およびすぐに使用できるパフォーマンスのために勝ちます-すぐに使用できる場合は、おそらく- そのためのパッケージ

Nodeは数年前から存在していますが、最近人気が出始めたばかりで、Microsoftが VSのツールサポート を大幅に改善しました。

19
James

クロスプラットフォームの移植性の必要性はどうですか? WindowsサーバーとLinuxサーバーの両方にデプロイできるWeb API/RESTサービスが必要な場合はどうなりますか?

WCF-Linux(まだ)(mongo ??)に行くことができないと思うコードは一度どこにでもデプロイできます。 xyz-これらすべてを提供できる他に何がありますか?

少なくともこのため、NodeJSのopをお勧めします

3
Vic