Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 | 2 | 3 |

 

  Вопрос: Подходящий DataSet Добавлено: 19.05.05 16:39  

Автор вопроса:  danser | ICQ: 299287824 

Ответить

  Ответы Всего ответов: 35  

Номер ответа: 16
Автор ответа:
 Павел



Администратор

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #16
Добавлено: 21.05.05 16:08
Код на самом деле очень прост... Только фишка в том, что он создает нетипизированный DataSet.
Может ты просто не понимаешь разницу?..

Ответить

Номер ответа: 17
Автор ответа:
 Павел



Администратор

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #17
Добавлено: 21.05.05 16:11
Сорри, исправлюсь, невнимательно посмотрел твой код :)
Тут описано ручное создание типизированного DataSet'а, которое в теме уже описывалось выше...

В общем, давайте не будет продолжать пустой разговор... Артем всё правильно сказал, что сделать можно, но это будет довольно тормозной, неэффективный, а самое главное - абсолютно ненужный код, ибо проще использовать нетипизированный DataSet.

Ответить

Номер ответа: 18
Автор ответа:
 ⊗WaX⊗



Вопросов: 26
Ответов: 325
 Web-сайт: sapfir.cift.ru
 Профиль | | #18
Добавлено: 21.05.05 17:45
Кто то кого-то уже отправлял к окулисту :)
Что такое типизированный датасет я понимаю я не понимаю какой смысл его использовать.
Читал читал так и не увидел выгоды для себя.

Ответить

Номер ответа: 19
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #19 Добавлено: 21.05.05 18:50
Смысл есть, но в основном он выражается именно в удобстве использования.

Вместо этого:

Messagebox.Show (DS.Tables("users";)(10)("name";).ToString)

Пишется это:

MessageBox.Show(DS.Users(10).Name)

Т.е. не нужно выполнять преобразование типов (Cint, Cdate и т.п.) - все типы
заданы жестко.
Соответственно, я не смогу по ошибке в поле "name" вставить дату.

Избегаются многие ошибки, связаные с невнимательностью.
Если я, например, вместо поля "name" напише "nmae" и не замечу этого, то
ошибку я словлю только во время выполнения, хотя с тиипзированным датасетом
эта ошибка в принципе невозможна.

Еще одно преимущество (правда им я не пользвоался) - по идее, в DataSet
задаются пределы значений определенного поля, т.е., например, можно указать,
что в поле Age можно вводить только неотрицательные числа меньше 150.

Ну и в .Net 2.0 типизированный DataSet в сочетании с TableAdapter - это
очень мощный высокотехнологический инструмент, благодаря которому фактически
весь код доступа к БД вместо десятков строк на функцию (создание SQLCommand,
Connection, DataTable и т.д.) сводится к следующему:

Dim TA As New UsersTableAdapter
Dim Users As UsersDataTable = TA.GetAll ()

UsersDataTable - это типизированная таблица (DataTable)

Ответить

Номер ответа: 20
Автор ответа:
 ⊗WaX⊗



Вопросов: 26
Ответов: 325
 Web-сайт: sapfir.cift.ru
 Профиль | | #20
Добавлено: 22.05.05 13:25
2 Артем
1. Да все это я знаю - неубелительно как то.
А что если я в БД в силу ряда причин меняю тип данных как вариант делаю Char длиннее мне все типизированные навороты нужно будет перегенерить?
А если заказчик в конце проекта скажет я хочу, чтобы в базу писалось еще вот это и вот это тоже все типизированные вещи переделывать?

2.
А типизированную таблицу ты как создаешь?

ИМХО зря все это. Все равно вся визуальность доступна только для SQL server'a нам же простым бедным пользователям Postgres и my SQL все эти полезности как то совсем бесполезны.

Да и вопрос
в 2.0 провайдеры для 1.1 работают или я зря его качаю (2.0 в смысле)

Ответить

Номер ответа: 21
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #21 Добавлено: 22.05.05 14:52
А что если я в БД в силу ряда причин меняю тип данных как вариант делаю Char длиннее мне все типизированные навороты нужно будет перегенерить?

Да.

А если заказчик в конце проекта скажет я хочу, чтобы в базу писалось еще вот это и вот это тоже все типизированные вещи переделывать?

Типизированный DataSet в этом случае нужно дополнить соответствующими полями.

А типизированную таблицу ты как создаешь?

В состав типизированного DataSet входят и типизированныет таблицы.
Выше я приводил код, как эта таблица используется.

Вообще, если есть подозрение, что приложение будет серьезно масштабирваться, что в приложении потребуется сложная бизнес-логика, что БД может подвергаться изменениям, то стоит подумать уже не о том, чтоб ограничиться одним DataSet, а использовать более сложную модель, в т.ч. с моделью предметной области.

Ответить

Номер ответа: 22
Автор ответа:
 ⊗WaX⊗



Вопросов: 26
Ответов: 325
 Web-сайт: sapfir.cift.ru
 Профиль | | #22
Добавлено: 22.05.05 16:02
Что такое модель предметной области?
Если приложение это клиент БД то все, что должно делать клинтское приложение это отображать данные и добавлять новые. Обработкой, провверкой, корректировкой данных должна заниматься СУБД.
ИМХО.

А типизированную таблицу ты как создаешь?

В состав типизированного DataSet входят и типизированныет таблицы.
Выше я приводил код, как эта таблица используется.


Как ты ее создаешь в 2.0 так же как и в 1.1 Мастером?

Ответить

Номер ответа: 23
Автор ответа:
 Павел



Администратор

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #23
Добавлено: 22.05.05 16:56
Не согласен. Бывают разные ситуации. Где-то эффективней разместить бизнес-логику в СУБД, где-то лучше - на веб-сервере, где-то - на клиенте, а где-то вообще разнести по разным уровням.

Ответить

Номер ответа: 24
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #24 Добавлено: 22.05.05 18:31
Что такое модель предметной области?

Модель предметной области (Domain Module) - это способ организации уровня домена.
Фактически она представляет собой граф с объектами, каждый из которых соответствует определенной сущности.

То есть, ты работаешь не с базой данных, не с SQL-запросами, а с объектами.

Откуда они берутся и куда потом сохраняются - это не столь важный вопрос, может сохраняться в серверной реляционной БД, может в обычный XML-файл или вообще можно полностью этот граф сериализировать :)

Если приложение это клиент БД то все, что должно делать клинтское приложение это отображать данные и добавлять новые. Обработкой, провверкой, корректировкой данных должна заниматься СУБД.
ИМХО

В корне не согласен.
ИМХО:
СУБД - это только часть приложения, которая отвечает только за загрузку и сохранение данных. Все остальное должно быть реализовано в домене.
В том числе потмоу, что приложение не должно зависеть от источника данных.

Как ты ее создаешь в 2.0 так же как и в 1.1 Мастером?


В 1.1 я практически не использовал типизированные датасеты.

А в 2.0 это делаю мастером.
Фактически я выбираю источник данных, пишу SQL-запрос (для особо одаренных есть фича автогенерации запросы, типа Query Builder), жму ОК и создается типизированная таблица и TableAdapter.

2 Павел:
Не согласен. Бывают разные ситуации. Где-то эффективней разместить бизнес-логику в СУБД, где-то лучше - на веб-сервере, где-то - на клиенте, а где-то вообще разнести по разным уровням.

На клиенте имхо размещать бизнес-логику - это все равно что копать себе яму, зная, что все равно в нее упадешь.
А если бизнес-логика реализована в домене, то пропадает зависимость от клиента.

Что касается СУБД, я уже говорил выше.

Ответить

Номер ответа: 25
Автор ответа:
 Павел



Администратор

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #25
Добавлено: 24.05.05 10:38
На клиенте имхо размещать бизнес-логику - это все равно что копать себе яму, зная, что все равно в нее упадешь.

В любом мало-мальски серьезном приложении хотя бы небольшая часть бизнес-логики размещается на клиенте...

Кстати, Билл Гейтс тоже не отрицает такой вариант :) Из книги "Бизнес со скоростью мысли":

И, наконец, последняя, четвертая часть Windows DNA - механизм, позволяющий осуществлять обработку данных на том компьютере, на котором она будет выполнена наиболее эффективно: в одних случаях на клиенте, в других на сервере, в третьих - частью там, а частью тут; а иногда - это требуется, например, мобильным пользователям - вычислительные процессы дублируются на клиенте и на сервере.

Ответить

Номер ответа: 26
Автор ответа:
 ⊗WaX⊗



Вопросов: 26
Ответов: 325
 Web-сайт: sapfir.cift.ru
 Профиль | | #26
Добавлено: 24.05.05 18:35
Как обычно истина посередине. Если называть бизнес логикой, то что поле счет должно быть заполнено, не обязательно пересылать данные СУБД, чтобы она в конце длинной транзакции вылетела по not null constraint и откатывала данные. Достаточно просто показать мессаджбокс с ошибкой и обратно если проверка ввода достаточно трудоемка и тем более основанна на внутрикорпоративных заморочках которые как известно меняются со скорстью размножения мух дрозофил. То гораздо проще повесить триггер. И в зависимости от контекста обругиваться.

Артемов вариант если честно меня не впечатлил, если в моем варианте участвуют два разработчика программист БД и программист форм, то тут появляется еще и третий - программист логики. Если можно Артем приведи простенький пример этого третьего звена.
Может быть это конечно и интересный варант.
See Ya

Ответить

Номер ответа: 27
Автор ответа:
 Павел



Администратор

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #27
Добавлено: 25.05.05 10:26
2 WaX: трехуровневая архитектура приложений (MVC,
Model-View-Controller) - одна из самых распространенных, и я удивлен,
что ты о ней не знаешь...
Например, этот сайт я разрабатывал согласно этой архитектуре. Вся (ну,
не вся, конечно, все равно частично код обработки данных есть на
клиенте и в СУБД) бизнес-логика размещена в .NET Class Library. Эта
библиотека содержит классы, взаимодействующие с СУБД SQL Server 2000,
получает и передает данные в БД, занимается проверкой и кешированием
данных.

Ответить

Номер ответа: 28
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #28 Добавлено: 25.05.05 17:36
Артемов вариант если честно меня не впечатлил, если в моем варианте участвуют два разработчика программист БД и программист форм, то тут появляется еще и третий - программист логики.

Что значит в твоем понимании "программист БД"?
Если это человек, который разработывает интерфейс доступа представления (твоей формы) к БД, то этот программист и должен делать модель.

Если можно Артем приведи простенький пример этого третьего звена.


Пример привести не могу, тк доступа к исходным кодам корпоративных приложений по некоторым причинам у меня нет.
Я еще раз могу объяснить принцип - вместо таблиц ты использвешь объекты, которые в нужное время сохраняются в БД.
А реализация для каждого случая будет отличаться, причем очень сильно - от той же корпоративной политики.

Ответить

Номер ответа: 29
Автор ответа:
 ⊗WaX⊗



Вопросов: 26
Ответов: 325
 Web-сайт: sapfir.cift.ru
 Профиль | | #29
Добавлено: 25.05.05 18:42
2 Павел и Артем
Естественно знаю меня интересовал этот третий уровень на XML как говорил Артем.

Если честно то всегда так и поступал - вся бизнес логика реализовывалась в библиотеках (как во всех умных книгах написано:) ) частично я это делаю и теперь, но сейчас там остался только интерфейс доступа к БД, по возможности стараюсь реализовывать всю логику в Хранимых процедурах и Представлениях к счастью Постгрес это позволяет. Причину этого объясню: например решили изменить тех процесс обработки детали если вся бизнес логика построена на классах, то нужно будет перекомпилировать весь проект либо библиотеки мне же достаточно внести изменения толко в одну хранимую процедуру. Захотели видеть дополнительные данные - пожалуйста изменил вьюху и все - даже программу закрывать не нужно. Можно конечно все библиотеки содержащие логику хранить на сервере и загружать их при запуске либо реализовать механизм обновления, но ИМХО гимор это...

Ответить

Номер ответа: 30
Автор ответа:
 Павел



Администратор

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #30
Добавлено: 25.05.05 19:03
Ну зачем гемморой с автообновлением?.. Гораздо красивей хостить
бизнес-логику под IIS (на ASP .NET), и обращаться к ней через механизм
веб-сервисов..

А вообще, все зависит от приложений и их масштабов. В действительно
серьезных приложениях гораздо удобнее организовать доменную модель
бизнес-логики...
В SQL Server 2005 можно конечно побольше кода переместить на уровень
СУБД, так как там CLR интегрирована в ядро СУБД и можно писать ХП на
CLS-языках...
Но, опять же, единых подходов не существует, и все целиком зависит от
специфики приложения.

Ответить

Страница: 1 | 2 | 3 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам