- PR -

ASP.NETのグローバル定数の定義

1
投稿者投稿内容
パンダ
ベテラン
会議室デビュー日: 2004/03/24
投稿数: 59
投稿日時: 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/01/09
投稿数: 181
投稿日時: 2004-10-12 11:19
ただの定数であればAが良いと思います。
しかしDB接続文字列に関して言うと、環境の移動や稼動環境への導入などでDBの接続文字列を変えるたびに、再コンパイルが必要になりますよ。Web.Config辺りに定義して読み込んではどうですか?
パンダ
ベテラン
会議室デビュー日: 2004/03/24
投稿数: 59
投稿日時: 2004-10-12 11:27
以下の説明では方法@が良いと言っているようです。特別理由があるのでしょうか?
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=4899&forum=7&start=0
なちゃ
ぬし
会議室デビュー日: 2003/06/11
投稿数: 872
投稿日時: 2004-10-12 11:47
引用:

パンダさんの書き込み (2004-10-12 11:27) より:
以下の説明では方法@が良いと言っているようです。特別理由があるのでしょうか?
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=4899&forum=7&start=0


この辺はいろいろと憶測も入ったりしているのでなんとも。
ただ、変に共有されるんじゃないかとかそういう話であれば、本質的ににApplicationオブジェクトと変わるところはありません。

勝手にロックされるとかそういうところは変わります。
まあ、個人的には特にApplicationを使う「必要」はないと思いますが。

それよりも、まるくさんのおっしゃっていることを気にした方がいいかもしれません。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-10-12 20:57
引用:

パンダさんの書き込み(2004-10-12 11:27)より:

以下の説明では方法@が良いと言っているようです。特別理由があるのでしょうか?


 ソリューションの組み方によっては、プロジェクトの循環参照が生じます。
 具体例を出すと、「[HOWTO] チーム開発用に複数のプロジェクトから ASP.NET アプリケーションを作成する方法」の様に、「1つのアプリケーションを複数人で開発するために、複数のプロジェクトに分けた」場合、global.asaxは、IIS アプリケーション ルート ディレクトリにおかれます。そして、ルートとなったアプリケーションに所属することになります。ルートとなったアプリケーションのプロジェクトは、他のすべてのプロジェクトを「参照」します。ところが、他のプロジェクトがglobal.asaxに定義されたクラスを参照するためには、ルートとなったアプリケーションのプロジェクトを参照しなければなりません。ここで、参照の循環が発生します。
1

スキルアップ/キャリアアップ(JOB@IT)