クライアントとサーバーに同じ言語を使用することはどれほど重要ですか?


11

私は、ネイティブアプリに加えてWebサービス/アプリを持つモバイルプロジェクトのアーキテクチャソリューションを評価し、さまざまなライブラリ、フレームワーク、Meteorなどのスタックを見てきました。これは一種の「オープンスタックパッケージフレームワーク」です、Node.jsと緊密にバインドされています。

クライアント側とサーバー側の両方で同じ言語を使用する利点については多くの話がありますが、私はそれを理解していません。クライアントとサーバーの両方でWebアプリケーションの状態全体をミラーリングしたいが、他の利点を見つけるのに苦労している場合、ワークフローの効率性を理解できます。

クライアント/サーバー言語の同等性が聖杯と見なされる理由を理解しようとしています。ソフトウェア開発でクライアント/サーバー言語のパリティが重要なのはなぜですか?


12
特にJavaScriptが問題の言語である場合、これは必ずしも素晴らしいことではないと思います。
ラッティ

4
私はまだJSでひらめきの瞬間に到達していないため、サーバーコードを記述する理由を理解していないことを認めなければなりませんが、それは別のトピックです
Makita

1
Stack Exchange Programmersに初めて投稿していただきありがとうございます。賛成票の最大化と反対票の最小化の詳細については、FAQをご覧ください。あなたの質問は、特定の答えを持つものよりもチャットトピックに近いため、あなたは反対票を投じられたかもしれません。ここでのフォーマットに慣れるまでに時間がかかる場合があります。詳細が欠けている短い回答は、反対票を投じられます。トピックを議論する回答も同様です。質問または回答が具体的であるが十分に普遍的であり、適切な詳細量でトピックにヒットする中間点があります。
DeveloperDon

1
私もそれに反論します。サーバーとクライアントの両方に同じ言語を使用すると、通信でエンタングルメントと言語固有の機能のリスクが発生します。
ピーターB

3
@Makitaそれは妥当な質問だと思いますが、人々は例を求めるとき、下票に満足する傾向があります。元の質問の特定の部分を削除し、クライアント/サーバー言語のパリティが重要である理由に焦点を当てました。
maple_shaft

回答:


5

PRO側:

  • スキーマとコードを両側で再利用できる場合、同様のロジックとデータを一度だけ実装することで多くの効率が得られます。

CON側:

  • クライアントは主にマークアップ言語またはスクリプト言語に適したビューであり、サーバーは主に異なる言語により適したビジネスロジックである場合があります。

Web開発では、言語が急増し、システムの特定の部分のための強力なツールが作成され、開発者または開発者のチームが多くの専門分野を学ぶ必要があります。システム設計アプローチのシステムに従うトランザクション処理や組み込みシステムのような他の分野では、共通言語から節約できる場合があります。

新しいJavascriptフレームワークは非常に早く登場するようで、バックエンド用のAPIとフロントエンド用のツールをバンドルするためのいくつかの作業が行われています。クライアント側とサーバー側のコード間の柔軟性と懸念の分離を維持することは、特定のツールに長くかかりすぎずにそれらの間を自由に移動できるようにするのが賢明かもしれません。


14

おそらく、認識される利点は次のとおりです。

つまり、プロジェクトマネージャーのリソース管理が容易になり、技術的なメリットがほとんどまたはまったくありません(1つのトリックポニーをたくさん雇っている場合は、負の技術的なメリットもあります)。


1
サーバーとクライアントの間に「メンタル」な切り替えがないため、自分で開発している場合には利点があります。あなたが何かをするとJavaScriptでの巨大な経験を持っているしたい場合は、おそらく...より良く、より速く、このようになり、それはおそらく、すべてのget
K ...

また、サブシステムごとに異なる言語を使用することで技術的に不利な点はなく、おそらく利点があると言いますか?
マイケルボルグワード

1
@MichaelBorgwardtは、各言語がサブシステムに適していると仮定して、はい、技術的なデメリットはありませんが(どちらかというと利点ではないかもしれません)、チームのダイナミクスと採用に大きな影響があるかもしれません。もちろん、サブシステムの大部分はどの言語でも非常に簡単に実装できるので、この極端なことは期待していません。
jk。

これが悪い考えであるという意見は不当です。JavaScriptとを含むサーバー側の言語にコンパイルできる言語がたくさんありますLispの実際にはもちろんジョエルのブログ記事が賞賛SICPで使用される言語です。
back2dos

@ back2dosがそれを明らかにすることを願っています
jk。

2

利点は、双方の人々の専門知識とコードを(ある程度まで)再利用できることです。

開発者は、単一の言語を習得し、単一のプールを形成する必要があります。専門知識の2つのプールではなく。これにより、知識の伝達が容易になり、クライアント側とサーバー側の間で作業をより簡単に切り替えることができます。最後に、同じ技術的背景を共有しているため、技術的な問題を議論するときに「反対側」のチームメンバーとのコミュニケーションを促進します。

コード

クライアント側、アルゴリズム、またはその両方に何らかの状態があると便利な場合があります。時々、同じことが両側で行われます。マルチプレイヤーゲームの例を見てみましょう。クライアントとサーバーの両方でゲームの状態を表す必要があります。また、クライアント側(応答性のため)およびサーバー側(プレーヤーのアクションを検証するため)にルールを実装する必要があります。これらのことのためにコードを再利用できることは大きな利点です。...他のいくつかのアプリケーションでは、これはまったく必要ありません...それはすべてケースに依存します。

...もちろん欠点もありますが、それは別の投稿です;)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.