2009-05-21 5 views
6

私たちは、XML、JSON、および潜在的に他のコンテンツタイプを提供する、私たちの会社のためのRESTful APIを構築しています。文書化された、安定した、安全でスケーラブルなWebアプリケーションフレームワークとは何ですか?

私のチームがあるフレームワークを見つけるために探している(優先順位のために):

  1. 十分に文書
      良いチュートリアルと理想的
    • 、そして繁栄のコミュニティとナレッジベース
  2. 合理的なデザインパターンに従う
    • フレームワークにency。呼び出すメソッドに基づいて変更されない命名規則。このの安定
      • パート
    • 、GETの検証のいくつかのフォーム、POSTを実行PUTとDELETEに開発者を強制的に変数に焦点を当て
  3. セキュア
    • 成熟しているという意味で、フレームワークがあまり頻繁に変化していないということです。
    • 他の部分はscarily
      • を指向巨大
    • スケーラブル/パフォーマンスではありません十分に文書バグリストである私たちは、世界中の重要な高可用性を必要と50Kを超えるユーザーを持ちます。私たちのアプリケーションがダウンすると、人々は自宅にインターネットを持っていません。だから非常に重要な環境です。
    • 理想的には、10台のサーバーで同じコードベースを起動し、ロードバランスを追加することができます。我々は、単一のMSサーバーを持たないLinux/MySQLの環境
      • とよく....どのメソッドにあるサーバーを定義する必要がありますする
    • 統合を望んでいません。我々はそれを変更していない。申し訳ありません。ネットのファンは、私がこれに漠然とした目標を実現

を:-D。これらのニーズをすべて満たしているフレームワークはありません。実際、様々な形、形、形でそれらを満たす多くのものが存在するでしょう。

これは言語に依存しません。 PHPでの経験はすでにありますが、PythonやRuby、Javaを習得することはできます。

+7

in flamewar。また、wiki。 – Will

+0

そのリストは優先順位が高いですか?また、それらの一部をどのように測定しますか?パターンの使用を合理的にするものは何ですか? –

+2

私は閉会に投票します... –

答えて

5

私はここで手足に出て、SinatraでRubyを提案します。

なぜですか?

  1. シナトラは「十分に文書化されていませんが」「よく文書化されています」。他のフレームワークよりはるかにシンプルであることを考慮すると、かなり多くの文書化をする必要はなく、WebサーバとしてRack上に構築されているため、いくつかの共通の文書を共有しています。しかし、あなたが知る必要があるのはウェブサイト上にあり、よく書かれており、私が見つけたエラーは含まれていません(IE、最新です)。

    あなたが知る必要があるものの大部分は、Sinatra BookReadme、およびFAQです。本書の進行中の性質にもかかわらず、その内容は非常に正確で有用である。そして、あなたがまだ質問に悩まされているなら、IRCのチャットルームfreenode.net#sinatraにお立ち寄りください。

  2. Sinatraは機能/ルートベースのロジックメソッドで使用することも、Sinatra :: Applicationオブジェクトをオーバーライドすることもできます。いずれかを使用したり、ロジックとメソッドをさまざまなファイルに分割したり、すべてを1つにまとめることができます。それはすべてあなた次第です。

  3. Sinatraは、それ自体が安全です。 Sinatraは、構文解析とそれを渡す以外に、Sinatraがどのように有効であるか気にしないので、ユーザーが送信したすべての変数を検証する必要があります。したがって、変数の有効性を強制するか、または後悔します。 ;-)

  4. Sinatraは過去4ヶ月間に束を変えていませんが、確かにメンテナンスとマイナーアップデートがありました。さらに、私はバグリストが大規模であるか脅威であるとは見当たりませんでした。それは私のアプリを作るのに既に必要な事実をすべて持っている。

  5. Sinatraは乗客と一緒に配備する必要はありませんが、簡単にカスタマイズすることができます。 Enterprise RubyThinのようなものを使用する場合は、NginixまたはLightHTTPdのいずれかにプロキシすることができます。 2つのサーバーを使用した場合、1つをプライマリ(プロキシとスレッド数)にし、2つ目をデータベースサーバー(MySQLとスレッド数で)にして、それらを緩めることができます。このようにして、タスクはサーバーに分散されます。それはあなたが私が旅客が思うよりも制御を与えるでしょう。

    私は、Rack、Mongrel、またはThinのいずれかで実行中のスレッドと比較して、パフォーマンスが比較的低いPassenger(on Dreamhost)を見つけました。つまり、ロードされると、その環境でもアプリケーションは応答します。もし私がそれを予測しようとしていたとしても、コードを再デプロイしてスレッドを再起動するだけで、アプリケーションのスケーリングに問題はありませんでした。– Capistranoに入れることはできません。

  6. Ruby on Linuxは高速で実装に問題はありません。 Rubyを使ったMySQLは簡単ですが、ActiveRecordSequelのようないくつかのORMパッケージがあります。 Sinatraは、あなたが嫌うものを選ぶことはありません。

ご質問の回答に加えて、私はいくつかの理由があります。

  1. シナトラは簡単な学習曲線を持ち、ピックアップが非常に簡単です。私が持っていた最大の問題は、Rackが古いバージョンだったのでDreamhostサーバーに取り込もうとしていたのですが、Rackのベンダー版では問題はなくなりました。できれば、Sinatraの最新のRailsプロジェクトをActiveRecordで書き直し、メンテナンスを容易にしました。すでにあまりにも多くの努力が費やされていました。

    使いやすさと学習しやすさのおかげで、すべてのコードジェネレータを使用したRailsよりもコードジェネレータなしでSinatraの方が生産性が向上しました。それは何かを言っている。

  2. SinatraはミドルウェアをRackに対応しているため、これを使用してできることに非常に柔軟性があります。

  3. IRCでSinatraコミュニティの有用性を平均化すると、平均的なRailsユーザー–よりもフレームワークについての知識が豊富だと思います。なぜなら、Railsは初心者やビジネスプログラミングをしていない人にとってより使いやすいからです。

  4. シナトラはRuby 1.9をサポートします。私はまだSinatraに現在1.9のサポートがどれくらいあるのか完全にはっきりしていませんが、最初はRackを待っていたことを知っています。 As of April 25これはもはや問題ではないので、恐らくSinatraは1.9のために準備されているでしょう。 2009年中頃に1.9のサポートがパイプラインに入っているという事実を知っていますが、どれくらいの期間かかるのか分かりません。

    Sinatraは、少し努力してSinatraを動作させることができます(バージョン0.9.2はすでにRack 1.0をサポートしていますが、Rackのコードではプロキシ1.9)、1.9をサポートするpublic 1.0の前に、Ruby側は恒星でしょう。あなたができない場合でも、エンタープライズRubyはスピードを助けます。

+0

Grr、リンクを修正できません。私のメッセージは、1つの不正なリンクによって虐殺されています! –

+0

私は最近Sinatraに恋しました。ヒントをありがとう:)。 RESTフレームワークに最適です! –

0

このようなフレームワークがあれば、それは唯一であると思います。

+0

私は反対票が厳しいと思います:私は、明確な選択があったならば、 。 – annakata

+0

@Arnis L.、私は同意する –

+3

質問がある、私は答えを与えた。私は票を求めているわけではないが、 –

1

正解を知るためにすべてを試してみてください!

「すべてを統治するための1つのフレームワーク」を提案している人々は、それらをすべて試してもいません!

0

PHPの場合、私はZendフレームワークを愛しています(実際はフレームワークではありません)。そのうちの1つは、各コンポーネントが他のコンポーネントから独立していることです。そのため、一部のコンポーネントがある場合は使用しないでください。また、JSONと言います... Zendは双方向でJSONを完全にサポートしています....

0

Ruby on Railsはプラグインが多数記述されており、スケーラビリティで既にテストされています(BaseCampとその他​​のレールのソリューションを参照)

0

は、Javaを考えているなら、私はJerseyをお勧めします、それは素晴らしい作品と私​​はそれがいずれかのルートがあると言うのは難しいの優先順位のあなたのリストを見ると、すべてのあなたの5つのゴール...

0

に到達したと思います"正しい"道を行く。 PHP側では、あなたが探しているものの多くを達成するCakePHPでかなりの時間を費やしました。しかし、PHPを嫌う男であることから、私はその分野の何かを明らかにすることを提案します。

すべてのスタイルと経験についてです。私はRuby On Railsを使用しました。これは、言語の中で最もエレガントではありませんが、例外的にうまく機能します。 Java上でSpring/Hibernateスタックを使用したり、ほぼすべてのことをすぐに処理する.Netを使用するほど成熟していませんでしたが、例外的にうまく機能します。私はJava/.Netベースのプロジェクトが好きです。なぜなら、それは私がプログラムしたいと思うようにはるかによく合うからです。

"正しい"答えはありません。良いものはたくさんあります。例えばASP.Net MVCは良い選択です。永遠に前に、私はSpring on Javaを使いました。これは仕事を達成するのにかなり効果的でした。 PHPでも間違った選択ではありません。 Ruby On Railsは2つのプロジェクトでしか実行できませんでしたが、これは非常に簡単に実行でき、他の言語ではかなり複雑なタスクがかなり簡単になります。

3

スケーラビリティは簡単に得ることができません。 Googleのような応答時間の場合は、MapReduceのようなものが必要です。 OK。あなた自身を育てないでください、超スケーラビリティは初心者のためのものではありません。

他の点については、Seasideが明らかに最適です。セキュリティに関しては、seaside.stをチェックして、私が知っている他のすべてのフレームワーク(RailsやSeamなど)よりも本質的に安全である理由を確認してください。シーサイドは合理的に文書化されていますが、シーサイドの内部を見ることもとても簡単で便利なので、コミュニティは答えが出にくいです。シーサイドは長年にわたって安定していたので、あなたはそれでうまくいくと思います。

パフォーマンス指向の場合:商用のSeaside、GLASSを実行すると、統合されたはるかに高速なデータベースソリューションと、速度とパフォーマンスの面でメモリを交換するフレームワークのために、LAMPのような設定に比べて素晴らしいパフォーマンスが得られます。多くの速度を得る。

シーサイドは、多くの人々がシーサイドアプリケーションをデスクトップアプリケーションよりも簡単に書くことができるように非常によく設計されています。それを試してみてください、あなたはそれを愛するでしょう。

PS:記録のために、シーサイドはRESTfulではありません。

4

Djangoのドキュメントはの方法のRuby on Railsのドキュメントよりも優れているとは思っていますが、 Djangoのドキュメンテーションは、という驚くべきもので、何も短くはありません。(ここでは双曲線ではありません)。

私はDjangoのスケーラビリティについては分かりませんが、私はRailsがかなりうまくスケールされていることを知っていますが(ポイントまで)、Djangoについて言えることは分かりません。

Djangoはまた、持っている;(私はちょうど私がジャンゴを使用して大きなアプリケーションを書いたことがないよう、私は正直には、を知らないことを言っている私はことができないことを言っていません。) a pony、もしあなたが秘密にそれを望む場合には、

+2

実際、Railsのスケーラビリティは広く疑問視されています。 Djangoはこの面でより良い記録を持っています。どんなフレームワークも確実にある時点で「壁」を持っています。 – Javier

+0

Railsの「スケーラビリティの悩み」が過大評価されているとは思うが、私は「一点まで」と言ったのだ。大部分のサイトでも、大規模なものであっても、大丈夫です。 TwitterのRubyに関する問題は注目されていますが、Twitterには、大部分のサイトでも(大規模なものであっても)対処する必要がない、狂ったバックエンドのものがあります。 – mipadi

+0

ポニー(とよく作られた点)の+1 – annakata

0

膨大な量のドキュメントでは、J2EEに勝てないと思います。それはまた、微妙に拡張可能で安定していると考えられています。

さて、そこから本当に望ましいことに....

2

あなたがDjangoは、Pythonのframworkを見てすることができます。 これは非常によく文書化されたフレームワークで、データベース上に自動CRUD管理者インターフェイスがあり、それはもちろん無料で本を買うことができます:

0

Javaがあなたのツールキットにある場合は、 。

ロックの安定した、熱狂的な、壮大なコミュニティはありません。グッドドキュメント、期限が切れているものもありますが、システムは「古いもの」であっても安定しています。本物の素敵な、最近の(昨年末の)本。縞模様は、この本が「すべてをカバーする」ことができ、十分であるほど小さい。

これはアクションフレームワークであり、プレゼンテーションエリアではあまり機能しません(ほとんどの場合フォームを保存し、完全にオプションのテンプレート/レイアウト機能を備えています)。 JSPやFreeMarkerを使うことができます。 Webサービス(Jerseyのようなものではないが)も行うことができる。

バックエンドには依存しませんが、JPA統合プロジェクトがあります。

最後に、必要に応じて、他のすべてのJava/Java EEキットを活用することができます。 Stripesはスタック全体を消費しないので、必要な部分を選択して選択する柔軟性が非常に高くなります。フルボートJava EE、トランザクション、セッションBeans、JMS。 JPA、iBatis、Hibernate、raw JDBC、Lucene、JSR-170コンテンツリポジトリなど、Springと連携して動作します(Springの「意識」です)。

これは素晴らしいキットです。

-1

それは2014年の答えのために、高性能のWeb開発フレームワーク

0

あるcppcms

を試してみて、私はLaravel /スリムフレームワーク(PHP)、レール/シナトラ上のRuby(ルビー)を、推薦しますDjango/Flask(Python)、Grails(Groovy、JVMベースの言語)、Play!フレームワーク(Java/Scala)またはSails.js/Kraken.js(Javascript)。

上記の最初のフレームワークは少し大きく、2番目のフレームワークは2つのフレームワークについて「/」を使用する言語では少し小さくなっています。

これは、5年後に同様の疑問がある人に役立つことを願っています。

関連する問題