Мы все знаем, что DataReaders быстрее, чем DataTables, поскольку DataReader используется при построении DataTable.
Поэтому, учитывая, что у меня уже есть DataTable.... Почему я хочу преобразовать его в DataReader?
Ну, я создаю внутренний интерфейс под названием IDataProvider. Этот интерфейс предназначен для реализации как локально, так и как WebService. Интерфейс будет иметь метод Getdata, который принимает некоторые данные критериев и возвращает некоторые данные.
Поскольку DataReader является самым быстрым механизмом извлечения данных, я хочу использовать его как тип результата метода GetData. Однако мы также знаем, что DataReader не является сериализуемым и, следовательно, не может быть передан через Интернет через веб-службу...
В случае сети я бы попросил локальный прокси-класс запрашивать данные как DataTable, а затем преобразовать их локально в DataReader.
Таким образом Локальное приложение не должно знать (или заботиться) о том, что если он обращается к данным локально или удаленно.
Однако для этого мне нужно знать... Как мне поместить DataReader вокруг существующего DataTable?
Обновление. Моя бизнес-логика не будет храниться в веб-сервисе, поскольку DataProvider, использующий Web-сервис, может быть переключен на тот, который этого не делает. Таким образом, businessLogic будет храниться в клиентском приложении.
FWIW Я использую .Net 3.5 SP1