2

多種多様な Web 開発フレームワークが利用可能であるため、常に「何か新しいことを試す」という永続的なインセンティブがあるようです。そのため、あるフレームワークを別のフレームワークに交換し、最終結果に完全に満足することは決してないことに気付く人もいます。確かに、特定の Web フレームワークが完全に機能するニッチが常に存在します。しかし、たとえばデスクトップ アプリケーションの構築に C++、Java、または C# を使用することに決めた人はたくさんいます。Web 開発アプリケーションに関しては、同じことはまったく当てはまりません。Joel Spolsky はリンク テキストでこれに触れています。

そのようなフレームワークを構築するとしたら、機能要件はどうなるでしょうか? ここでの目標は、具体的な機能上の期待を列挙することです (もちろん、stackoverflow の投稿のために簡潔に定義されています)。その投票数に基づいてベストアンサーが選ばれます。

誰もが始められるように、以下は要件の部分的なリストです。これらの項目は、人々がそれらからより具体的な項目を導き出すことができるように、意図的にやや抽象的に残されていることに注意してください。

  • OOP の一貫性: サーバー側モジュールとクライアント側モジュールの間のシームレスなデータ交換とネイティブ オブジェクト表現: つまり、クライアント側 clientFoo()の関数: とサーバー側の関数:のオブジェクトをserverFoo()渡すことができる必要があります。マーシャリングを必要としないobj任意の型:T

    define clientFoo() {
        T obj = createObject()
        serverFoo(obj)
    }
    
    OR
    
    define serverFoo() {
        T obj = createObject()
        clientFoo(obj)
    }
    

これにより、すべての構成、クラス間結合、およびカプセル化セマンティクスを含め、ネイティブ オブジェクト表現がクライアント側とサーバー側の両方で同じでなければならないという要件が追加されます。基本的に、特定のクラスまたは特定のインスタンスがクライアント側に存在するかサーバー側に存在するかはまったく関係ありません。

  • 機能の一貫性: 機能とスレッドのシームレスな実行: クライアント/サーバー側で関数を作成し、実行のために境界を越えて渡すことができる必要があります。これには、マルチスレッドの統一サポート (クライアント側とサーバー側の両方で一貫して動作する必要があります) が含まれます。

    • 複数のアプリケーション セッションの相互運用性: ここでの完璧な例は、アプリケーション間の「カット アンド ペースト」です (上記の記事で説明したように)。ブラウザ内のテキストを別のブラウザ インスタンス (またはタブ) に簡単にコピーすることについて話しているのではありません。たとえば、MySocialApp の連絡先オブジェクトを YetAnotherSocialApp に貼り付けたい場合はどうすればよいでしょうか? この種のアプリケーション間データ交換は重要です。

    • 一貫性のあるクロス ブラウザ互換の UI : AJAX の「ダイアログ ボックス」、進行状況インジケーター、タブなどの作成はすべて、上記のクライアント/サーバー統合と同様に、フレームワークの残りの部分とシームレスな API を使用して実現できる必要があります。ああ、はい、すべてのブラウザーで同じように動作する必要があります (ブラウザーの違いは開発者にはまったく見えません)。

4

3 に答える 3

3

個人的には、次の優れた Web 開発フレームワークは本質的に「関数型」になると思います。つまり、関数型言語を使用し、すべてのビュー、コントローラーなどは機能的に同等になるでしょう。私たちはすでに Linq でこの方向に進んでいます。

Paul Graham によるBeating the Averagesを参照してください。この中で彼は、Lisp で Web アプリケーションを構築することにより、競合他社をどのように裏切ることができたかを説明しています: http://www.paulgraham.com/avg.html

于 2009-11-18T23:32:01.873 に答える
2

重要な部分が欠けています。

  • コードから表示ロジックを分離します。
  • コードベースからのデータ (公開コンテンツ) の分離。
  • どこでも走れる能力
  • フレームワークがどれだけ積極的に維持されているか。

そのため、出力用のテンプレートが必要です。それは xml や html などです。
単純なモデル ビュー コントローラー構造は
、SQL のテンプレート化と SQL インジェクションの停止の両方を可能にする優れたデータベース抽象化レイヤーとして便利です。
軽量フットプリント。
多くの異なる Web プラットフォームで実行する機能。(非専有が望ましい) 例: Apache (PHP)
は多くのサーバーに拡張可能: (セッションの保守など)
容易に拡張可能であること。
コミュニティに人気があります。

クロス ブラウザーの互換性は、選択した css、html、および ajax ライブラリによって主に決定されます。これは、Web 開発フレームワークとはまったく異なります。車輪の再発明をしないほうがよい..javascript ライブラリを選択することをお勧めします。(例: Jquery)

アプリケーションのコンテンツを維持しながら、コードをリポジトリに保存し、dev/test/ および実稼働バージョンで変更/ロールアウトする方法。多くの場合、フレームワーク内でコンテンツが混同され、開発を維持し、コンテンツを公開し続けることが非常に困難になります。コンテンツとコードの分離は非常に重要です。

于 2009-11-19T00:56:07.160 に答える
0
  • 完全なビュー/ロジックの分離: ビュー ファイルにプログラミング ロジックをコーディングすることは不可能です。 これが良いアイデアである理由についての良い議論があります
于 2009-11-18T23:25:42.647 に答える