Web開発でクライアント側に急ぎます


10

過去数か月の間に、私はWeb開発におけるクライアントサイドスクリプトについて大きな興奮を感じました。しかし、サーバー側の技術は成熟しており、安定していて、バックエンド開発者に受け入れられていますが、クライアント側の技術は未成熟であり(つまり、大きなサーバー側のフレームワークに比べて)、多くの老舗の開発者には嫌われています。それにもかかわらず、最近では誰もがクライアント側の開発を行っています。個人的には、これらの大きなサーバー側フレームワークが2〜5年で消滅し、現在の傾向を見ると期待しています。

どうしてこんなことに?HTML5 / JSで開発された新しい「びまん性」のクライアント側の開発は、大きくてよく考えられたサーバー側のソリューションよりも優れているのでしょうか。


4
想定を検証するための情報源はありますか?Javascriptはインターネット自体とほとんど同じくらい古いので、サーバー側のプログラミングがすぐにどこかで行われることはないと思います。
tdammers 2012

1
明確にするために、私の仮定はフロントエンドに限定されています。UIロジック、レンダリングなどで、クライアント側へのシフトが見られます。もちろん、サーバー側がなくなることはありませんが、REST-api(または、SOAP)に削減されます。
BrunoSchäpper2012

3
このシフトは行き来します。新しいフロントエンドの開発は、新しいクールなテクノロジー(Shockwave、Flash、JavaFX、Flex)が導入されるか、大きな新しいjsフレームワークが「世界を引き継ぐ」ようになると(motools、jqueryなど)、通常人気が高まります
Andrzej Bobak

1
@VainFellowman:クライアント側のスクリプトでSOAPを使用したくありません。オーバーヘッドが多すぎて、解析が面倒であり、動的型付け規則を備えたJavascriptはSOAPの型情報をとにかく活用できないので、あまり勝てません。
tdammers 2012

1
@tdammers欲しくない、本当は欲しくない。SOAP over HTTPを使用しても意味がありません。RESTはほとんどすべてに適しています。
BrunoSchäpper、2012

回答:


7

これは本当です:

Web開発でクライアント側に急ぎます

しかし、それはクライアント側に限定されず、完全なスタックの動きです。

これは驚くべきことかもしれません。聞いてください。

どうしてこんなことに?HTML5 / JSで開発された新しい「びまん性」のクライアント側の開発は、大きくてよく考えられたサーバー側のソリューションよりも優れているのでしょうか。

まず、両方ともよく考えられています。

第二に、それが良いからです。

良い質問。

しかし、「より良い」とは主観的なので、あなたの質問に対する答えは、具体的には何がより良いのでしょうか。

質問に再度アクセスしてください:

HTML5 / JSでの「拡散」クライアント側の開発は、大きなサーバー側のソリューションよりどのように優れているのでしょうか。

Because small is nimble.
And big is clunky.

柔軟性です。

大したことではないようです。そうですか?柔軟性。

ただし、柔軟性がすべての根底にあります。柔軟性の1つの改善-すべてを改善します。

保守性。拡張性。スケーラビリティ。モジュール性。使いやすさ。UX。

そして、それは実装するのが速いです。これが現実です。より速く、より良い。

This is why Windows 8 made JS a first-class citizen.

HTML5-JSは流行ではなく、なくなることはありません。タブレットにコンピューティングコンテンツとインタラクション動作を提供するために成長するテクノロジーの種を見ているだけです。タブレット。

スマートフォンは、1950年代のテレビ以来、最速のマスメディア採用でした。今、私たちはスマートフォンを持っているだけでなく、タブレットも持っています。

MozillaおよびWindowsですでに開発が進んでおり、市場の将来のデバイスで動作するOS-> HTML / JS。

多くのソリューションとイノベーションが残っています。

柔軟性に基づいて、JSの完全なスタックが出現しています。

お役に立てば幸いです。


1
正解です。しかし、サーバー側のフレームワークも同じ利点を約束しますね。
BrunoSchäpper、

1
はい、サーバー側フレームワークは同じ利点を約束します、はい。知っておく必要があるのは、新興技術には予期せず発見された追加の利点があることです。ioの最低レベル(c)です。スレッドは待機します。JSでは、コールバックがあります。待ちません。したがって、最低レベルでのio最適化があります。この実現は、現在、Microsoftによって広く採用されています。それが彼らのOSがJSである理由です。最後のポイントとして、これはすべてのレベルで最適化とメタ最適化をもたらします。言語が柔軟だからです。単純に見えないもの。知られていない。お役に立てば幸いです。
ジャックストーン

1
この回答は最も完全なものであるため、この回答を受け入れることにしました。他のすべてには良い点がありますが、これが最も決定的です。みんな、ありがとう!
BrunoSchäpper12年

9

この物語には、常に2つの側面があります。サーバー側とクライアント側のコードには、それぞれ長所と短所があります。

クライアント側のスクリプトの利点は次のとおりです。

  • サーバーのラウンドトリップなしで、応答性を高めることができ、広範な変更が可能です。
  • コードはクライアント上で実行され、サーバー上のリソース使用量を減らします。
  • ロジックとプレゼンテーションの分離は物理的になります。
  • 特に要求ごとの認証が使用されている場合は、負荷分散が容易になる場合があります。

ただし、サーバーサイドスクリプトには多くの利点もあります。

  • コードを実行するマシンを制御します。
  • ほぼすべてのことが可能です。サーバーで実行できる場合は、スクリプトでも実行できます。
  • ユーザーはスクリプトを実行する前に変更することはできません。
  • ユーザーはスクリプトブロッカーを使用してスクリプトが実行されないようにすることはできません。
  • ユーザーはスクリプトの動作を見ることができず、出力を観察することしかできません。
  • このコードは、スクリーンリーダー、テキスト形式のWebブラウザー、検索エンジンスパイダー、スクレイパー、アキュムレーター、IRCボット、超低価格のマシン、スクリプトブロックされたブラウザーなど、想像できるすべてのクライアントで確実に機能します。
  • ユーザープラグインが壊れる可能性は低くなります。

非常に動的なWebアプリケーションの場合、クライアント中心のアプローチが常に人気のある選択肢でした。これは、適切なレスポンシブデスクトップのようなユーザーエクスペリエンスを提供する唯一の方法であるためです。クライアント側のスクリプトなしでは、ユーザーのすべてのアクションにラウンドが必要です。トリップ、つまり少なくとも0.5秒の遅延、通常はそれ以上の遅延。しかし、基本的にはデータベース(Wikipediaなど)から提供される一連の静的ページである情報サイトの場合、利点はわずかですが、サーバー側スクリプトの利点は依然として圧倒的です。

観察された誇大広告は、最近の2つの進展の組み合わせから来ています。

  1. HTML5とその関連技術のコロナ。時間がかかりすぎましたが、ハックを積み上げることなく動的なデスクトップのようなWebアプリケーションを作成するために必要なすべてを含む標準と、それらを適切に実装する主流のブラウザーがついに完成しました。
  2. 利用可能な処理能力。今日の一般的なデスクトップPCはエントリーレベルのWebサーバーと同じくらい強力で、顧客グレードの携帯電話は事実上2005年のデスクトップコンピューターであり、最新のJavaScript実装はパフォーマンスバランスを調整するのに十分効率的です。今では、クライアント側のリソースはサーバーよりも安価です。リソース。

実際、サーバー中心のアプローチとクライアント中心のアプローチのどちらが優れているかという点では何も変わっていません。変更された点は、クライアント中心の方法がより簡単で安価になり、数年前よりもパフォーマンスが向上し、以前よりもはるかに多くのアプリケーションで実行可能な選択肢になることです。


難しい真実... +1。
ジャックストーン

8

サーバー側は常にあります。あなたはすべてのためにクライアント側に座ることはできません。たとえば、製造現場の天井クレーンからリアルタイムでパラメーターを送信するマイクロコントローラーにBackbone.js MVC設計を使用したくない場合があります。

誇大広告を信じてはいけない。


教えてください。Windows 8のJSは誇大広告ですか?-1。私は最初の点に同意しますが、誇大広告に関するあなたの2番目の点は説明が必要です。
Jack Stone、

JSはクライアント側専用ではなく、しばらくの間使用されていません。
Erik Reppen 2013

@ClintNash ya、実際に。Msは、j'sがwin8アプリを構築して、そのプラットフォームの潜在的な開発者数を増やすことを可能にしました。デスクトップテクノロジーよりもそれらのテクノロジーを学ぶことを選択した人々への対応。しかし、すでにc#/ wpfを知っているリビジョンとして、私はhtml / jsを使用してwin8アプリを作成する理由はないと思います。
Andy

@ErikReppenこれは本当ですが、jsだけではサーバー上でそれをカットできません。組み込みのフレームワークが必要です。正直、サーバーでスクリプトを使用したいという欲求が私を困惑させます。私たちはすでにそれをしました、それは古典的なASPでした、そして私はその経験を繰り返すことを本当に望んでいません。
アンディ

@AndyクラシックASP(特にWebフォーム)では、絶対に再度アクセスすることを望まないツールを使用するのに不幸を抱えていたJS開発者との合意に終わりはありません。しかし、これは過去十年で最も愛されていないタグベースのサーバーサイドスクリプティングツールであり、おそらくこれまであらゆるレベルの人気を博した最も激しく軽蔑されたシンクライアントソリューションです。それをPythonのようなものと比較すると、サーバー側のJSは人々に馬を入手するように指示することになります。
Erik Reppen、2014年

6

2009年に、サーバー側のPHPフレームワークからサーバー側のWebサービスに関連付けられたクライアント側のExtJSソリューションに切り替えました。

私にとっての移行の理由は次のとおりです。

  1. サーバー上のエンドポイントとコードの量を減らすことにより、セキュリティを向上させます。
    Webサービスに移行することで、Webサービスの境界で入力を検証し、サーバーのI / Oをより正確に制御できます。セキュリティアーキテクチャを混乱させるサーバー側のUIレイヤーはありません。
  2. サーバーラウンドトリップ
    の減少によるパフォーマンスの向上アーキテクチャが変更され、データフェッチの頻度が減り、データをローカルにキャッシュできるようになり、UIレンダリングでラウンドトリップをまったく必要としません。往復は、Webアプリのパフォーマンスを低下させるものです。
  3. UI
    のキャッシュ機能によるパフォーマンスの向上UIレイヤーはCDNで完全にホストできます。UIコードをHTML5アプリキャッシュに押し込むことで、オフラインのウェブアプリも構築しました。
  4. UIの忠実度が高い(クライアント側の豊富なコントロール)
  5. サードパーティの開発者は、自分のフロントエンドが使用しているのと同じAPIを使用できます。また、機能を共有している場合、モジュール間でAPIを簡単に再利用できます。
    これは、開発、QA、ドキュメントなどが少ないことを意味します...
  6. PHP、Python、JavaよりもJavaScriptでのプログラミングが好き

しかし、間違いなく、今起こっていることは誇大広告です。それは吹き飛ばされ、多くのウェブアプリは再びサーバー側のUIアーキテクチャを使用します。


何、誇大広告?-1 Windows 8がJSを一流の市民にしたときの幸運。はい、おそらくnode.jsで記述されたサーバー側UIアーキテクチャ。ノンブロッキングなので、学ぶ必要があります。
ジャックストーン

すぐにシッククライアントソリューションに戻るとは思いません。しかし、プレハブWeb UIを書き出すよりも複雑になった問題(つまり、元の計画に関係なくすべての問題)についてExtJSを使っていた場合、代替案が理想的ではないように見える理由がわかりました。
エリック・レッペン、2014

6

クライアント側のソリューションに対する熱意を駆り立てているもう1つの要因は、モバイルアプリの成長です。クライアント側のJavaScriptとAJAXに基づいてWebサイトを作成し、ネイティブのiOSアプリとAndroidアプリも構築する場合、3つすべてが同じRESTサービスを使用して、データのすべてを実行することができます。 。


よく言った... +1。
ジャックストーン

確かに非常に良い点です。
BrunoSchäpper、2012

4

まず第一に、ユーザーはサーバーではないものを認識しません(場合によっては気にしません)。サーバー側のコードがどれほど上手く記述されていても、クライアントの部分がうまく機能していなければ、ユーザーはアプリケーションに感謝しません。場合によっては、機能よりも素敵なUIの方が重要なことがあります。

大きくて強力なサーバーホスティングは非常に高価です。一部のロジック(検証を除く)をクライアント側に実装する方がはるかに安価です。したがって、それほどロードされないため、より小さな(したがって、より安価な)サーバーホスティングを使用できます。

これらは、不安定性にもかかわらず、クライアント側のテクノロジーの人気が高まっている理由です。さらに、JSとHTML / CSSは(ほとんど)すべての最新のブラウザーでサポートされています。

アプリケーションのこれら2つの部分は、別々に存在することはできません。そして、インターネットは近い将来どこにも去っていかないようです。
それもなくなるとは思いませんbig server-side frameworks。それらを買う余裕があり、その重要な利点を利用する企業は常に存在します。


4

クライアント側のWeb開発は、Webブラウザーと時間の経過とともに変化するWebブラウザーと強く結びついています。現在提供しているソリューションは、Webブラウザーのページレンダリングエンジンの大幅な変更により、数か月で機能しない場合があります。一部のブラウザは標準と互換性がないか、互換性がなかったため、期待される結果を得るためだけに開発者からさらに多くの労力を要求されました。

この問題を修正しようとするいくつかの解決策があります。たとえば、jqueryを使用すると、スクリプトはこの特定のjqueryライブラリでサポートされているブラウザで動作することが保証されます。しかし、一部/ほとんど/すべてのブラウザとの互換性を提供するのは、作成者次第です。問題は、どのチームがあなたをより良くサポートするかです。motoolsチーム、jqueryチーム、その他のチームですか?特定のWebブラウザーをサポートしていない場合、プロジェクトはそのブラウザーで機能しない可能性があります。

あなたが持っていると思われる興奮は長い間あります。Shockwaveとその後継のFlashが導入されたときに私はそれを見ました。最初にmotoolsで、次にjqueryで複雑なjsライブラリが出荷されると、豊富なユーザーインターフェイスの「大きな復活」がありました(この順に使用し始めました)。FlexとJavaFXがありました。しかし、市場で大きなシェアを獲得することはできません。プラグインを必要とするプラグインもあれば、エンドユーザーをセキュリティの脆弱性にさらす場合もあれば、カスタム設定が原因でクライアント側で機能しないものもあります(クライアントのブラウザでJavaScriptが無効になっているなど)。

一方、サーバー側のソリューションは通常、1回だけ記述されます。すべてが失敗することを心配する必要はありません。新しいFirefox / Chrome / IE / Operaが出荷されたら、書き換える必要があります。クライアントがアプリを改ざんしたり、データを破損したりすることを心配する必要もありません。


1
その純粋な想像力ではないですか?いつかはHTML / JS / CSSを生成する必要がなくなるため、クライアントが変更されたときにサーバー側のものを変更する必要があるかもしれません。
BrunoSchäpper2012

1
さらにもう1つ、「クライアント側のWeb開発はWebブラウザーと強く結びついている」-Webテクノロジーは、標準に準拠している限り、アプリケーションをブラウザーに結び付けずに標準を実装している限り、公式の標準です。それほど昔ではありませんでしたが、実際にはそうではありませんでしたが、現時点ではそうです。
BrunoSchäpper、2012

まず最初に、一部のブラウザがどのようにして標準に準拠していないかを読んでください(たとえばInternet Explorer)。SOmeは時間の経過とともに変化しましたが、IE7を使用しても、自分が書いたものを解釈する独自の方法が原因で恐ろしい問題が発生しました。また、ブラウザ間の互換性に関するいくつかの記事を読んでください。この問題は、すべてのWebブラウザーベンダーが標準に従う場合には存在しません。第二に、データセットが変更された場合、ビジネスロジックを変更する必要がありますが、それは明らかです。しかし、新しいIEが出荷され、新しいブラウザーでコードを機能させるためだけに約30%のコードを書き換える必要がある場合-何か問題があります
Andrzejボバク2012

もちろん、私はそれがどれほど苦痛であるかを知っており、すべてのブラウザですべてを機能させることができました。しかし、この作業はサーバー側でもクライアント側でも行う必要があります(とにかくブラウザーを使用する必要があるため)。私は確かにあなたの2番目の点に同意します。ただし、30%が書き換えられるとは思いません。いくつかの変更が必要かもしれませんが、私はそれが昔のように悪いとは思えません。一方、サーバー側のスタックを置き換える場合は、サービスレイヤーに基づいてすべてをやり直す必要があります。したがって、サーバー側の実装と非常に密接に結びついています。おそらくUIの上部からモデルまで。
BrunoSchäpper2012

-1

あなたの感情に絶対に同意してください。私はまた、あなたが言っている以上に、RESTの劇的な低下と、サイトがサーバーと通信する主な方法のためのWebソケットの大幅な増加を見ることになると信じています。Vert.x、Node.jsなど。サーバー側だけでなくクライアント側も、イベント駆動型プログラミングに移行しています。Java EE、PHP、Railsなど。すべて適応する必要があります。そうしないと、すぐに失われます。


説明がなければ、他の誰かが異なる意見を投稿した場合、この回答は役に立たなくなる可能性があります。たとえば、「RESTの劇的な低下やWebSocketの大幅な増加は見られない」などのクレームが投稿された場​​合、この回答は読者がこれらの異なる意見を選ぶのにどのように役立ちますか?それをより良い形に編集することを検討してください
gnat
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.