「単一ページWebアプリ」のアーキテクチャガイドライン


12

「シングルページ」Webアプリケーションを構築するためのサイドプロジェクトを開始します。アプリケーションはリアルタイムである必要があり、変更が発生するとクライアントに更新を送信します。

これらの種類のアプリケーションのアーキテクチャに関するベストプラクティスアプローチに役立つリソースはありますか。私がこれまでに見つけた最高のリソースは、ここではtrelloアーキテクチャの記事です:http://blog.fogcreek.com/the-trello-tech-stack/

私にとって、このアーキテクチャは非常にセクシーですが、おそらく私の特定のニーズのために過剰に設計されています-私は同様の要件を持っていますが。サーバー側でサブ/パブに煩わされる必要があるかどうか、私は何かが起こったときにサーバーから更新をプッシュするだけではいけないのかと思っていますクライアントに更新を送信します)。

技術的には、おそらくNode.JSまたはRubyでこれを構築しようと考えていますが、アーキテクチャのガイドラインは、基礎となるサーバーテクノロジーにある程度適用されるはずです。

回答:


5

Backbone.jsなど、このためにクライアント側のMVCを明確に検討します。非常に軽量ですが、アプリケーションに必要な構造を提供します。Backboneの詳細を知る最速の方法として、Peepcodeスクリーンキャストを強くお勧めします。

このようなクライアント側のMVCの優れたアーキテクチャ上の利点は、RESTを介した構造化JSONなど、サーバー側とのデータ交換に向かってより簡単に移行できるという事実です。

Backbone.jsはすぐにこれをサポートします。クライアントとサーバー間でモデルをJSONとしてシリアル化できます。これにより、要求/応答の観点から考える必要がなくなります。

このモデルでは、サーバー側のNode.jsのようなものが魅力的です。このモデルでは、データをプッシュおよびプルするための、非同期で潜在的に短時間のリクエストが大量に発生する可能性があります。

代替案.... Cometのようなモデルは、web pub / subを実現する簡単な方法であり、これをサポートするサーバー側フレームワークがいくつかあります。


乾杯、私は間違いなくクライアント側にMV * FWを使用することを考えていて、バックボーンについて学んでいます。良いヒント。
マットロバーツ

1

フロントエンドには、おそらくMV * javascriptフレームワークを使用します。私自身は単一ページのWebアプリケーションを作成しており、多くのソリューションを調査した後、Backbone.jsに移行しました。このソリューションは、すぐに使用できる機能をほとんど提供していませんが、最初に中核となる基盤を提供してくれ、他のソリューション(私にとって重要なもの)よりもはるかに柔軟です。

他の一般的なソリューションはEmber.jsとKnockout.jsです。これらはすぐに使用できる機能を提供しますが、thT機能を使用するには慣例に従う必要があります(機能する場合と機能しない場合があります)。


1

これは非常に簡単なIMOです。フロントエンドのAngularJSは素晴らしいからです。NodeJS / express / SocketIOは、pub / subの良さと最小限の手間で、ダイナミックでセクシーなバックエンドを実現します。ボーナスとして、表と裏に1つの言語を使用できます!

同じhttps://github.com/hackify/hackify-serverの実装例を確認してください

注意点として、sockjsと呼ばれるSocketJSに代わるNodeJSを推奨している人もいますが、私はこれをチェックアウトしていないのでお勧めできません


0

あなたが見ているもののような音があるのApache 2.2PHPTomcatのアプリケーションサーバーたハンドルを要求単純なサーブレットで。大工さんのハンマーと釘に相当します。複雑なことは何もありませんが、作業は完了します。機能を拡張する必要がある場合、Tomcatはjspとjsfを必要に応じてサポートできるため、いつでも拡張できます。

フロントエンドに関係するものについては、jQuery UIと組み合わせてページに機能を追加する手段として非常に便利であるため、jQuery$ .post$ .load$ .ajax)を使用するだけで快適です。


0

リアルタイムのクライアント更新が必要な場合は、長いブロッキングの「AJAX」呼び出しを実装するか、できれば最新のWebソケットを使用する必要があります。これらは、接続されたクライアントに更新をプッシュすることを可能にし、それは少しのJavaScriptによって処理されます。

現在の最先端(または最新の流行)はGoogleのAngularJSであると理解しています。その一部は、SPAの作成を容易にするように設計されています。


0

リアクティブにする必要のある単一ページのアプリケーションを構築するために、平均スタック(node.js、mongo ...)に近いものが必要な場合は、meteorを選択します。特にプロトタイプを構築してゼロから始める場合。

角張ったフロントエンドを備えたRailsは大丈夫な選択ですが、特定のgemをインストールし、いくつかのロングポーリングライブラリまたはsockjsライブラリを連結する必要があるため、「変更が発生したときにクライアントに更新を送信する」のは困難です。 。

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