ПредишенСледващото

Рамката .NET включва своя собствена технология за достъп до данни - ADO.NET. Тази технология се състои от управлявани класове, които позволяват на .NET приложения, за да се свързват към източник на данни (обикновено релационна база данни), изпълнява команди и управление на данните за офлайн. ADO.NET е малко чудо, че тази технология позволява да пиша повече или по-малко същия код за достъп до данни - както в уеб приложения и клиент-сървър приложения за настолни компютри и дори в приложения за един потребител, които се свързват в локалната база данни ,

Научете всички основите на ADO.NET в контекста на приложението на клиента, можете да видите в ADO.NET. Няма да описвам тук какво доставчици и това, което тя представлява архитектурата на ADO.NET данни, трябва да имате обща представа за класове, свързани нива - Connection, Command, DataReader, DataAdapter и класове автономни ниво DataSet, DataTable, DataRow и т.н. , На следващо място, аз ще разгледа ADO.NET архитектура в контекста на уеб приложения ASP.NET. Като доставчик на данни да използвам System.Data.SqlClient (SQL Server).

клас Connection позволява свързване към източник на данни, с които да си взаимодействат. Преди да можете да правите нищо друго (включително извличане, изтриване, вмъкване или обновяване на данни), ще трябва да се установи връзка. Ключови свойства и методи, определени Connection интерфейс IDbConnection. който изпълнява всички класове връзката.

линейни връзки

Когато създавате обект Connection ще трябва да предостави низ връзка. низ връзка е последователност от двойки "име-стойност", разделени със запетая (;). Редът на тези настройки, в зависимост от случая не е важно. Заедно те се посочи основната информация, необходима, за да се установи връзка.

Въпреки, че съединенията на реда ще варират в зависимост от релационна база данни и се използват от доставчика на данни, няколко парчета на информация е почти винаги е необходимо; тези фрагменти са описани по-долу:

Сървърът, на която база данни местоживеене. В примерите по-долу сървъра на базата данни винаги се намира на същия компютър като прилагането ASP.NET, така че използвайте псевдоним или Localhost, или точното име на сървъра (в моя случай ". \ SQLEXPRESS"), вместо името на компютъра.

Базата данни трябва да се използва. Ще използвам тест база данни Northwind, който се инсталира по подразбиране с повечето издания на SQL Server.

Базата данни идентифицира. Oracle база данни и продавачите SQL Server предоставят възможност за избор - да се използват някои на самоличност или да се свържете както текущия потребител на системата. Последната опция обикновено се предпочита, тъй като в този случай не е необходимо да се постави информацията за парола във файловете на код или конфигурация.

Например, по-долу е низ връзка за свързване с Northwind на текущия компютър с база данни на интегрирана безопасност (т.е. с достъп до името на текущата база данни на потребителя Windows):

Ако използвате доставчик OLE DB, низ връзка ще бъде подобен на предишния, но добави допълнителна конфигурация параметър идентифицирането на водача OLE DB (Provider = MSDAORA), и да се свърже с файла с базата данни за достъп трябва да се уточни «Доставчикът = Microsoft.Jet.OLEDB. 4.0. "

Ако сте с помощта на база данни, различни от SQL Server, може да е необходимо да се консултирате с документацията на доставчика на данни (или справка за .NET Framework библиотека клас), за да разберете за поддържаните стойности на низ на свързване. Например повечето бази данни поддържат конфигурацията на изчакване връзка, задаване на изчакване връзката в секунди, преди той трябва да бъде изключение. (За SQL Server по подразбиране е 15 секунди.)

При създаване на обект за свързване може да се предава като параметър на конструктора в низ връзка. Една алтернатива е да зададете ръчно свойствата ConnectionString стойност. ако това е направено преди да се опитате да отворите връзката.

Няма причина да кодирате твърдо низ връзка. В файла web.config има секция - най-подходящото място, за да запазите низ връзка. По-долу е един пример:

След това низ връзка е лесно да се извлече името на колекцията WebConfigurationManager.ConnectionStrings. При условие, че внесените имената пространство System.Web.Configuration, за това можете да използвате следното изявление:

В следващите примери се предположи, че тази линия е съединение добавен в web.config файл.

Проверка на връзката

След като изберете низ връзка за управление на връзката е много лесно - просто трябва да се използва методът на Open () и тясното (). Освен това, интерфейс IDbConnection наследява от IDisposable интерфейс, който определя клас която изпълнява като ресурс. Ето защо, когато се използва клас Connection може да се прилага, като се използва структура, без да причинява метод Close () - веднъж на компилатора е достигнал до края на тази конструкция, връзката ще се затвори.

Следният код в Page.Load на събитието манипулатор може да се използва за проверка на статуса на връзката и ще го покаже в текста на етикета. За да работи кода, ще трябва да внасят System.Data.SqlClient пространство от имена:

И връзка клас

При отваряне на връзка може да бъде две изключения. InvalidOperationException се генерира, ако информацията за низ връзка липсва или връзката вече е отворен. SQLException се генерира в случай на каквито и да било други проблеми, включително грешка при свързване към сървъра на базата данни, регистрацията или достъпа до определена база данни. използване на изпускания оператора използвания обект, дори когато на изхода от единицата за генериране в резултат на необработено изключение.

Пул на свързванията Организация

Получаване на съединения изисква малко, но значително време. В уеб приложение, което ефективно да обработват заявките, връзки се отварят и затварят за неопределено време - тъй като обработката на нови искания. В тази среда, малко режийни за инсталирането на връзката става много забележим и лимит мащабируемост.

Едно от решенията може да бъде да организира група от връзки. Пулът на свързванията - е практика на съхранение постоянен набор от отворени връзки към базата данни споделена между сесиите, които използват един и същ източник на данни. Така се избягва необходимостта от постоянно създаване и унищожаване на ставите. Пулът на свързванията в ADO.NET е напълно прозрачно за програмиста, а кодът за достъп до данни не изисква никакви промени. Когато клиент заяви свързване, наричайки Open (), съединение сервира директно от наличните басейна, без повторно установяване. Когато клиентът освобождава връзката, като се обадите Close () или да се разпорежда () (IDisposable), тя не е заключена, и се връща в басейна, за да обслужва следващия искането.

ADO.NET не съдържа механизъм за организиране на басейна връзка. Въпреки това, повечето доставчици на ADO.NET данните да прилагат някаква форма на такъв басейн. Доставчици на данни SQL Server и Oracle предлагат собствените ефективни алгоритми за организиране на свързване басейни. Тези алгоритми са реализирани изцяло в управляван код и, за разлика от общоприетото схващане, не използвайте услугата предприятието COM +. За да се използва повторно съединение в SQL Server или Oracle, струни за свързване трябва да съвпадат точно. Ако те се различават малко, да създадете нова връзка в новия басейн.

Пулът на свързванията SQL Server и Oracle използват пълния текст сравнение двигателя. Това означава, че който и да е минимална промяна на низа за връзка нарушава басейна, дори ако то просто променя поредността на опциите или поставяне на допълнително пространство в края. Поради тази причина е важно да не се кодира твърда струни връзка с различна уеб страници. Вместо това, е необходимо да се поддържа низ връзка на едно място - за предпочитане под web.config файл.

И двете доставчици на данни - SQL Server и Oracle - свързване басейни са включени и се използват автоматично. Въпреки това, можете да използвате и параметрите на низ на свързване, за да регулирате размера на басейна. Тези параметри са описани в таблицата по-долу:

Параметри за определяне на басейна връзка

Максималният брой връзки позволено в басейн (по подразбиране 100). Ако не се постигне максималния размер басейн, всеки следващ опит за отваряне на връзка в опашката: в очакване на освобождаване съединение. (Ако продължителност Connection.Timeout изтече преди връзката е налична, възниква грешка.)

Минималният брой връзки, които трябва да останат в басейна (по подразбиране е 0). Това е ще бъде създаден броя на връзките, когато за пръв път отворите връзката, което намалява времето за изчакване при първата покана

Когато истинската стойност (по подразбиране) на съединението, получена от подходящ басейна или ако е необходимо, се създава и се прибавя към съответния басейна

Той определя интервала от време в секунди. Ако връзката е върнат в басейна и времето си връзка надвишават определената живот, тя ще бъде унищожена. Стойността по подразбиране е 0, което забранява това поведение. Този инструмент е полезен, когато искате да използвате отново на голям брой връзки в даден момент

По-долу е пример за една линия връзка, която определя минималния размер на басейна:

Някои от продавачите включват методи за почистване на басейна връзка. Например, SqlConnection може да предизвика статично методи ClearPool () и ClearAllPools (). Когато ClearPool () повикване осигурява SqlConnection обект, и всички съответните съединения се отстраняват. ClearAllPools () изчиства всички басейни за връзка текущия домейн приложение. Формално, тези методи не прекъснете връзката, те просто ги маркира като невалидна, така че в края на периода на изчакване, те ще бъдат затворени по време на нормална пречистване на съединенията, няколко минути по-късно.

Тази функция се използва рядко; обикновено само в случая, когато има смисъл - когато е известно, че басейнът е пълен или връзката става невалидна (например с рестартирането на SQL Server), и трябва да се избегнат грешки.

Пулът на свързванията SQL Server и Oracle винаги е поддържала като част от общите средства, прилагането на домейни. Получените басейни на съединения, които не могат да бъдат използвани между различни уеб приложения върху една и съща уеб сървър или между уеб приложения и други .NET приложения. По същата причина, всички връзки се губят, когато областта на приложение се рестартира. (Сфери на приложение са рестартирани, по различни причини, включително промяна на уеб страници, изграждане и конфигуриране на сфери на приложение на уеб приложения на файлове и да се продължи при достигане на определени прагове ;. Например, IIS да рестартирате областта на приложение, което използва много памет или твърде много заявки, чакащи на опашката. И двете състояния могат да показват влошаване на работата на областта на приложение.)

Свързани статии

Подкрепете проекта - споделете линка, благодаря!