2

私は現在、既存のソリューションの 1 つを置き換えるソリューションの最初の適切な技術設計を行っています。現在、名目上は同じことを行うさまざまな Web サイトがあります。ただし、そのうちの 3 つまたは 4 つが従来の ASP を使用しており、私が知る限り更新されたことはありません。

彼らの大多数が使用するアプリケーションは、ASP.net (3.5) を使用する SharePoint Web パーツであり、アクセス先に応じていくつかの入力ボックスとコンボ ボックスを動的に作成します。すべての構成は SharePoint リストに保存されます (データベース アクセス用のユーザー名とパスワードを含む)。ユーザーが検索ボタンをクリックすると、データを処理して返すストアド プロシージャが呼び出されます。このストアド プロシージャは、書き換えを行うもう 1 つの主な理由です。これは、多くの開発者によって何年にもわたって開発されてきたものであり、誰も何をしていたかについてコメントしていないためです。数百のレコードと多くの私が期待するものさえ返さない時はため息をついた

それで、私はついにこれを書き直すための青信号を与えられ、うまくいくと思う解決策を頭の中で思いつきました。ただし、書き留めているときは、それが正しい方法であると確信していないので、私よりも知識のある人にもう一度書き直してもらいたいと思います. アプリは次のもので構成されます。

Webサイト

Web サイトは非常に基本的なもので、アクセス元の URL に基づいて入力ボックスを作成し、要求を送信できるようにするだけです。

ユーザーが送信ボタンをクリックすると、 ChannelFactory パターンを使用して WCF レイヤーへの要求が行われます。

その後、応答が処理され、ユーザーは要求したデータまたはエラーを表示します。

通信 (WCF レイヤー)

インターネット用とイントラネット用の 2 つの要件があるため、トランスポート レベルのセキュリティを使用するインターネットには wsHttp を使用し、別のプロトコル (おそらく net-tcp バインディング?) を使用することにしました。

このレイヤーは事実上、外界とデータの間のバッファーとしてのみ機能するため、実際にはあまり機能しません。次のデータレイヤーで1つ以上のメソッドを呼び出すだけです

データ層から応答が来ると、それはデータ (良い) またはエラー (悪い) のいずれかになります。WCF サービスは、DataContract オブジェクトまたは FaultContract オブジェクトのいずれかを作成し、それを Web サイトに返します。

データレイヤー

データ レイヤーでは、LINQ to SQL を使用してデータベースへの接続を確立し、WCF からの要求を処理しています。データ層はデータベース サーバー上に配置するつもりなので、独自のクラス ライブラリとして作成します。

データ レイヤーでは、コードは要求を処理し、オブジェクトを WCF レイヤーに返そうとします。

それは基本的にそれです。私は、このシステムをできる限り安全なものにすると同時に、マイナーな変更を行うたびに Web パーツを再インストールする必要がないように、より保守しやすいものにしようとしています。ビジネスに不可欠なシステムであるため、回復力を高めるために WCF レイヤーも含めました。

どこが間違っているかについてのアドバイス、または一般的なコメントをいただければ幸いです:)

4

1 に答える 1

0

これはかなり大規模なトピックですが、いくつかのコメントを述べたいと思います。

  1. Web サイトに ASP.NET MVC を使用する
  2. 懸念事項を分離し、Unity などの IC を使用して問題をモジュール化する
  3. フレームワークで提供される組み込みの AuthenticationService 機能を使用してみてください
  4. Web サイトでクライアント プロキシをインターフェイス アウトして、ホット スワップとモック テストを実行できるようにします。
  5. LINQ to SQL の代わりに Entity Framework を使用します (ここでは個人的な好みです)。
  6. イントラネット WCF サービスで netTcp のようなものを使用し、Windows 認証を使用するようにしてください。
  7. パブリック WCF サービスで FormsAuthentication を使用して、セキュリティ ニーズの負担を軽減してみてください。スレッドのプリンシパルを設定するために、カスタム メッセージ インターセプターを配置することができます。
  8. すべてのメッセージ タイプ IOrder、ICustomer、IWhatever のインターフェイス バリアントを提供し、最大限のモジュール性のために境界を非常に目立たないようにします。

とにかく、それは私の10ペンスの価値であり、上記は常に私のために働いています!

于 2013-07-12T14:58:45.833 に答える