-1

以下のコードを参照してください。

Namespace DataAccessGateway
    Public Class clsAudit
        Implements IAudit

        Private _ConString As String
        Private _Provider As String

        Public Sub New()
            _ConString = ConfigurationManager.ConnectionStrings("dbConnection").ConnectionString
            _Provider = ConfigurationManager.ConnectionStrings("dbConnection").ProviderName
        End Sub

        Public Function AddAudit(ByVal tyDeletion As typeDeletion) As Integer Implements IAudit.AddAudit
            Dim intCount As Integer
            Dim objParameterValues As New clsParameterValues
            Dim iConnectionBLL As iConnectionBLL
            Dim tyInnkeeperPremises As New typeInnkeeperPremises
            Dim objCon As DbConnection
            Try
                Dim paramValues() As DbParameter
                objParameterValues = New clsParameterValues
                iConnectionBLL = New clsConnectionBLL()
                objCon = iConnectionBLL.getDatabaseTypeByDescription("AUDIT")
                Using objCon
                    Dim strSQL As String
                    strSQL = "INSERT INTO dbAudit (Reference) VALUES (@Reference)"
                    objParameterValues.AssignParameterValues("@Reference", tyDeletion.Reference, 1)
                    paramValues = objParameterValues.getParameterValues
                    intCount = clsDatabaseHelper.ExecuteNonQuery(objCon, CommandType.Text, strSQL, paramValues)
                End Using
                Return intCount
            Catch ex As Exception
                Return -1
            End Try
        End Function
    End Class
End Namespace

このコードは、バッチ処理ジョブの一部として呼び出されます。つまり、1 日に一度に 1,000 万回呼び出される可能性があります。監査データベースの接続文字列は、暗号化されたデータベース テーブル、つまり tbl_database に格納されます (getDatabaseTypeByDescription はこのテーブルにクエリを実行します)。したがって、同じ接続文字列を 1,000 万回取得するには、データベースに対して最大 1,000 万回クエリを実行する必要があります。接続文字列を静的変数に入れるのは悪い習慣ですか、それとももっと良い方法がありますか?

接続文字列を構成ファイルに入れる方が良いことはわかっていますが、一貫性を保つことを望んでいます。

4

1 に答える 1

1

この回答は .NET に固有のものではありませんが、実際には、 configのセクションから抜粋したThe Twelve-Factor Appに記載されているアプローチをお勧めします。

環境に設定を保存する

Twelve-Factor アプリは、構成を環境変数 (多くの場合、env vars または env に短縮されます) に保存します。環境変数は、コードを変更することなく、デプロイ間で簡単に変更できます。構成ファイルとは異なり、誤ってコード リポジトリにチェックインされる可能性はほとんどありません。カスタム構成ファイルや他の構成メカニズムとは異なり...

このドキュメントはappsを対象としていますが、ここでも同様のアプローチがうまくいくと思います。データベースを呼び出して接続文字列を一度取得し、それをプロセスまたはアプリ ドメイン環境に保存できます。これにより、テストに関してもかなりの柔軟性が得られます。

于 2013-04-23T22:33:26.507 に答える