3

別のプロジェクトでビジネス ロジックとデータ アクセスにアクセスできる Web アプリケーションがあります。

その設計方法では、キー値がデータ アクセス レイヤーやビジネス ロジックに渡されることはありません。代わりに、ビジネスレイヤーには、DALレイヤーが値にアクセスするためのパブリック読み取り専用プロパティを含むクラスがあります。

ビジネス ロジック レイヤーは別のプロジェクトにあります。Web プロジェクトが参照を取得します。ビジネス ロジック層には、次のクラスPublic NotInheritable Class clsUserProfile があります。次のプロパティがあります。

Public ReadOnly Property AgencyCode() As Integer

    Get
        If clsAppInfo.IsWebApplication Then
            If (HttpContext.Current.Session(_AgencyCodeKey) Is Nothing) Then
                Return 0
            Else
                Return HttpContext.Current.Session(_AgencyCodeKey)
            End If
        Else
            Return AgencyCodeWIN
        End If
    End Get

End Property

/ ** Windows の場合、エージェンシー コードは共有として宣言されます

 Public Shared Property AgencyCodeWIN() As Integer
        Get
            Return _AgencyCodeWIN
        End Get
        Set(ByVal value As Integer)
            _AgencyCodeWIN = value
        End Set

    End Property

/ * ** * ウェブアプリかどうかを判断するには.......

Public Shared ReadOnly Property IsWebApplication() As Boolean
    Get
        If AppCodeWIN IsNot String.Empty Then      
                 'Desk top App is required to pass AppInfo
            Return False
        Else                                                  
                 'Web App is default
            Return True
        End If
    End Get
End Property

複数のユーザーがログインした場合、データは上書きされますか。多くの人はお勧めできないと言っていますが、お勧めできない理由について証明できる理由を見つけることができませんか?

誰かが明確な理由を言うことができれば、それは素晴らしいことです.

ありがとう、サンディ。

4

1 に答える 1

0

複数のユーザーがログインすると、データは上書きされますか

いいえ

多くの人はお勧めできないと言っていますが、お勧めできない理由について証明できる理由を見つけることができませんか?

このコンテキストでは、3 番目の実行モードを追加するのは面倒です。

実際、クラス clsUserProfile は、アプリケーションの実行モード (webapp またはデスクトップ) を認識する必要はありません。AgencyCode を取得するためだけに、HttpContext と Session について認識したり、2 つの実行モードから選択したりする必要さえありません。

clsUserProfile はプレーンな C# オブジェクトである必要があります。実行モードは、アプリの上位レベルで処理する必要があります。

于 2012-11-08T16:43:48.987 に答える