2

わかりましたので、少しアーキテクチャのガイダンスを探しています。私のチームは、構築中の新機能で特定の決定を再キャストする機会を得ており、SO の考えを見たいと思っていました :-)もちろん、私たちが変えていない特定のことなので、解決策はこのモデルに適合する必要があります. つまり、Web サービスを使用してユーザーがシステム上でアクションを実行できるようにする ASP.NET アプリケーションを用意したということです。

多くのシステムと同様に、さまざまなユーザーがさまざまな機能にアクセスする必要があるため、問題が発生します。Y ボタンにアクセスできるロールもあれば、Y ボタンと B ボタンにアクセスできるロールもあれば、B にしかアクセスできないロールもあります。これを目にするほとんどの場合、開発者は対処するために if ステートメントをごちゃまぜに入れただけです。 UI の状態。私の懸念は、未チェックのままにしておくと、これは保守不可能な混乱になることです.GUIに承認ロジックを配置することに加えて、承認されたユーザーのみが特定のメソッドを呼び出すようにするために、Webサービス(ajax経由で呼び出される)に配置する必要があるためです。 .

私の質問は、GUI/Web フォーム コードと Web サービス コードの両方で再利用できる特定のロールをチェックするランダムなアドホック if ステートメントをあちこちに減らすようにシステムを設計するにはどうすればよいかということです。

わかりやすくするために、これは Web フォームとAJAX 機能用のScript#を使用する ASP.NET Web アプリケーションです。スクリプト#が答えを捨てさせないでください。それはasp.net ajaxと根本的に違いはありません:-)

4

2 に答える 2

1

コードコンプリート(p。411)で、スティーブマコネルは次のアドバイスを提供しています(ビルゲイツはマイクロソフトのコマーシャルで就寝時の話として読んでいます)。

「適切な状況で使用されると、テーブル駆動型コードは複雑なロジックよりも単純で、変更が容易で、より効率的です。」

「テーブルを使用して、動的すぎてコードで表現できないロジックを記述することができます。」

「テーブル駆動型のアプローチは、以前のアプローチ[回転オブジェクト指向設計]よりも経済的です。」

テーブルベースのアプローチを使用すると、新しい「ユーザー」を簡単に追加できます(ユーザー/エージェントとそのアクションのモデリングのアイデアのように)。多くの「if」を回避するための良い方法です。そして、私はあなたのような状況で以前にそれを使用しました、そしてそれはコードを素晴らしくそしてきちんと保ちました。

于 2008-10-15T02:26:42.007 に答える
1

従来のグループ、ロール、または操作レベルのアクセス許可から移行して、WCF で提供されたような "クレーム ベース" の承認へのプッシュがあります。

Zermattは、開発者がサーバーとクライアントでクレーム ベースのアプリケーションを構築するのに役立つ Microsoft クラス ライブラリのコードネームです。Active Directory は、アプリケーションが独自のサーバーや他の業界標準サーバーに対して同時に承認できる STS の 1 つになります...

于 2008-10-15T20:01:15.513 に答える