
- •1. Сборщик мусора и управление ресурсами
- •2. Жизненный цикл объектов
- •3. Неуправляемый код и указатели
- •4. Строки и строковый пул
- •5. Обобщенные типы, ограничения в параметрах обобщенных типов, типы допускающие null значение
- •6. Тип Type и пространство System.Reflection
- •7. Создание объектов с помощью рефлексии, вызов методов объектов средствами рефлексии
- •8. Атрибуты, жизненный цикл объекта атрибута
- •9. Специальные атрибуты net.Framework и ограничения пользовательских атрибутов
- •10. Метаданные сборок, структура сборок, домены приложений
- •11. Многопоточное программирование. Виды многопоточности, обеспечение многопоточности в net.Framework, виды блокировки
- •12. Класс Thread, логические и физические потоки выполнения, жизненный цикл потока выполнения
- •13. Класс монитора, конструкция lock()
- •14. Атомарная синхронизация и класс Interlocked
- •15. Класс ReaderWriterLock, пул потоков
- •16. Классы WaitHandle и производные от него: ManualResetEvent, AutoResetEvent, Mutex
- •17. Высокоуровневые средства распараллеливания задач, класс Task
- •18. Свойства и методы класса Task
- •19. Делегаты, цепочка вызова
- •Групповая адресация
- •20. Асинхронный вызов с помощью объекта делегата
- •IAsyncResult
- •21. События, обратный вызов, типовая схема реализации события
- •22. Лямбда-выражения, замыкание лямбда-выражений
- •23. Деревья выражений, типы деревьев. Создание деревьев выражений
- •24. Технология ado.Net, архитектура, модель с постоянным соединением и с рассоединением
- •Linq to DataSet
- •Linq to sql
- •Платформа ado.Net Entity Framework
- •Службы wcf Data Services
- •25)Понятие поставщика данных и его составные части в ado.Net. Класс соединения, итератора, команды.
- •26. Технология объектно-реляционного связывания, персистентные объекты, на примере одной из технологии (Linq to sql, Linq to Entities, nHibernate)
- •Entity Framework
- •27. Linq to Objects: архитектура технологии и возможности, понятие итератора, создание Linq запросов
- •28. Средства распараллеливания выполнения запросов plinq.
- •29. Основы wcf. Основные понятия, применение. Контракты данных, привязки. Архитектура сервис-ориентированных систем.
- •1) Библиотека с интерфейсом
- •2) Сервер – консольное приложение
- •3) Клиент – консольное приложение
- •30. Структура проекта с использованием wcf сервисов. Интерфейсы сервиса, атрибуты для обозначения методов сервиса и контрактов данных.
- •1) Библиотека с интерфейсом
- •2) Сервер – консольное приложение
- •3) Клиент – консольное приложение
- •31. Методы и свойства прокси-объекта на стороне клиента.
- •32. Развертывание wcf сервисов.
26. Технология объектно-реляционного связывания, персистентные объекты, на примере одной из технологии (Linq to sql, Linq to Entities, nHibernate)
LINQ to SQL поддерживает запросы к модели объектов, сопоставленной со структурами данных реляционной базы данных, без использования промежуточной концептуальной модели. Каждая таблица представляется отдельным классом; таким образом, модель объектов тесно привязывается к схеме реляционной базы данных.
LINQ to SQL является компонентом .NET Framework версии 3.5, предоставляющим инфраструктуру времени выполнения для управления реляционными данными как объектами.
В LINQ to SQL модель данных реляционной базы данных сопоставляется объектной модели, выраженной в языке программирования разработчика. При запуске приложения LINQ to SQL преобразует запросы LINQ из объектной модели в SQL и отправляет их в базу данных для выполнения. Когда база данных возвращает результаты, LINQ to SQL преобразует их обратно в объекты, с которыми можно работать на собственном языке программирования.
С помощью LINQ to SQL можно использовать технологию LINQ для доступа к базам данных SQL как к коллекции в памяти.
LINQ to SQL поддерживает все основные возможности, необходимые для разработчиков на SQL. Можно запрашивать данные, вставлять, обновлять и удалять сведения из таблиц.
Пример
public partial class Northwind : DataContext
{
public Table<Customer> Customers;
public Table<Order> Orders;
public Northwind(string connection) : base(connection) { }
}
Northwnd db = new Northwnd(@"c:\Northwnd.mdf");
var query =
from cust in db.Customers
where cust.City == "London"
select cust;
foreach (var cust in query)
Console.WriteLine("id = {0}, City = {1}", cust.CustomerID, cust.City);
DataContext – класс
Представляет главную точку входа для структуры LINQ to SQL.
DataContext является источником всех сущностей, сопоставленных через подключение к базе данных. Отслеживает изменения, выполненные для всех извлеченных сущностей, и поддерживает "кэш удостоверения", гарантирующий, что сущности, извлеченные более одного раза, представлены с помощью того же экземпляра объекта.
Entity Framework
Entity Framework (EF) — это объектно-реляционный модуль сопоставления, позволяющий разработчикам .NET работать с реляционными данными с помощью объектов, специализированных для доменов. Это устраняет необходимость в написания большей части кода для доступа к данным, который обычно требуется разработчикам.
Используйте Code First для определения модели в коде и последующего создания базы данных.
Используйте Model First для определения модели, используя поля и линии, и последующего создания базы данных.
Используйте Database First для создания модели из полей и линий, сопоставляемой с существующей базой данных.
27. Linq to Objects: архитектура технологии и возможности, понятие итератора, создание Linq запросов
Термином "LINQ to Objects" называют использование запросов LINQ непосредственно с коллекциями IEnumerable или IEnumerable<T> без промежуточных поставщиков LINQ или API-интерфейсов, таких как LINQ to SQL [LINQ to SQL] или LINQ to XML. LINQ можно использовать для запроса любых перечислимых коллекций, таких как List<T>, Array или Dictionary<TKey, TValue>. Коллекция может быть определенной пользователем или возвращенной API .NET Framework.
По сути, LINQ to Objects представляет новый подход к коллекциям. Раньше нужно было писать сложные циклы foreach, которые определяли способ извлечения данных из коллекции. При применении подхода LINQ создается декларативный код с описанием необходимых извлекаемых данных.
Кроме того, запросы LINQ имеют три основных преимущества перед традиционными циклами foreach.
Они более компактные и удобочитаемые, особенно при фильтрации по нескольким условиям.
Они предоставляют мощные возможности фильтрации, упорядочивания и группировки с минимальным объемом кода приложения.
Они могут быть перенесены на другие источники данных с минимальными изменениями или без изменений.
В общем случае, чем более сложные операции следует выполнить над данными, тем больше преимуществ от применения LINQ вместо использования традиционных методов итераций.
OfType<T> – преобразует любое перечисление в строго типизированный вариант, используя слабое преобразование типов, т.е. пропуская элементы, не являющиеся типом T.
object[] values = new object[] {"1", "2", "3", "AAA", 5}; IEnumerable<string> strings = values.OfType<string>(); // последний элемент будет пропущен, поскольку он не string
Where<T> — фильтрация по указанному критерию.
object[] values = new object[] { "1", "2", "3", "AAA", 5, "ABB" }; IEnumerable<string> strings = values.OfType<string>().Where(i => i.StartsWith(“A”)); // извлекаем все строки, которые начинаются на A
First<T> и Last<T> — извлечь первый и последний элемент перечисления. Заваливаются с исключением, если перечесление не содержит элементов.
Удалить дубликаты из перечисления можно методом Distinct<T>:
var values = new[] { "1", "1", "2", "2", "3", "3", "3" }; IEnumerable<string> strings = values.Distinct(); // "1", "2", "3"