7

私は自分の会社のWebプロジェクトの原型を構築しています。アイデアは、セキュリティ、IoC、ロギングなど、必要なすべてがすでに完了した新しいプロジェクトの構築を開始するためのテンプレートのようなものにすることです。

私はテンプレートのセキュリティ側に取り組んでいます...そして最初にカスタムセキュリティプロバイダーを作りたかったのです...しかし、Microsoftがすでにメンバーシップでそれを行っていることに気づきました...プロジェクトが必要な場合は別のプロバイダー...彼らはweb.configを変更するだけでよく、それだけです...。

しかし、それが私の問題になります...さまざまなレイヤーがユーザー情報を取得できるようにしたい場合...サービスレイヤー(Webサービスではなくビジネスサービス...)のように、System.Webを含める必要がありますおよびSystem.Web.ApplicationServicesをそのクラスライブラリに追加します。

それは悪い習慣ですか?車輪の再発明をしたくありません。私のシナリオでは、Microsoftメンバーシップモデルで十分です。

ありがとう!

4

6 に答える 6

4

実際のところ、System.WebはASP.NETの一部です。System.Webの多くのメソッドは、たとえばHttpContext.Currentを使用します。これは、現在のHTTPリクエストに関するコンテキストです。非ASP.NETアプリケーションでSystem.Webを使用すると、HttpContextを使用する可能性のあるメソッドを持つクラスにアクセスできるため、奇妙な方法で失敗するリスクがあります。これは悪い考えです。したがって、順番に悪い習慣と見なされるべきです。

System.Webの意図もあります。はい、それは単なるアセンブリであり、IDEを使用すると、ほとんどすべてのアセンブリを参照できます。ただし、System.Webの目的は、ASP.NETアプリケーションのコンテキストにあることです。これは、Microsoftの開発者が想定していることです。だから、彼らはその仮定の下でそれを進化させるでしょう。将来的には、ASP.NETアプリケーションにメリットをもたらす変更により、アプリケーションが効果的に破損する可能性があります。その場合、アプリケーションのこの部分を実際に設計(または再設計)することを計画しているときではなく、それに応じてアプリケーションを再設計する必要はありません。

于 2012-09-11T14:17:13.660 に答える
1

ビジネスレイヤーはデータソースに依存しないため、ビジネスレイヤーで使用することはお勧めできません。

したがって、代わりにデータレイヤーでWebリクエストを行い、収集したデータをビジネスレイヤーまたは必要に応じて個別の認証コンポーネントに公開するだけです。

原則として、厳密にはビジネスではないビジネスレイヤー内のすべてのものを、定義されたインターフェイスを持つクラスに抽象化する必要があります。

于 2012-09-11T13:31:56.457 に答える
0

System.Webは、他のライブラリと同じです。はい、多くのコードが含まれており、コンパクトフレームワークには含まれておらず、その機能の一部は外部に複製されています。たとえば、WebUtilityは.Net 4.5の新機能であり、 HttpUtilityの機能の多くを実行します。ただし、これは単なるクラスライブラリです。

于 2012-09-11T13:37:33.787 に答える
0

System.Webは.NETFrameworkクライアントプロファイルの一部ではないため、問題が発生する可能性があります。これを参照するには、コンシューマーが完全なフレームワークパッケージをインストールする必要があります。サーバーアプリケーションを構築している場合、これはおそらく問題ではありません。

参照:.NETFrameworkクライアントプロファイルのアセンブリ

于 2012-09-11T13:53:30.937 に答える
0

System.Webはフロントエンドにのみ存在する必要があります。アーキテクチャのすべての場所にあるわけではありません。最良の例は、Asp.Net 5で何が起こっているかであり、彼らはそれを削除しています。Webコンポーネントをフロントエンドレイヤーに分離することで、アーキテクチャのすべてのレイヤーを変更する必要がなくなります。フロント(Web、Web API、SignalRなど)をミドル(ビジネスロジック、変換ロジックなど)およびバックエンド(データベース、Entity Framework、Web API呼び出し)から常に分離するようにしてください。

于 2015-01-12T16:27:53.070 に答える
-1

悪くはないと思います。System.Webは.NETFrameworkの一部であるため、.NETが利用できるすべての場所で利用できます。HTMLとURLの処理を行う必要がある場合は、Web以外のアプリケーションでSystem.Webを使用します。

于 2012-09-11T13:42:49.527 に答える