Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Коннект к БД / 9 сообщений из 9, страница 1 из 1
25.03.2004, 04:38
    #32455958
DenVut
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Коннект к БД
Всем здраствуйте! У меня такой вопрос: для того чтобы на каждой странице проекта не создавать подключение к бд, я все адаптеры и датасеты объявил в глобал.asax и для всех создал переменные сессий. Хотя этот вариант и рассматривается в книге от microsoft, я так понимаю это не лучший вариант: при большом количестве пользователей рессурсы проекта и машины будут стремиться к 0. Как еще можно обяъвить коннект бд в одном файле а затем использовать его на всех страницах проекта. Можно примеры кода а лучше доку.
Заранее благодарен.
...
Рейтинг: 0 / 0
25.03.2004, 06:48
    #32455978
maxapet
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Коннект к БД
Насколько я понимаю, хранить коннект открытым - "дорогое" удовольствие, т.к. их число ограничено. Может у MS их и много, как денег у BG, но всё же...
Я сделал так: написал класс, статическим членом которого является строка ConnectionStr , описывающая подключение к БД. И теперь, когда мне нужно подключение, я использую эту строку CDBConnection.ConnectionStr при создании подключения. И изменить легко - только в одном месте.
...
Рейтинг: 0 / 0
25.03.2004, 07:39
    #32455999
DenVut
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Коннект к БД
Можешь скинуть как пример ?
...
Рейтинг: 0 / 0
25.03.2004, 22:53
    #32457744
mikhail_n
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Коннект к БД
2maxapet

авторЯ сделал так: написал класс, статическим членом которого является строка ConnectionStr, описывающая подключение к БД. И теперь, когда мне нужно подключение, я использую эту строку CDBConnection.ConnectionStr при создании подключения. И изменить легко - только в одном месте

Только 2 замечания:

1.При этом или весь проект или отдельную DLL придётся перекомпилировать и передеплоить на Web сервере.

2.При компиляции стринговые литералы остаются как есть - если Вашу DLL открыть в Notepad, то можно прочесть Connection string
...
Рейтинг: 0 / 0
26.03.2004, 03:47
    #32457796
maxapet
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Коннект к БД
2 DenVut
Это реализация класса:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
using System;

namespace gooal
{
	/// <summary>
	/// Summary description for Connection.
	/// </summary>
	public class DBConnection
	{
	static public string DBConnectStr =  "server=.;Integrated Security=SSPI;Initial Catalog=test" ;
	}
}


а это использование строки:
Код: plaintext
SqlConnection cnSample = new SqlConnection(DBConnection.DBConnectStr);


2 mikhail_n
Спасибо за замечания.
1-е замечание ещё терпимо - врядли будешь каждый день таскать приложение туда-сюда или менять ДБ, а вот второе - существенно. Есть какие-то варианты?
...
Рейтинг: 0 / 0
26.03.2004, 23:19
    #32459321
mikhail_n
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Коннект к БД
2maxapet

А, так у Вас это

"server=.;Integrated Security=SSPI;Initial Catalog=test"

ну тогда и пусть видно, но вот в случае сиквельной аутентикации это проблема. Я начинал свой первый проект на ASP.NET 1.0 и по ряду причин (юзера разбросаны по многим домейнам и нет желания либо создавать траст либо NT domain accounts в нашем домейне) мы используем Forms authentication с Anonymous access на IIS и без identity impersonation. И если мне не изменяет память, единственным способом заставить работать aspnet_wp.exe под домейн аккаунтом для версии 1.0 было в явном виде прописать этот аккаунт и его пассворд в Machine.config. Microsoft же тогда советовал не делать этого, а продолжать пользоваться ASPNET локальным аккаунтом, а для коннекта к серверу БД создавать одноимённый локальный аккаунт на нём, добавить его в сиквел и вручную синхронизировать пароли. А у нас аудит требует чтобы все пароли раз в месяц менялись. Поэтому мы это дело похерили и создали один сиквельный аккаунт который хранится в зашифрованном виде (Win32 CryptoAPI) в registry на Web сервере. На Web сервере же размещена public assembly которая читает и расшифровывает коннекшн стринг. Поскольку этот сиквельный аккаунт и пасворд к нему хотя и зашифрованные, храняться за пределами сиквела, там где они хпанятся раз в сутки срабатвает cancel application которая от греха подальше меняет пассворд случайным образом и обновляет зашифрованную строку в registry. Дальше, по этому аккаунту доступ разрешён только к одной базе данных, где хранятся только искусственные аккаунты для Forms authentication и hash'ы пассвордов за последние 12 месяцев - юзверя обязаны их менять каждые 30 дней тож, при этом нельзя повторять пассворд в течении года. Так что если даже этот аккаунт будет скомпрометирован, это большая неприятность но не катастрофа. Доступ собственно к базам данных осуществляется через другие сиквельные аккаунты, которые также зашифрованны на CryptoAPI, но храняться уже внутри сиквела по одному на базу чтобы обеспечить разумный коннекш пуллинг и минимизировать ущерб в случае компрометации одного из них. Цель такой архитектуры - возможность менять пассворды и этих аккаунтов не прерывая ни на минуту 7/24 режим работы web приложений. Конечно, эта схема не идеальна, на ASP.NET 1.1 вроде можно гонять aspnet_wp.exe под домейн аккаунтом и криптовать пассворд, но привыкли уже к тому что есть, да и на каждый Microsoft'овский чих не наздравствуешься.
...
Рейтинг: 0 / 0
26.03.2004, 23:50
    #32459341
Sergey Ch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Коннект к БД
To: mikhail_n

Спасибо за интересный рассказ, столько нового для себя узнал...
...
Рейтинг: 0 / 0
27.03.2004, 00:15
    #32459351
mikhail_n
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Коннект к БД
Это что, тонкий сарказм?
...
Рейтинг: 0 / 0
27.03.2004, 12:06
    #32459457
Sergey Ch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Коннект к БД
To: mikhail_n

Конечно, нет. Я такими вещами не занимаюсь. Просто тут встала одна проблема по обеспечению безопасности и я не знал предела, до которого нужно идти... А теперь понял, как мелко и стандартно я мыслил.

Лично я посещаю форум из-за таких вот нестандартных и интересных идей. А ответы на любые технические вопросы можно найти в руководствах или на сайте Большого Брата - там все "разжевано" и "разложено" как ни для какого другого средства программирования...

Good luck! And thank you very much, indeed!
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Коннект к БД / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]