2

私は、さまざまなサイトの設計とアーキテクチャについて調査/調査を行っています。一般的に言えば、今日 Web サイトで行われているさまざまなパターンとプラクティスについて読みたいと思います。

具体的には、コンポーザブルおよび/またはプラグイン サイトのデザインを探しています。この設定の主な目的は、各プラグインまたはサイトの一部を他の部分とは独立して開発できるようにすることです。うまくいけば、他の部分の実用的な知識がほとんどありません。認証と承認のピース間で知識が広がることはわかっています。主な目標は、サイトのセクション間の結合を制限し、サイトの他の部分へのコード変更の影響を制限することです。

私にはいくつかのアイデアがありますが、海賊版かどうかはわかりません。そのため、他の人が行ったことについてより多くの情報を見つけようとしています。

いくつかのアイデア。
アイデア 1 は、プラグインをデプロイできる MVC サイトを作成することでした。これを行うにはいくつかの方法があります。ここここここで見られます。プラグインは、メイン サイトと相互に依存して開発および実行できます。完成したら、ドロップインしてメインコアでテストできます。1 セットのマスター ページ、CSS、その他のもの。これは、ほとんどの CMS システム (例: wordpress) のプラグイン モデルに似ています。

2 番目のアイデアは、シングル サインオン デザインです。サイトのすべてのセクションは、独自のドメイン/サイト/ect としてホストできます。ただし、認証はサインポイントで行われます。これを行う方法に関するいくつかのアイデアは、ここで見ることができます。マスター ページ、CSS、およびその他の項目は、おそらく異なるセクション間で繰り返す必要があります。

そして 3 番目のアイデアは、この 2 つの組み合わせでした。「コア」サイトはスタイリングとレイアウトを処理します。コンテンツは、同じドメインでホストされているかどうかに関係なく、サイトのさまざまなセクションへの ajax 呼び出しになります。

私はまだこれらのアイデアを洗い出したり、プロトタイプを作成したりしていません。私はこのプロセスのブレインストーミングの部分にいます。確実に設定されている唯一のことは、C#/asp.net mvc で記述され、サイトのセクション間に 1 つの記号のみが存在する必要があることです。それ以外はすべて公正なゲームです。

4

2 に答える 2

1

RazorGeneratorを使用しています。これは NuGet (および VS ツールのインストール) を介してインストールでき、ビューにカスタム ツール プロパティを設定するだけで済みます。

コア サイトでは、仮想パス プロバイダーのアイデアを使用する必要があります。これには Chris van de Steeg のアプローチを使用できます。必要なコードはすべて、Chris van de Steeg が既に作成しているためです。

すべてを機能させる接着剤は 3 番目の点であり、間違いなく最も重要な点です。プラグインがエンドポイント (コントローラーとアクション) を「公開」できるようにするにはどうすればよいでしょうか? また、サイトの正しいコンテキストと場所でこれを行うにはどうすればよいでしょうか?

このために、さまざまなシナリオ用に大量のインターフェイスを公開するフレームワーク DLL を使用します。メイン サイトは、さまざまな種類のエンド ポイントのマネージャーを作成します。私は、マネージャーを呼び出してエンド ポイントを正しい場所にレンダリングするいくつかのレイアウトとヘルパー クラスを用意しています。アプリケーションの起動時に、事前定義されたディレクトリ内のすべてのプラグイン DLL を繰り返し処理し、リフレクションを使用してインターフェイスを検査してから、適切なマネージャーに追加します。

管理者がプラグインのデフォルトの動作をオーバーライドできるように、エンドポイントを無効にする「管理」エリアもサイトに作成しました。

私の知る限り、これまでの私の努力からも明らかなように、これを処理する既存のプロジェクトはありません。これがあなたの方向性に役立つことを願っています。

于 2012-09-06T16:37:55.420 に答える
1

上記のアイデア1で行きました。サード パーティの参照を必要としない ASP.NET MVC 用のプラグイン サイトを作成するサンプル コードを次に示します。また、プラグイン dll に埋め込むすべてのサイト コンテンツも含まれます。楽しみ!

https://github.com/Oobert/ASP.NET-MVC-Plugins

于 2013-08-06T13:13:47.213 に答える