- •Гугл-дока для екзамену Архітектура компютера. Програмне забезпечення
- •1. Поняття платформи. Структура та основні складові .Net Framework.
- •2. Функції та структура clr.
- •3. Поняття збірки. Метадані. Схема виконання .Net-додатку в clr.
- •4. Система типів даних мови c#. Типи-значення.
- •5. Система типів даних мови c#. Типи-посилання.
- •6. Масиви в c#: одновимірні, багатовимірні, ступеневі. Методи та властивості класу Array.
- •7. Методи в c#: модифікатори доступу, передача параметрів, перевантаження, наслідування.
- •7. Методи в c#: модифікатори доступу, передача параметрів, перевантаження, наслідування.(Второй вариант)
- •8. Багатопоточне програмування засобами .Net. Структура процесу ос Windows. Клас Thread.
- •9. Характеристика засобів синхронізації потоків та процесів .Net Framework.
- •10. Об’єкти синхронізації потоків .Net Monitor та ReaderWriterLock.
- •11. Об’єкти синхронізації потоків .Net lock та ManualResetEvent.
- •12. Об’єкти синхронізації потоків .Net AutoResetEvent та Mutex.
- •13. Обробка виключних ситуацій в мові c#, основні класи та методи .Net щодо обробки виключень.
- •14. Віртуальні функції та абстрактні класи в мові c#.
- •15. Статичні конструктори, поля та методи класів в мові c#.
- •17. Інтерфейси в мові c#. Порівняння з абстрактними класами. Сфера застосування інтерфейсів.
- •18. Огляд колекцій в .Net. Основні інтерфейси, що лежать в основі доступу до колекцій.
- •19. Колекція ArrayList. Методи та властивості. Переваги та недоліки використання.
- •20. Колекції Stack та Queue. Методи та властивості.
- •21. Колекція BitArray. Методи та властивості. Переваги та недоліки використання.
- •22. Колекція HashTable. Методи та властивості. Переваги та недоліки використання.
- •23. Характеристика generic-колекцій .Net
- •24. Колекція LinkedList. Методи та властивості.
- •26. Групи класів доступу до даних технології ado.Net.
- •27. Характеристика від’єднаних класів технології ado.Net.
- •28. Характеристика під’єднаних класів технології ado.Net.
- •29. Завантаження бінарних об’єктів у базу даних та вивантаження їх із неї.
- •30. Транзакції в базах даних. Інтерфейс транзакцій технології ado.Net.
- •31. Особливості мережевих протоколів tcp та udp. Поняття порту, адреси, сокету.
- •32. Характеристика сокетів зі з’єднанням. Інтерфейс класу Socket для даного типу сокетів.
- •33. Характеристика сокетів без з’єднання. Інтерфейс класу Socket для даного типу сокетів.
- •34. Характеристика асинхронних та синхронних сокетів. Інтерфейс класу Socket для даного типу сокетів.
- •35. Узагальнений алгоритм взаємодії клієнта та сервера при синхронному сокетному способі обміну даними зі з’єднанням. Інтерфейс класу tcpListener.
- •36. Узагальнений алгоритм взаємодії клієнта та сервера при синхронному сокетному способі обміну даними без з’єднання. Інтерфейс класу tcpClient..
- •37. Загальна схема та реалізація багатопоточного сокетного сервера зі з’єднанням.
- •38. Поняття сервіс-орієнтованого архітектури. Web-сервіси: переваги та недоліки, стандарти в основі Web-сервісів.
- •Стандарти, що використовуються веб-службами
- •Переваги веб-служб
- •Недоліки веб-служб
- •39. Компоненти архітектури Web-сервісів. Протоколи для Web-сервісів. Приклад реалізації серверної частини Web-сервісу.
- •Используемые стандарты
28. Характеристика під’єднаних класів технології ado.Net.
В ADO.NET существует две модели работы с данными: присоединенная и отсоединенная модель . Традиционной моделью работы с данными является присоединенная модель. Работа присоединенной модели заключается в том, что приложение, открывая связь с поставщиком данных, остается на связи с ним на протяжении всего времени работы. Плюсом этой концепции является скорость работы с данными и их актуальность, а основным минусом – постоянное выделение ресурсов под соединение, что в случае с большим количеством подключений может вызвать серьезную перегрузку поставщика данных.
Классы подсоединенных объектов обеспечивают установление соединения с БД и управление данными со стороны приложения.
29. Завантаження бінарних об’єктів у базу даних та вивантаження їх із неї.
По умолчанию объект DataReader загружает входящие данные в виде строки, как только вся строка данных будет в наличии. Однако для больших двоичных объектов (BLOB) требуется другая процедура, поскольку они могут содержать гигабайты данных, которые невозможно уместить в одной строке. Метод Command.ExecuteReaderимеет перегрузку, которая принимает аргумент CommandBehavior, чтобы изменять характер действий объекта DataReader по умолчанию. Аргумент SequentialAccessможно передать методу ExecuteReader, чтобы изменить характер действий объекта DataReader по умолчанию, чтобы он загружал не строки данных, а последовательно сами данные по мере их поступления. Вместо загрузки всей строки, SequentialAccess позволяет DataReader загрузить данные как поток. Затем можно использовать метод GetBytes или метод GetChars, чтобы указать положение байта для начала операции чтения и ограниченный размер буфера для возврата данных.
The publisher ID (pub_id) is a character field, and the logo is an image, which is a BLOB
int bufferSize = 100; byte[] outByte = new byte[bufferSize]; long retval; long startIndex = 0; string pubID = ""; connection.Open();
SqlCommand command = new SqlCommand("SELECT pub_id, logo FROM pub_info", connection); SqlDataReader reader = command.ExecuteReader(CommandBehavior.SequentialAccess); while (reader.Read()){ pubID = reader.GetString(0); // Create a file to hold the output. stream=new FileStream("logo"+pubID+".bmp", FileMode.OpenOrCreate, FileAccess.Write); writer = new BinaryWriter(stream); // Reset the starting byte for the new BLOB. startIndex = 0; // Read bytes into outByte[] and retain the number of bytes returned. retval = reader.GetBytes(1, startIndex, outByte, 0, bufferSize); // Continue while there are bytes beyond the size of the buffer. while (retval == bufferSize){ writer.Write(outByte); writer.Flush(); // Reposition start index to end of last buffer and fill buffer. startIndex += bufferSize; retval = reader.GetBytes(1, startIndex, outByte, 0, bufferSize); } // Write the remaining buffer. writer.Write(outByte, 0, (int)retval - 1); writer.Flush(); writer.Close(); stream.Close(); }
Большой двоичный объект (BLOB) можно записывать в базу данных в виде двоичных или символьных данных в зависимости от типа поля источника данных. BLOB — это общий термин для типов данных text, ntext и image, используемых, как правило, для хранения документов и изображений.
Чтобы записать значение BLOB в базу данных, выполните соответствующую инструкцию INSERT или UPDATE, передав значение BLOB в качестве входного параметра.
public static void AddEmployee(int pub_id, string photoFilePath) { byte[] photo = GetPhoto(photoFilePath); using (SqlConnection connection = new SqlConnection( connectionString)) SqlCommand command = new SqlCommand( "INSERT INTO pub_info (pub_id, logo) " + "Values(@pub_id, @logo), connection); command.Parameters.Add("@pub_id", SqlDbType.Int).Value = pub_id; command.Parameters.Add("@logo", SqlDbType.Image, photo.Length).Value = photo; connection.Open(); command.ExecuteNonQuery(); } }