0

学生がテキスト ドキュメントをアップロードして、閲覧権のある人 (教師/教授) が閲覧できるオンラインの宿題提出システムに取り組むことを考えています。この人は、このドキュメントに注釈を付けたり、マークアップしたり、強調表示したりして、このドキュメントをさらにレビューするために渡すことができます。レビューが完了すると、このドキュメントは適切なフィードバックとともに学生に返送されます。

ここには多くの動く部分があり、どこから始めればよいかを理解するのに苦労しています. このプロジェクトを演習として使用して、デスクトップのようなユーザーエクスペリエンスをサポートする完全にオープンソースのツールを使用して、スケーラブル/安全/高速な Web アプリケーションを設計していますが、UI フレームワーク (Vaadin) と言語 (Java) に加えて、私は少し持っていますこれをある程度進めるために必要なロードマップを理解するのに少し苦労しました。

SOの教祖がこれを通して私を指導してくれたり、正しい方向に向けて微調整をしてくれたりしたら、それは素晴らしいことです.

編集:返信ありがとうございます。これは、回答に記載されている標準の 3 層アーキテクチャです。大規模なスケーラビリティが必要であり、アプリケーションは主にドキュメント中心であり、後日検索を改良する必要がある可能性があるため、RDBMS から離れたいと考えています。当分の間、ドキュメント (*.txt としましょう) ファイルをいつでも大量のユーザーが投稿しているため、この大量の情報の流入を処理するには、ある種のメッセージ キューが必要です。ドキュメントをすべての形式で取得し、注釈とマークアップに適した形式で表示する、ある種の高速変換レイヤーが必要です....そしてリストは続きます。ドメイン モデルから始めて下に移動するのが理想的ですが、私は少し懐疑的です。

4

2 に答える 2

1

本当に「完全な答え」ではありませんが、うまくいけば、考えの材料になります。

私はこのプロジェクトを演習として使用して、完全にオープンソースのツールを使用してスケーラブル/安全/高速な Web アプリケーションを設計しています...

それは素晴らしいことです。私の質問は、なぜアーキテクチャについて心配するのかということです。自分自身をアーキテクチャの擁護者と見なしている人の発言が少し奇妙であることは認めますが、「アーキテクチャを学ぶ」ことと新しいテクノロジを学ぶことはどちらも大変なことです。たぶん、最初に 1 つに慣れてから、もう 1 つに取り組みたいですか?

「スケーラブル/安全/高速」なシステムを設計、設計、構築することは簡単ではありません。「現実世界の」ビジネス主導のケースでは、適合するシステム コンテキストと、ヒットする非機能要件があります。これらは、異なるテクノロジ スタックを示唆している可能性があります。さまざまな主要な要因が、物事への取り組み方や下される決定に大きな影響を与えます。もちろん、アーキテクチャはそれに基づいて構築されます。

編集:

あなたにとってより重要なことから始めます。次に、「他の」トピックに取り掛かると、学んだことや自分の仮定を常に確認していました。

2 つのテーマによっては、異なるアプローチを示唆する「相乗効果」が生じる可能性があります。私の一部は、基本的な理解を深めるために一方を十分に実行してから、もう一方を同様のレベルに引き上げてから先に進むことをお勧めします. そうすれば、より一貫性が保たれます。

私の別の部分は言います - 最も興味深いことをするだけです!

先に進む前に、特定のテクノロジー スタックの深さを調べるべきですか、それとも、ツールにとらわれない観​​点から適切な青写真を得る必要がありますか?

最初は、広くて浅い視野を得たいと思うことは間違いありません。特定の領域があなたにとって特に重要である場合は、もう少し詳しく説明してください。

それとも、技術的な制約のために設計図が変わるのでしょうか?

これは、「特定のテクノロジーがそのように機能する」ことを発見し、それが期待していたものとは異なる方法で機能することを発見した場合、これは設計図に影響しますか?

可能性はあります - そのため、関連するテクノロジの広範で浅い視野が、最悪の/最も明らかに悪い間違いを回避するのに役立つはずです。また、これを開始するときに何を見ているのかを知るのに十分な全体的な経験があること、つまり、設計に取り組む前に、より詳細な調査が必要な領域を認識できることも前提としています。

大まかに言えば、あなたがやろうとしているのは、パスのさらに先のオプションを制限していないことを確認することだけです.

于 2010-12-07T22:50:03.253 に答える
1

私はJavaの男です。この問題にどのようにアプローチするかは、

  1. データモデルを理解します。システムが使用するオブジェクトは何ですか。
  2. それに基づいて、データベースを設計します。Ibatis や Hibernate などの ORM フレームワークを使用できます (Ibatis には、テーブルにアクセスするためのほとんどすべての DAO を生成するコード ジェネレーターがあります。CRUD メソッドが提供され、その上に追加できます)。
  3. それが完了したら、サービス層の設計を開始できます。DAO をコントローラー (MVC パターン) に直接公開することはお勧めできません。これは、ビジネス ロジックが入る場所です。
  4. 利用可能な Web フレームワークの 1 つを選択します。最も人気のある Java Web フレームワークは Spring MVC です。Google Guice を試すこともできます。
  5. 最後のステップは、フロント エンドの設計です。あなたのプロジェクトにはたくさんの JavaScript が含まれると思います。JQueryまたはEXT JSを調べてください

これがあなたが始めるのに役立つことを願っています。

于 2010-12-07T16:16:00.143 に答える