web-dev-qa-db-ja.com

REST APIのC ++ Web開発

私は長い間C#開発者であり、ASP MVCに最も重点を置いていました。2年前は、基本的にコストが低く、導入/管理が簡単だったため、プロジェクトの移行を開始しましたLinuxはNode.jsを使用してHTMLを提供し、Monoはすべてのバックエンド操作を提供し、HTTP REST API。

Linuxのスキルがどんどん向上しているので、このNode.js/Monoの組み合わせは奇妙なものだと思います。 Monoはすばらしいことですが、言語よりも実装自体に関連する問題が時々あります。

今、私はプロジェクトの合間に3週間の余裕があるので、バックエンドとしてC++に飛び込みたいと思います。私はいくつかのPython=を試してみましたが、私はそれが本当に好きでしたが、私は最速の応答を必要とするため、C++が私にやってきたのはそのためです。Javaはオプションではありません。言語自体はC#にかなり近いです。私は本当に気になりたくないことがたくさんあります(1つはMavenに名前を付けます)。結局のところ、少なくとも私が生産性を向上させている間は、生産性が低下します。 Javaで効率的(ジャージーチュートリアル用にEclipseを構成するだけで2時間ほどかかりました!).

Node.jsがhtml/css/javascriptといくつかのリアルタイム通知(socket.io)を提供するだけなので、特別なことは必要ありません。私のバックエンドは、テーブルからの読み取り、複雑なSQL変換、およびクライアントが送信するデータの検証です。私が使用するテンプレートエンジンはJadeです。これは入力が少ないのでかっこいいですが、プレーンHTMLに切り替えてもかまいません。私のプロジェクトの仕事の99%は、JSON呼び出しを介してAngular.jsを使用して行われます。それらのほとんどは、クライアント上に多くのロジックを持ち、REST APIを消費する単一ページアプリケーションです。

私は本当にすべてのMono/.NET依存関係を削減し、Linuxにもっとネイティブなもので開発したいと思っています。同時に、APIと静的HTMLページを提供する1つのバックエンドと引き換えに、Node.jsに別れを告げたいと思います。

以前にここに来たことがある場合は、現在の選択肢と、この実験で私に役立つと思われるものを教えてください。

心配事を読んでいただきありがとうございます。

編集:カサブランカプロジェクトについて読んだことを言及するのを忘れていました。それは有望に見えますが、繰り返しになりますが、それは白いオープンソースのカバーの下でMicrosoftに属しています。

2
mau

私は最近、既存のアプリケーションにいくつかのWebサーバー機能を実装する必要があり、これに Mongoose を使用しました(実際には非GPLバージョンのCivetWebを使用しました)、非常に単純な埋め込みWebサーバー-2つのファイルを追加しますプロジェクト、オプションの読み取り、サーバー関数の呼び出し、各URLルートのコールバックの実装を行います。非常に簡単で、非常に高速です。

例えば。

CivetServer myServer(options);
myServer.addHandler("/route", new CallbackHandlerClass());

次に、ハンドラクラスにhandleGet()メソッドを実装します。クエリ文字列やそこで行う必要のあるものからパラメータを取得できます。

組み込みシステム向けに設計されていますが、より機能豊富な環境で機能しない理由はありません。当然のことながら、サーバーを再コンパイルしてから再起動する必要があるため、アプリケーションの拡張に問題が発生する可能性があります。この種のコンパイルされたネイティブコード環境では、スクリプトファイルを編集してサーバーにコピーする必要はありませんが、すでに.NETでそれに慣れています

さらに必要な場合は、利用可能なC++で記述された他のシステムがあります。 CppCMS は、ハンドラーを動的に変更できるように、共有オブジェクトの動的な再読み込みを可能にします。

または、Boostオプションを試すこともできます-boost :: asioには simple http server のコードが含まれていますが、シングルスレッドとして本番環境で使用する必要があるかどうかはわかりません(ただし問題はありません) node.js!)

全体として、組み込みのWebサーバーを使用した後は、単純にするためにそれを好むと思います。 ApacheまたはIIS環境を立ち上げて実行するために必要なすべての労力はなくなりました。サービスをコーディングして実行するだけです。

そして最後に、これをチェックしてください SO link これは、いくつかのC++ Webサーバーのいくつかのベンチマークへのリンクがあります。

3
gbjbaanb