質問

SharePointソリューションを作成するときに、エンタープライズレイヤーアーキテクチャを使用していますか?レイヤードデザインを見つけることができるCodeplex.com/otherサイトプロジェクトを例として教えてください。 (インターフェイス/BL/DAL)

役に立ちましたか?

解決

すべてのSharePointソリューションで層状アーキテクチャを使用し、SharePointを一般的にUI層として扱い、非常に薄く保ちます。すべてのロジックはビジネスモデルに入り、リストインフラストラクチャを抽象化するためにDALラッパーがあります(これもテストに役立ちます)。

asp.netの階層化されたアーキテクチャをよく読むには、この記事をご覧ください ここ. 。それはasp.netとnhibernateですが、原則は同じです。 .NETには層状アーキテクチャサンプルもあります ここ CodePlexで。繰り返しますが、SharePoint固有ではありませんが、原則は同じです。

SharePoint UIを薄く保ち、Webパーツコードのリストに読み書きを開始する誘惑に抵抗します。データベースのように扱います(そうです!)

他のヒント

ビルに同意します。

Webパーツ、Webコントロール、アプリケーションページなどは、元の呼び出しコンテキストの不可知論者のレイヤーを呼び出すUIレイヤーのみでなければなりません。呼び出しコンテキストは、イベントレシーバー、コンソールアプリケーション、タイマージョブ、ワークフローなどです。この共有レイヤーが常にspcontext.currentに依存していないことを常に確認してください。メソッドパラメーターおよびコンストラクターパラメーターとして、spwebs、splists、splisitemsなどを受け入れます。 Webコンテキストでは、これらをspcontext.currentから渡すことができますが、コンソールアプリケーションでは、これらを自分で構築できます。

デバッグの容易さ(F5を押すだけ)を改善し、開発者のフィードバックサイクルを短縮するために、コンソールアプリケーションで構築したSPWEBを渡すコアロジックを含むレイヤーを呼び出す単純なコンソールアプリケーションの書き込みをしばしば開始します。コアロジックが終了したら、コンソールアプリを置き換えるために薄いWebControlまたはWebPartを書き込み、コンテキストからSPWEBを作成する代わりに読み取り、イベントハンドラーなどをセットアップします。

bilとjaap(または他の誰か)に

レイヤー間でどのタイプのオブジェクト/インターフェイスを渡すのだろうか? splistitemを渡すのですか、それともsplistitemを表す何らかのインターフェイスを渡しますか?

SharePointは、ユーザーが実際にWebインターフェイスを介してデータ構造を変更する機能を持っているため、奇妙な獣です(リスト内の列を追加/削除/変更できます)。オブジェクト/インターフェイスを渡すと、ユーザーによってリストが変更されるたびに、新しい列(プロパティ)に対応するためにコードを再コンパイル(および展開)する必要があります。 SplistItemを渡すと、データソース(SharePoint)に直接アクセスできるようにすることで、実際にレイヤーを破壊します。

ライセンス: CC-BY-SA帰属
所属していません sharepoint.stackexchange
scroll top