-1

IT ラボ サポート組織が提供するキャンパス内のさまざまな場所の連絡先情報を必要とするイントラネット アプリケーションがあります。連絡先情報を含むエンタープライズ ディレクトリがあるため、実際の連絡先情報をデータベースに保持するのではなく、(Web サービスを介して) エンタープライズ ディレクトリでその人物を検索するためのキーとして機能する不変の識別子を保持します。公開されている Web サイトから連絡先情報を探します。

問題は、Web ベースのディレクトリ ルックアップに役立つ ID が「一種の」不変であり、データベースに保存する ID ではないということです。ディレクトリ ルックアップは、個人の Active Directory ログイン ID を使用して最も簡単に実行できます。私が使用するものは、Master Records Unique ID と呼ばれます。

私の質問は、リンクの MRUID から Active Directory ログイン ID への変換を行う最も合理的な場所はどこですか?

現在、私はプレゼンテーション層で変換を行っており、ディレクトリへの参照を減らすためにアプリケーション レベルのキャッシュを使用しています。現在、Web サイトは 1 つしかありませんが、これを行う必要がある Web サイトが他にもある場合は、ヘルパー クラスを共有 Web コントロール ライブラリに移行することを期待しています。

コードをデータ層またはビジネス層に配置することを検討しましたが、キャッシングを理由に選択しませんでした。キャッシュする方法と内容は、これらの他のレイヤーではなく、アプリケーションの機能のようです。

私が考慮していないかもしれない他の意見やアイデアに興味があります.

4

3 に答える 3

1

asp.net web サイトまたは web アプリケーションのプレゼンテーションレイヤーにある必要があるものに直面した場合、他の asp.net web アプリケーションでも価値がある可能性がある場合、依存関係を持つ特別なクラスライブラリを作成すると便利です。 system.web 名前空間で。

具体的には、HttpContext.Current を使用して、ライブラリをホストしている Web サイトと相互運用します。確かではありませんが、私は一般的にこれをビジネス レイヤー アセンブリと考えていますが、Web コンテキストでホストされていることを前提としています。

本当のビジネス コード (非 Web アプリケーションで使用される可能性のあるコード) を 3 番目のアセンブリに保持します。

Web コンテキストに依存するアセンブリを使用すると、HttpContext.Current を使用して、要求オブジェクトと応答オブジェクトで何が起こっているかを調べたり、asp.net キャッシュ API や関連するものと対話したりできます。しかし、複数の Web アプリケーションで使用できるように、コードの移植性も維持されます。

通常、この Web 依存アセンブリは、私の HttpModules と HttpHandlers も存在する場所です。

ただし、「レイヤー」は論理的な概念であり、物理的な概念ではないことに注意してください。ビジネス、DAL、さらにはプレゼンテーション層クラスを一緒に含むアセンブリに問題はありません。クラス自体の役割を混同してはなりませんが、1 つのアセンブリに、設計内の異なる論理レイヤーのクラスを含めることができます。

于 2008-10-14T13:07:49.750 に答える
0

ビジネス レイヤーに配置し、ビジネス レイヤーで Enterprise Library Caching Application Blockを使用するか、ビジネス レイヤーから返された値をプレゼンテーション レイヤーの ASP.Net キャッシュにキャッシュすることで、引き続きキャッシュを使用できます。

他のデータとは別の場所から来ているので、他のデータベース コードと同じデータ アクセス レイヤーには配置しません。

于 2008-10-11T15:58:28.237 に答える
0

この問題について、職場の他の開発者と話し合った結果、プレゼンテーション層が翻訳を行うのに適した場所であると判断しました。同じビジネス/データ アクセス レイヤーを使用するさまざまなアプリケーションが、さまざまな方法でデータを変換したい場合を考えてみましょう。個々の ID は常に特定の形式で表示されるという明確に定義されたビジネス ルールがない限り、それはそのままにして、複数のフロントエンドをサポートするために必要に応じて Web コントロール ライブラリに移行すると思います。

于 2008-10-14T00:41:53.450 に答える