- - PR -
ビルド時にはファイルのデータを持ちたい
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2004-02-19 11:59
ビルド時にファイルからデータを読み込むようにするには
どうしたらいいでしょうか? 今作っているのは、Webアプリケーションなんですが、 ファイルのデータを使って処理を行うところがあります。 そのファイルが少し大きいので、その処理を行うときに、 毎回ファイルからデータ読み込むのでは、処理が遅くなるので、 最初からファイルのデータを持ちたいと思っています。 ビルドされたときには、 ファイルのデータを、すでに持っているようにする方法は あるのでしょうか? 無理でしょうか? 説明おかしいかもしれませんが、 どなたかご教授よろしくお願い致します。 開発環境 WindowsXP Pro VS.NET2003( C# ) .NET Frame 1.1 |
|
投稿日時: 2004-02-19 12:19
ファイルの内容を全てデータとしてプログラム中の変数に入れてしまうとか?
16進数で打ち込む必要があるかも知れません |
|
投稿日時: 2004-02-19 12:40
コブラさん 返答ありがとうございます。
ファイルのデータが変わることがあるので、 データが変更されてもだいじょうぶなように ファイルから読み込むようにしたいです。 この処理は無理でしょうか? ご教授よろしくお願い致します。 |
|
投稿日時: 2004-02-19 12:47
処理の度に毎回読むから遅くなるというこですので、global.asax内で最初にデータを取得しておき、Application変数に保持しておくのはどうでしょうか?
ファイルが変わることもあるということですが、「ビルド時に読み込みたい」という条件がついているので、変更されることは稀であり、そのときはWebアプリケーションの実行がリセットされてもよいということですよね。 ビルド時にデータを読み込むとは少し違いますが、アセンブリにリソースファイルを持たせるということもできます。でもどこかで読まなければいけないので、やはり最初に一度だけという方法が適切だと思われます。 |
|
投稿日時: 2004-02-19 12:49
>コウイチさん
>最初からファイルのデータを持ちたいと・・・ >ファイルのデータを、すでに持っているようにする方法は・・・ 「持つ」というのは、つまりどういうことでしょう? ビルド時というのですから、メモリー上じゃないですよね? Grobal.asaxとかで、アプリケーションが開始する時に読ませるというのはだめなんですか? |
|
投稿日時: 2004-02-19 13:55
noderaさん、一郎さん 返答ありがとうございます。
>「持つ」というのは、つまりどういうことでしょう? ファイルのデータを使いたいのですが、 Webアプリケーション開始時に、 ファイルからデータを取得処理をしなくていい状態?のつもりです。 取得処理をしなくてもいい方法があれば、 ご教授よろしくお願い致します。 説明が下手で申し訳ありません。 Webアプリケーション開始時に、 Grobal.asaxで最初に読み込んで、 Application変数に保持する方向で考えてみます。 ありがとうございました。 |
|
投稿日時: 2004-02-19 14:51
キャッシュを使えば、「変更」を動的に察知して読み込み直しができますよ。問い合わせはSingletonパターンで行えば、なお良いのではないでしょうか。
|
|
投稿日時: 2004-02-19 16:12
Jittaさん 返信ありがとうございます。
Singletonパターンですか。 すみません。聞いたことがありませんでした。 ちょっと調べてみたのですが、 使い方がよくわかりませんでした。 Singletonの質問になってしまうのですが、 Singletonは、1つのインスタンスしか生成しないというのは、 Webアプリケーションで、複数のユーザーがアクセスしてきても 同じインスタンスを各ユーザーが利用するので、 メモリを効率よく使える・・・ということでしょうか? 使い方なのですが、 インスタンスの作成を1つだけにしたいクラス(TestClass)の ・コンストラクタをprivate宣言 private TestClass(){ } ・自身をprivate static メンバインスタンスとして宣言 private static TestClass TC = new TestClass(); ・他のクラスから、このクラスを使うために public static TestClass getInstance() { return TC; } として、 他のクラスで、TestClassを使いたい場合は、 TestClass tc = TestClass.geInstance(); として、利用するようにしたら、 複数のユーザーが同時に利用しても、 TestClassのインスタンスは1つしか生成されない? Webアプリケーション実行中は、 インスタンスはずっと削除されない? ・・・であっているでしょうか? 脱線してすみませんが、 よろしくお願い致します。 |