サーバーで生成されたフロントエンドアプリケーションとは対照的に、Webアプリケーションでのクライアント/サーバーアーキテクチャの利点は何ですか


13

当社では、組み込みLinuxプラットフォーム上にWebインターフェースを構築する必要があります。2つのオプションがあります:HTMLとJavaScriptがサーバー側で生成されるテクノロジーを使用します(JSP、Grailsを考えますが、C ++を使用してHTML / JavaScriptを生成します)、またはHTML5 'クライアント'を作成しますJSONまたはXML生成バックエンドと通信するアプリケーション。

現在、Webアプリケーションは後者を使用する傾向があると感じていますが、そうすることの利点は何ですか(プロジェクトの開発者は、主にHTMLとJavascriptよりもC ++をよく知っているという事実に基づいて前者を選択します)


開発者がHTML + JSよりもC ++に精通している場合、なぜ以前のソリューションを採用したのですか?後者は、特に「HTML 5クライアント」をC ++デスクトップアプリケーションのようなリッチクライアント、またはJavaアプレットまたはJNLPでデプロイされたデスクトップアプリケーションに置き換える場合に、面倒さを軽減します。
シヴァンドラゴン

回答:


4

AJAX

あなたの質問は、「私のWebアプリケーションはクライアント側またはサーバー側でHTMLを生成する必要がありますか?」クライアント側の生成は、AJAXを使用してサーバーと通信しますが、X(XML)は一般にJSONに置き換えられていますが、ほとんどの人は、AJAXと呼んでいます。サーバー側では、サーバーはサーバー上でHTMLを作成します。

私はXMLについて多くの経験があり、JSONについてはほとんど経験がありません。XMLについて知っていることから、可能な限りJSONを使用することをお勧めします。

AJAXの長所:

  • HTTP(S)で送信するデータが少なくなるため、より高速に実行できます。
  • サーバーは基本的にWebサービスであるため、他のユーザー(またはユーザー)が独自のクライアントを作成できます。これは、サイトのモバイルバージョンを作成するときに役立つ場合があります。また、多くの発明は、作成者が意図しなかった理由で人気があります。サービスは、コードの新しい用途を見つけた人にとって使いやすいです。
  • 新しいアプリケーションのように見える

AJAXの短所:

  • JavaScriptのデバッグ
  • 複雑?
  • JavaScriptでできることは、視覚障害者や障害者が使用することは完全に不可能です。
  • より多くのコードの合計が必要になる場合があります(組み込みデバイスの全体的なストレージが大きい)

クライアントサーバー

すべてのWebアプリケーションは、クライアントサーバーアーキテクチャを使用します。HTTPプロトコルにより、Webアプリケーションは強制的にそのように動作します。AJAXはその設計上の制限のために回避策を使用しますが、HTTPの基本的な基本モデルは依然としてクライアントサーバーです。MVCをWebアプリケーションに適用するための最良の方法について、私はすべてにこだわることはありません。政治的な理由でMVCを実行する必要がある場合は、Ruby / Railsがどのように実行するかを確認してください。実際、Railsはコピー(または使用)するのに最適なアーキテクチャです。

サービスとアプリ。

優れたサービスは、ほとんどの場合、アプリケーションよりも優れています。しかし、良いサービスを作るのは難しいです!サービスの十分に設計された仕様を作成する前に、アプリケーションを作成する必要がある場合があります。あなたの仕事を必要以上に難しくしないでください。バージョン1では、優れたアプリケーションの作成に焦点を当てます。アプリケーションが比較的安定し、ユーザーの要件を満たしていることが確実になるまで、サービスを使用しても何の役にも立たないでしょう。間違ったサービスを設計するのが早すぎると、サービスインターフェイスを修正し、サーバーとクライアントの両方のコードの大規模なリファクタリングに対処しようとして無駄になり続ける時間の無駄です。

C / Web

ワオ。Web開発に切り替える前に、Cとアセンブリで3年間働いていました。特にセキュリティの観点から、Webアプリケーションを記述するのに悪い言語を考えることはできません。入力の検証と出力のエスケープは非常に重要です... SANSは毎年最も一般的なエラーのリストをリリースしています。バッファオーバーフロー、インジェクション、クロスサイトの問題(不適切な出力エンコーディング)...これらのエラーはすべて、Cまたはアセンブリで簡単に作成できます。少なくともJavaのような言語には、オーバーフローの影響を受けない文字列と、一般に1つずつのエラーによって悪意のあるコードがシステムメモリにアクセスできないようにする例外処理メカニズムがあります。国際文字セットの処理は言うまでもありません(可能な場合はUTF-8を使用してください)。

メモリまたはファームウェアの理由でCを使用する必要がある場合、それはあなたがしなければならないことです。注意してください!

ブラウザのサポート

Webアプリケーションを作成する最初のステップはクライアントが使用するブラウザーを見つけることです。 W3SchoolsWikipediaはどちらも一般統計の優れた情報源ですが、YMMVです。

現在、私が作業している場所では、アプリケーションが有効なXHTML 1.0トランジショナルHTMLのみを作成することを検証しています。また、IEのQuirksモードを回避するために必要な特定のDoctypeと書式設定を使用します。これにより、クロスブラウザーHTMLを記述しやすくなります(ブログのヒントを参照)。IEの最新3バージョンに加え、WindowsおよびLinux上のFirefoxおよびChromeでテストします(SafariはChromeと同じレンダリングエンジンを使用します)。この検証とテストにより、BlackBerryを除くすべての場所(Windows、Mac、Linux、iPhone、Androidなど)でアプリケーションが動作します。

BlackBerryにはJavaScriptを搭載した実際のブラウザがなかったため、サポートしていません。BlackBerryユーザーは、実際のWebブラウザーを持っていないことに慣れているため、文句を言いません。たぶんそれは変化していますか?使用しているブラウザを何人かのクライアントに尋ね、それらのブラウザでテストするようにします。

概要

すべてのWebサイトはHTMLとHTTPに基づいて構築されています。アプリケーションを作成しているときに、これらのテクノロジーに関する適切なリファレンスを入手してください。ツールキットを使用しても、アプリケーションを作成する過程で、これらのテクノロジーを解決するためにこれらのテクノロジーの基本的な理解が必要な問題に出くわします。

おそらく、CSSと画像圧縮に慣れて、見た目が良く、すぐに応答するものを作成する必要があります。JavaScript、Webサーバー、およびブラウザーは、最終的に必要となる追加の知識分野です。

サーバー側でHTMLを構築する場合、コードベースはおそらく小さくなり、JavaScriptを学ぶ必要はないでしょう。サーバー側モデルとは、プログラマーがHTMLを生成する(C?)コードを記述し、クライアントに送信される前に直接見ることができることを意味します。AJAXモデルは、プログラマーがHTMLを生成するJavaScriptを記述することを意味します。JavaScriptによって生成されたHTMLコードをブラウザー内で検証したり表示したりするための多くのツールを認識していないため、正しくプログラミングするのが難しくなっています。

私が現在働いているところでは、HTMLを生成するJavaScriptを生成するJavaコードをときどき使用するハイブリッドアプローチを使用しています。皆さんがWeb開発に慣れていない場合は、そこから始めることはできません。AJAXモデルを使用する説得力のある理由がない限り、古いサーバー側のHTML生成モデルから始めて、それがどの程度達成できるかを確認しなければならないと思います。


「ブラウザ内でJavaScriptによって生成されたHTMLコードを検証する、または表示するツールすら知らない」それがFireBugの目的(または、ChromeのWeb開発者ツールなど、他のWeb開発者ブラウザ拡張機能)です。
-sleske

13

後者には、「バックエンド」を一般的な「データサービス」にするという利点があります(コンテキストで意味するものは何でも)。

HTMLクライアントは、そのデータの多くの可能な消費者の1つにすぎません。iOSアプリ、Andriodアプリ、Windows 8アプリ、APIなどを、他の消費者と同じように考えてください。


また、両刃の剣になる可能性もありますが(APIに依存するため更新が難しくなります)、「ウェブ」と「APIコントローラーとビュー。FTWの懸念の分離。
シャウナ

6

Webアプリケーションの成長している一般的な方法は、両方の組み合わせで、どちらか一方の傾向があります。

最初のアプローチは、より伝統的である、年のためにあったと(C ++はそのための人気のある言語は一般的ではないが)そのはよく、文書化。

第二の選択肢は、より近代的で、そして最近で開発ブログやフォーラムに存在しています。その理由の1つは、同じアプリケーションを他のインターフェイス、モバイルAPI、サービスAPIに提供する必要性が高まっていることです。2番目のアプローチ、クライアントがよりリッチで応答性が高い傾向があります。

全体として、それはチームの親しみやすさ、ビジネスケースなどの他の制約に依存します。

オプションの評価に役立ついくつかの質問:

  1. チームは言語とプラットフォームの経験がありますか?
  2. チームは新しいアプローチとテクノロジーを喜んで学びますか?
  3. アプリケーションは、他のデバイス(iPhone、Android、Windows 8など)でより簡単にプログラムできるという利点を活用していますか
  4. サービスまたはデータと統合された他の内部または外部アプリは、アプリケーションで利用できますか?

5

このような「イントラネット」アプリケーションでは、ExtJS4でfat-client(JavaScript / HTML5-app + JSON)アプローチを使用します。

通常の「インターネット」ウェブサイトでは、より「古典的な」アプローチを使用します。

クライアントはとにかくサイトをレンダリングする必要があるので、プロセス全体で課金し、入力するデータを提供するだけです。応答を生成するためのサーバーコード(単純なJSONまたはXML)を単純に送信し、パフォーマンスを節約します。また、サーバーよりも常にクライアントの方が多いため、より多くの作業がクライアントによって行われる場合、システム全体のスケーラビリティが大幅に向上します。

クライアントコードはHTTPで配信されますが、あいまいな更新メカニズムなしで、ユーザーに新しいバージョンを簡単に送信できます。(HMTL / JS / CSSを置き換えるだけです)

通常のウェブサイトで古典的なアプローチを好む唯一の理由は、検索エンジンです。

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