![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Зачем нужны многозвенки ?
Juice © (2005-10-28 19:16:00)Это серьезный вопрос, я без шуток :)
ANB (2005-11-01 16:28:00) [21]
> который без какого либо ручного программирования заносит
> данные в БД в нужной последовательности, со всеми доп. проверками,
> записью в журнал логов и т.п.
Хочу .Net !!!. Вообще то гуляла у меня мысля занятся этим в делфи. Но если .Net так крута, то зачем изобретать велосипед. Хотя берут меня жмуткие сомнения, что это все корректно работает и без ручного программирования. Иначе зачем бы народ покупал дорогущий Oracle Application, в котором без ручного программирования все равно не обойтись ? Все имхо.
Курдль (2005-11-01 15:30:00) [22]
> TohaNik © (01.11.05 13:56) [87]
> Может у меня мозги уже высохли, но толку от многотабличности
> не увидел.
> А связи и ограничения - так за ними и так база следит
Мы тут про трехзвенку?
Ну так прикинь, к примеру:
На клиентском приложении открылось окно ввода юридического лица. А к нему "привязан" датасэт. В этом датасэте штук пять таблиц - собственно субъект, его адреса, его счета, руководители и ответственные лица и т.п. Причем все связано релэйшнами, дополнены индексами и проверочными условиями.
И на самом первом этапе ввода данных юзером уже пройдут проверки типа "не заданы ли два юр.адреса", "не введено ли более одного главбуха" и т.п.
В результате - чистые данные, готовые к отправке на сервер приложений, который имеет описание дого же датасэта и готов принять эти данные "всем списком". И на его стороне есть класс - наследник от дата-адаптера, который без какого либо ручного программирования заносит данные в БД в нужной последовательности, со всеми доп. проверками, записью в журнал логов и т.п.
> Как по мне, так защищать как то надежней средствами самой
> базы, ну а если с нервами не в порядке так еще и в приложении
> можно затычек наставить:).
А защиту целостности базы никто и не отменял! Но для этого вполне достаточно правильной структуры БД и в сложных местах - парочку-тройку триггеров.
ANB (2005-11-01 14:06:00) [23]
> Зачем нужны ХП, если бОльшую часть работы по защите целостности
> данных в процессе их ввода, модификации и удаления берет
> на себя ADO.NET?
Может это и справедливо для MS SQL, т.к. T-SQL довольно ограниченная штука и на клиенте(сервере приложения) многое проще реализовать (ИМХО). Однако на PL/SQL реализуют полностью логику бизнес приложений, используя в качестве клиента обычный браузер. Плюс - хранимки в оракл таки быстрее клиентской обработки.
TohaNik (2005-11-01 13:56:00) [24]
> А датасэты в .NET - многотабличны и включают в себя релэйшны
> и констрэйнты
Может у меня мозги уже высохли, но толку от многотабличности не увидел.
А связи и ограничения - так за ними и так база следит
> Зачем нужны ХП, если бОльшую часть работы по защите целостности
> данных в процессе их ввода, модификации и удаления берет
> на себя ADO.NET?
Как по мне, так защищать как то надежней средствами самой базы, ну а если с нервами не в порядке так еще и в приложении можно затычек наставить:).
Все ИМХО - .NET этот только пощупал и расстроился, один фиг само не кодится :(
:)
Курдль (2005-11-01 13:11:00) [25]
> ANB © (01.11.05 09:57) [79]
> Трехзвенка в этом все равно не помошник. SQL у оракла и
> MS SQL настолько разный (особенно хранимок), что чтобы обеспечить
> совместимость хотя бы на уровне запросов, придется перейти
> на ANSI и жестоко потерять в производительности и возможностях.
Это что за догма про потерю производительности?
Зачем нужны ХП, если бОльшую часть работы по защите целостности данных в процессе их ввода, модификации и удаления берет на себя ADO.NET? Насчет триггеров еще можно поспорить, но без ХП отлично работается!
Курдль (2005-11-01 10:52:00) [26]
> Но все таки скажите свое веское слово в сторону DataSnap
К сожалению не могу сказать от себя, т.к. не работал с ней. Но мои коллеги, которые работали с DataSnap, ни в какое сравнение с .NET Remoting ее не ставят.
Лучше я скажу свое слово в сторону .NET Remoting.
С ее помошью можно создать весьма эффективную распределенную систему, даже не углубляясь в ее изучение, а используя примеры на уровне "Hello? World!"
Основа ее идеологии - создание объекта (класса), который реализован и "установлен, активирован..." на одном домене, а используется приложениями на других доменах (компах, хостах и т.п.).
Т.е. описываете класс с методами типаFillSubjectsDataSet(out DataSet ds)
так, что в его теле происходит доступ к БД (это сторона сервера приложения).
А со стороны клиента вызываете эти методы "как родные".
Т.е. вызов со стороны клиента метода навродеRemoteObject1.FillSubjectsDataSet(out ds);вернет датасэт ds, заполненный нужными данными. (А датасэты в .NET - многотабличны и включают в себя релэйшны и констрэйнты).
Juice (2005-11-01 10:37:00) [27]
> Изучите книжку "Microsoft .NET Remoting" (Скотт Маклин,
> Джеймс Нафтел, Ким Уильямс) и вопросов не будет.
Оно и было, вспомнил. Штука действительно волшебная судя по описанию. Но все таки скажите свое веское слово в сторону DataSnap, стоит ли тратить время и практиковаться в ней или нет ? Думаю что нет, но хочу услышать подтверждение своим словам. Этим я закрою для себя тему "технологии Borlanda", не в том плане что забью на них :) а просто наконец-таки все станет на свои места - что когда и в каких случаях использовать.
Курдль (2005-11-01 10:25:00) [28]
> Juice © (01.11.05 10:15) [81]
> Меня, как автора вопроса, интересовало именно это "иногда".
> Коллеги, приведите лучше примеры ситуаций когда без многозвенки
> просто не обойтись! И на чем по вашему мнению их лучше создавать
> - CORBA, DataSnap или что-то VS-нетовское? Слышал, что используя
> .NET многозвенки пишутся НАМНОГО быстрее и качественнее.
> Это так или просто маркетинг?
Готов забожиться, что круче, чем "VS-нетовское" я еше не видел!
Изучите книжку "Microsoft .NET Remoting" (Скотт Маклин, Джеймс Нафтел, Ким Уильямс) и вопросов не будет.
Reindeer Moss Eater (2005-11-01 10:25:00) [29]Вот пример из личного опыта.
Необходимо предоставить клиенту доступ к данным распределенным по корпоративной филиальной сети.
Клиент не должен заморачиваться с вопросом где какой сервер находится, клиент должен соединившись с одним сервером приложений получить нужные данные. При написании не использовалась ни одна из перечисленных выше технологий.
Juice (2005-11-01 10:15:00) [30]Курдль © (31.10.05 13:00) [62]
> Reindeer Moss Eater © (31.10.05 12:37) [58]
> Здесь никто и не говорит что многозвеньевые системы - это
> ацтой.
Я говорю, что это ацтой. Но иногда без него не обойтись.
Меня, как автора вопроса, интересовало именно это "иногда". Коллеги, приведите лучше примеры ситуаций когда без многозвенки просто не обойтись! И на чем по вашему мнению их лучше создавать - CORBA, DataSnap или что-то VS-нетовское? Слышал, что используя .NET многозвенки пишутся НАМНОГО быстрее и качественнее. Это так или просто маркетинг?
Anatoly Podgoretsky (2005-11-01 10:06:00) [31]ANB © (01.11.05 09:57) [79]
Не знаю как сейчас, но на старых Ораклах об ANSI не приходилось говорить, там же даже [*] JOIN не был поддержан.
А как сейчас с этим у Оракла?
ANB (2005-11-01 09:57:00) [32]
> Одно дело - слегка адаптировать логику сервера приложений
> под новую СУБД.
> Другое - переписывать всю серверную логику БД с PL/SQL на
> TSQL (к примеру).
> А если заказчик попросит вовсе неизвестную мне СУБД подключить?
>
Трехзвенка в этом все равно не помошник. SQL у оракла и MS SQL настолько разный (особенно хранимок), что чтобы обеспечить совместимость хотя бы на уровне запросов, придется перейти на ANSI и жестоко потерять в производительности и возможностях. Или писать сразу 2 ветки, что явно не снижает трудоемкости. Видел 2 очень отрицательньных примера : ИНФИН (универсальность убила гибкость), новая система для налоговых - ЭОД "АИС Налог" - трехзвенка на MS SQL, которую переносят на оракл уже 6 лет.
ЗЫ. А не пойти ли нам по этому поводу в "потрепаться" ?
Reindeer Moss Eater (2005-11-01 09:52:00) [33]Ну если этот мой компрессирующий шлюз является звеном трехзвенной системы, то я наверное должен иметь возможность реализовать на нем хоть какое-нибудь бизнес правило своей системы.
Так или нет?
И какое же бизнес правило можно реализовать в этом шлюзе или модеме?
Polevi (2005-11-01 08:13:00) [34]да что транспорт тут некоторые слой представления не считают звеном
Anatoly Podgoretsky (2005-10-31 19:56:00) [35]Траспорт и разъемы прошу оставить в покое.
Reindeer Moss Eater (2005-10-31 19:46:00) [36]Раз не является, то и система получается классическая клиент-серверная, двузвенная. Но в которой присутствует сжатие потоков данных.
Я про это и говорил.
Piter (2005-10-31 17:48:00) [37]Reindeer Moss Eater © (31.10.05 12:33) [53]
Она просто жмет трафик. Любой трафик. Не только клиента Оракла, а вообще любой.
И не является она звеном многозвенки
тогда да - не является. А как иначе?
Если несогласен - прошу дать свое определение многозвенки.
Reindeer Moss Eater (2005-10-31 16:35:00) [38]Ну само собой, серверный код БД значительно отличался на этих двух серверах. А клиент был минимально завязан на особенности той или иной платформы.
Курдль (2005-10-31 16:26:00) [39]
> Reindeer Moss Eater © (31.10.05 16:21) [71]
> Это уже десятый вопрос.
> Приложение было двузвенным и могло работать с двумя типами
> серверов.
Да как же "десятый", если для меня - это первый вопрос при альтернативе двухзвенка/трехзвенка для разнобазовых систем!
Одно дело - слегка адаптировать логику сервера приложений под новую СУБД.
Другое - переписывать всю серверную логику БД с PL/SQL на TSQL (к примеру).
А если заказчик попросит вовсе неизвестную мне СУБД подключить?
Reindeer Moss Eater (2005-10-31 16:21:00) [40]И как достигалась целостность данных, например которая в БД решается триггерами?
Логикой работы клиента?
Это уже десятый вопрос.
Приложение было двузвенным и могло работать с двумя типами серверов.