ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание
Шрифт:
К этому моменту вы должны иметь более конкретное представление об общих функциональных возможностях, присущих всем поставщикам данных .NET. Напомним, что, хотя имена реализующих типов у разных поставщиков данных оказываются разными, у вас все равно есть возможность программировать эти типы в аналогичной манере – в этом и заключается преимущество полиморфизма, основанного на использовании интерфейсов. Так, если определить метод, имеющий параметр IDbConnection, вы сможете передать ему любой объект соединения ADO.NET.
То же можно сказать и о возвращаемых значениях. Рассмотрите, например, следующую простую программу на C#, которая позволяет вызывающей стороне получить конкретный объект соединения, используя значение пользовательского перечня (здесь предполагается, что вы указали оператор using для System.Data).
Преимущество использования общих интерфейсов System.Data заключается в том, что в этом случае у вас больше шансов создать более гибкий программный код, который дольше сможет оставаться актуальным. Например, если сегодня вы построите приложение, использующее Microsoft SQL Server, то что вы сможете сделать, если
Файлы конфигурации и гибкость приложений
Для повышения гибкости своих приложений ADO.NET вы можете на стороне клиента использовать файл *.config, в котором в рамках элемента ‹appSettings› можно указать пользовательские пары ключей и значений. Вспомните из главы 11, что пользовательские даяние можно прочитать программно с помощью типов из пространства имен System.Configuration. Предположим, что в файле конфигурации вы указали строки соединения и поставщика данных так, как показано ниже.
В этом случае вы можете добавить в Main строки, обеспечивающие программное чтение этих значении. В результате вы, по существу, создадите источник (т.е. генератор) поставщика данных. Вот как может выглядеть соответствующая модификация указанного метода.
Замечание. Тип ConfigurationManager появился в .NET 2.0. He забудьте также установить ссылку на компоновочный блок System.Configuration.dll и указать using для пространства имен System.Configuration.
Если предыдущий пример преобразовать в библиотеку программного кода .NET (а не в консольное приложение), вы получите возможность создать любое число клиентов, которые могут устанавливать свои соединения, используя различные уровни абстракции. Но чтобы построить действительно полезную библиотеку, реализующую возможности источника поставщика данных, вы должны также использовать объекты команд, объекты чтения данных, адаптеры данных и другие типы, связанные с обработкой данных. Хотя построить такую библиотеку программного кода будет не слишком сложно, для нее потребуется весьма большой по объему программный код. К счастью, что касается .NET 2.0, добрые люди из Редмонда уже встроили все необходимое в библиотеки базовых классов,