2

フロントエンドサービス(視覚化)とバックエンドサービス(データ変換とバックエンドSQLデータベースからのデータの出力)の両方を提供するASP.NETアプリケーションがあります。私は次のことを望みます:

拡張可能なバックエンド 他の誰かが「プラグイン」をアップロードできるようにして、追加のRESTAPIを追加できるようにします

拡張可能なフロントエンド:現在、次のようなトップURLバーを備えたフロントエンドがあります。

Category-1   Category-2   Category-3
--App11      ---App21     ---App31
--App12

私は次のようなものを探しています:私のアプリにシンプルな管理パネルがあると仮定すると、誰かがマニフェストファイルと互換性のある「モジュール」をアップロードすると、アプリはそれをメインアプリケーションに追加し、ベースのカテゴリの1つへのリンクを追加する必要がありますプラグインマニフェストの内容について。必要に応じて、このプラグインの説明をメインアプリケーションのWebページに追加します。

具体的には、次のような提案を探しています。

  • メインアプリケーションはどのように構成する必要がありますか?
  • プラグインのアーキテクチャはどのようにすべきですか?
  • デザインのようなダッシュボードを有効にして、プラグインにサポートさせるにはどうすればよいですか?

私はこれをコンテンツ管理システムであるJoomlaで見ましたが、これを可能にするために従うべき設計パラダイムが何であるかわかりません。私はばかげたことをして、現在の(巨大な)アプリケーションをaspxメインアプリからリンクされた個別のファイルとして設計しました。一部を書き直してもかまいませんが、大幅な書き直しをしなくても、自分の望むことを実現できるのでしょうか。これを達成する方法について何か提案はありますか?

4

1 に答える 1

3

基本的な解決策:

ベアメタルにかなり近いですが、バックエンドの場合は、ロジックを含むdllを作成し、HttpModuleリクエストを処理するために新しいGenericHandlerを登録することができます。web.configを使用してプラグインモジュールを登録するか、web.configを変更せずにビンにコピーするだけで実行時にhttpモジュールMicrosoft.Web.Infrastructure.DynamicModuleHelperを登録するために使用します。

PortableAreas:

MVCContribには、「PortableAreas」と呼ばれる機能があり、UIとバックエンドコードをプラグインのようなdllにパッケージ化するために使用できます。MVCコントローラーは、UIのHTMLコンテンツ、およびJSONまたはXMLを簡単に返し、RESTWebサービスのように機能させることができます。また、MVCContribは、プラグインがホストアプリと通信するために使用できる「バス」を定義します。「ねえ、私を指すcategoryXYへの新しいリンクを追加してください!」のように。

ポータブルエリアに関する次のブログ投稿をご覧ください:mvccontribを介したasp net mvcポータブルエリア(MVC2について説明していますが、MVC3でも機能します)。最新バージョンは、nuget: MvcContrib.Mvc3-ciからダウンロードできます。

ASP.NETMVCは単なる「ASP.NET」です

したがって、WebフォームとMVCは同じアプリケーションに存在できます。「Webフォームアプリケーションでポータブルエリアを使用する」についてのこの記事をご覧ください。基本的には、MVC関連のdllと構成を既存のアプリケーションに追加し、通信を設定するだけです。

または、実際のCMSを実際に見てください。

おそらく、機能し、文書化されたプラグインシステムを備えたものを使用することが実際の解決策です。機能の何パーセントが「コアアプリ」の一部になるか、そして何パーセントがプラグインとして開発されるか、そしてあなたのニーズに依存します。

于 2012-06-12T22:22:41.993 に答える