2011-07-05 10 views
2

DotNetNukeモジュールとしてウェブサイト全体(約10ページ)を開発する必要があります。このサイトでは、DNNをCMSとして使用しています。編集者は、ほとんどのWebサイトでHTMLコンテンツを管理します(このセクションは私が開発する予定はありません)。ウェブサイト全体をDotNetNukeモジュールとして

私は既にDNNモジュール開発に関する広範な研究を行っています(DNN Corpによって記録されたいくつかのWebセミナーを見たこともあります)。残念ながら、私がオンラインで見つけられるもののほとんどは、単純なウィジェットのようなモジュールを開発することです。また、ほとんどはDNNの仕組みを理解しようとしている間に、ステップバイステップの「Visual Studioを使用してxを実現する」アプローチを使用しています。だから、私はすでにDNNと多少よく知っている、と私は私の問題には、いくつかの異なる解決策を参照してください。この時点で

...私は自分自身のためにそれを把握する必要がありそうです:

  1. ためのモジュールを作成します私のカスタムセクションのすべてのページ。私はこのアイデアが大変好きではありません。特に、複数のページにまたがって共有する必要があるコードがあるためです。
  2. 複数のユーザーコントロール(各ページに1つ)を含む単一のモジュールを開発し、カスタムモジュール設定を使用して、表示するコントロールを各ページに知らせます。
  3. ライブラリとして機能する「偽の」モジュールと各ページの追加のモジュールを開発します。
  4. ライブラリモジュールを開発し、ビューにRazor Host ModuleとRazorスクリプトを使用します(私のアプリケーションにWebフォームが必要ない/しないようにします)。

私はあなたにアドバイスを求めることにしました。どの方面に行くのが好きですか?おそらく上記のどれですか?私は上記4つの選択肢すべてが私に必要な結果を与えるべきだと知っていますが、私はまた、 "DNN方法"に反対したくありません...

答えて

4

#1(複数のモジュール)または#3(複数のモジュールもあります)、DNNモジュール開発者が広く使用している#2(1つのモジュールがビューを決定するモジュールレベルの設定)は確かに強固なオプションですが、#4(Razor)あなたは開発スタイルが好きなので#2以上。だから、

- 私はあなたがうまくアプローチを理解するようにそれはそうけれども、私は後世のために詳しく説明したかったカミソリのアプローチ、一緒に行くお勧めします:

  • ライブラリ(アセンブリ/ DLL)をビルドします再利用可能なすべてのビジネスロジックをカプセル化する
  • ロジックを使用してページ上にデータをレンダリングする各ページのレイザービューを構築する
  • 必要な各ページにRazor Hostモジュールをドロップして、正しいビュー

非常にうまくいくはずです。

+0

ありがとうございました。私はかみそりが気づくことをあなたに非常に知覚します。私はそうしますが、一方で時にはそれは不要な余分な層と思われます... – bfavaretto

+0

余分なレイヤーは?私はプロジェクトの目標/タイムラインについてあなた自身に尋ねるでしょう - これはもっと適切でしょうか?チームの他の人は誰ですか - 将来これを維持する人は誰ですか?どのような開発スタイルがより効果的でしょうか?ビューがかなりシンプルになるならば、Razorを使うほうが簡単かもしれません。複雑な場合は、適切なWebアプリケーションプロジェクトまたはWebFormsMVPモジュールを使用すると効果的です。 –

+0

私は[Christost DotNetNukeモジュール開発テンプレート](http://christoctemplate.codeplex.com/)を使用していますが、これはWebアプリケーションプロジェクトに基づいていると思いますか? 「余分なレイヤー」のことは、RazorにはC#ではできないものがないからです。あなたはこれを維持しようとしている人々に関して良い点を持っています。彼らはDNNを選んだのですが、私は彼らに好きなことについて質問しています。再度、感謝します。 – bfavaretto

1

"Webサイトプロジェクト"スタイルでソフトウェアを開発しようとしているとします。私は、あなたが "Web Application Project"スタイルのものを見ることをお勧めしたいと思います。

ライブラリに機能を共有している場合は、アセンブリを作成してそこからbinフォルダにドロップすると、DNNによってピックアップされ、httpコンテキストで実行されます。

1つのプロジェクトでモジュールをビルドし、DNNマニフェストにさまざまなモジュールをパッケージ化します。

私はあなたが何を理解しているのか話していません。


別の回答を追加しました。それ自体が投稿です。

+0

はい、私は通常、ウェブサイトプロジェクトのシンプルさが好きです(そのため、私はRazorも検討しています)。しかし、私は既にライブラリ/モジュールをコンパイルされたWebアプリケーションとして開発しています。モジュールのパッケージ化については、私はまだそれをしていません - そして、もし私が1つのモジュールを書くことになるのであれば、それは必要ではないと思いますよね? – bfavaretto

+0

はそれ自体がポストに値するので、答えを追加しました。あなたを近づけるはずです。 ウェブアプリを使用し続ける、そうです。パッケージを試してみてください。すぐに答えが出てくるはずです。 – karbonphyber

1

モジュール - これは、私たち全員が非常にゆるやかに使用している用語です。

鮮明定義

  • パッケージ= Zipファイル(モジュールではありません)
  • マニフェスト= .DNNが

ファイルマニフェストを使用して、モジュール(表示/編集/設定のグループ)を定義することができます単一のインストールパッケージとしてのユーザーコントロール。 DNN 3.0マニフェストで

、あなたはこの形式のままなら、あなたは上記のシングルを定義するようにするための基本的な単一のインストールパッケージは、この(簡単に)

<dotnetnuke version="3.0" type="Module"> 
    <folders> 
    <folder> 
     <name>Side bar Navigation</name> 
     <modules> 
     <module> 
      <friendlyname></friendlyname> 
      <cachetime>0</cachetime> 
      <controls> 
      <control> 
       <title>View</title> 
       <src>DesktopModules/Module/View.ascx</src> 
       <type>View</type> 
      </control> 
      <control> 
       <key>Settings</key> 
       <title>Settings</title> 
       <src>DesktopModules/Module/Settings.ascx</src> 
       <type>Edit</type> 
      </control> 
      </controls> 
     </module> 
     </modules> 
     <files> 
      ... 
     </files> 
    </folder> 
</folders> 
</dotnetnuke> 

のように構成されていることに気づくでしょうインストールパッケージ内のモジュールブログの文脈では

、あなたは2つのモジュール

  1. ブログディスプレイモジュールは、(選択されたブログや、単に全体の多くを表示する)必要があります
  2. サイドバーナビゲーションモジュールは、(あなたが するのに役立ちます

あなたができることはブログ表示Moduをパッケージ化することですファイルを<folder></folder>のマニフェストにコピーし、サイドバーナビゲーションモジュールを<folder></folder>構造の別のコピーにコピーします。

たとえば、このプロジェクトには7つのモジュールがあります。 (1 Webアプリケーションプロジェクトを意味する)サイドバーナビゲーション、カスタム検索モジュール、何とか何とか何とか

<dotnetnuke version="3.0" type="Module"> 
    <folders> 
    <folder>...</folder> 
    <folder>...</folder> 
    <folder>...</folder> 
    <folder>...</folder> 
    <folder>...</folder> 
    <folder>...</folder> 
    <folder>...</folder> 
    </folders> 
</dotnetnuke> 
  1. 1インストールパッケージのbin/
  2. に配置する
  3. 7モジュール
  4. 一つのアセンブリ
  5. すべてのコードは共有されているため、他のライブラリ参照を継承してさらに発展させることができます。

彼らは、KEYがパッケージにある異なるビュー、名前、フレンドリーネームが、すべての共有つの共通<foldername>

を持っています。

+0

これはとても面白いです!私は間違いなくパッケージについてもっと研究します。 DNN 5と同じマニフェスト構造が使えますか?また、あなたの例の中のすべてのモジュールが一つの共通* '' *を共有していると言うと、ディスク上にあるのでしょうか?あなたのXMLの例では ''タグが表示されないためです。 – bfavaretto

+0

もう1つ:あなたの投稿の最初のステートメントも重要です。私の研究では、モジュールを書く方法がたくさんあることがわかりましたが、私はまだ正しい方法を探していました*。それはここに質問を掲示するための主な動機であったかもしれません!達成する必要があるのは、単に「ビュー/編集/設定のグループ」だけではできないからです。 – bfavaretto

+0

はい、レガシーマニフェストをサポートしているのでDNN 5で動作するはずです – karbonphyber

1
<folder> 
     <name>BlogDisplay</name> 
     <friendlyname>Blog Display</friendlyname> 
     <foldername>WebLog</foldername> 
     <modulename></modulename>' 

    '<folder> 
     <name>BlogSidebar</name> 
     <friendlyname>Sidebar Navigator</friendlyname> 
     <foldername>WebLog</foldername> 
     <modulename></modulename> 

これは次のようになります。それはfoldernameです。 DesktopModulesのどこにモジュールをインストールするかを定義します。

DNN 5の書籍では、Webサイトプロジェクトの開発方法はまだ使用されていますが、コアモジュールの開発に参加しているときは、プロジェクトはWeb App Projectの開発スタイルになっています。すべてのコードビハインドがアセンブリ内にあり、Web上でソースコードとして公開されていないためです。

あなたは間違いなく正しい道にいます。

関連する問題