- - PR -
ASP.NETのグローバル定数の定義
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2004-10-12 10:51
ASP.NET(C#)の開発でデータベースの接続文などの
アプリケーション全体で共通する定数を定義したいと 考えています。私なりに調べたところ、Global.asax に記述する2通りの方法があるようです @Applicationオブジェクトを使用する (例)Application("ConnectString") = "Data Source=XXXX;......" A静的メンバを使用する (例)public static readonly string ConnectString = ""Data Source=XXXX;......"; 上記の2つの方法はどちらが良い方法なのでしょうか? 方法@の方が多くの資料に載っているようです。 私としては方法Aの方が好きなのですが、方法Aの場合 悪い点があるのでしょうか? よろしくお願いします。 | ||||
|
投稿日時: 2004-10-12 11:19
ただの定数であればAが良いと思います。
しかしDB接続文字列に関して言うと、環境の移動や稼動環境への導入などでDBの接続文字列を変えるたびに、再コンパイルが必要になりますよ。Web.Config辺りに定義して読み込んではどうですか? | ||||
|
投稿日時: 2004-10-12 11:27
以下の説明では方法@が良いと言っているようです。特別理由があるのでしょうか?
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=4899&forum=7&start=0 | ||||
|
投稿日時: 2004-10-12 11:47
この辺はいろいろと憶測も入ったりしているのでなんとも。 ただ、変に共有されるんじゃないかとかそういう話であれば、本質的ににApplicationオブジェクトと変わるところはありません。 勝手にロックされるとかそういうところは変わります。 まあ、個人的には特にApplicationを使う「必要」はないと思いますが。 それよりも、まるくさんのおっしゃっていることを気にした方がいいかもしれません。 | ||||
|
投稿日時: 2004-10-12 20:57
ソリューションの組み方によっては、プロジェクトの循環参照が生じます。 具体例を出すと、「[HOWTO] チーム開発用に複数のプロジェクトから ASP.NET アプリケーションを作成する方法」の様に、「1つのアプリケーションを複数人で開発するために、複数のプロジェクトに分けた」場合、global.asaxは、IIS アプリケーション ルート ディレクトリにおかれます。そして、ルートとなったアプリケーションに所属することになります。ルートとなったアプリケーションのプロジェクトは、他のすべてのプロジェクトを「参照」します。ところが、他のプロジェクトがglobal.asaxに定義されたクラスを参照するためには、ルートとなったアプリケーションのプロジェクトを参照しなければなりません。ここで、参照の循環が発生します。 |
1