|
Создание сервера приложений
|
|||
---|---|---|---|
#18+
Извиняюсь. Не тот пример. declare @ProcName varchar(128) select top 1 @ProcName = o.name from sysobjects o join ObjectTypeTree t on ‘sp’ + t.ParentType + ‘_CalcPrice’ = o.name and o.xtype = ‘P’ and t.Type = @Type order by t.Level desc exec @Err = @ProcName @ThingId Этот код написан в виртуальной процедуре. Он найдет процедуру конкретную. Если у наследника не будет своей процедуры, то вызовется процедура родителя -------------------- Не учи отца и баста! ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2005, 18:26 |
|
Создание сервера приложений
|
|||
---|---|---|---|
#18+
Не нравится эмуляция, возьмите Каше -------------------- Не учи отца и баста! ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2005, 18:27 |
|
Создание сервера приложений
|
|||
---|---|---|---|
#18+
Либо Вы в SQL эмулируете объекты, либо в ООП эмулируете SQL Что лучше? Лучше Каше. Но пока я не нашел заказчиков, а если будут, то обязательно буду создавать объекты в Каше и писать у них методы на SQL -------------------- Не учи отца и баста! ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2005, 18:31 |
|
Создание сервера приложений
|
|||
---|---|---|---|
#18+
Old NickЛибо Вы в SQL эмулируете объекты, либо в ООП эмулируете SQL Ну большинство высказавшихся тут считает что ООП нужно только чтобы формочки рисовать, так что хоть один свежий взгляд на проблему. Хотя я не эмулирую SQL при помощи ООП, ООП - это просто еще один уровень абстракции над базой данных. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2005, 18:34 |
|
Создание сервера приложений
|
|||
---|---|---|---|
#18+
VladiCh tygraТак и был вопрос - чего кэшируете? Мне честно говоря надоело повторять, можете прочитать выше парой страниц, пишу в последний раз: кэшируются например метаданные для типов объектов + некоторые наиболее часто используемые выборки системных объектов. Полагаться для этого на кэш СУБД нет никакого резона. Про метаданные на клиенте, вам виднее, надо оно или нет, при логике в СУБД имхо такой вопрос просто не стоит. Про выборки часто используемых системных объектов я не очень понял, что вы называете системными объектами- АцессКонтролЛисты и права пользователей? редко-меняемые справочники? Имхо с точки зрения производительности, скорей всего вы не сэкономили на таком кэшировании ничего, может быть чуть-чуть сетевого трафика. Джойнами с маленькими справочниками производительность СУБД сильно не подсадишь. Другой вопрос, что вам пришлось их закэшировать, т.к. ваша объектная архитектура вылилась в мощный поток мелких обращений к СУБД за данными из этих самых "маленьких справочников", что и привело к тормозам. Права доступа закэшированные в апп-сервере, опять-таки имхо, не слишком удобны. При любом их изменении придется либо пинать все апп-сервера либо ждать пока они авто-обрефрешатся. Ну чтож сами придумываем проблемы- сами решаем - весело :) ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2005, 19:16 |
|
Создание сервера приложений
|
|||
---|---|---|---|
#18+
А вы как, сами решили что я делаю, сами покритиковали, сами сделали вывод? Разумеется, права доступа не кешировались. Если вам кажется, что вопрос о кэшировании метаданных при логике в СУБД не стоит, то вы ошибаетесь. СтоИт, да еще как. Моя объектная архитектура построена так, чтобы как раз минимизировать количество обращения к СУБД, с чем успешно и справляется в том числе и за счет кэширования. Проблемы к счастью мне придумывать не надо, их и без придумывания достаточно. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2005, 19:28 |
|
Создание сервера приложений
|
|||
---|---|---|---|
#18+
2tygra: Я уже писал, повторю еще раз. А товсе требуют примера ООП в БЛ. Вот пожалуйста. Случай простейший. Опишите как это будет работать на простых ХП и после этого мы можем сравнить результаты. Давайте представим, что существует вот такая СУБД (объектно-реляционная): 1. Возможность создавать классы, соответствующие данным 2. Методы классов можно писать на языке а-ля С# + SQL 3. Наследование автоматически включает хранимые [Stored] поля базовых классов, а таблица задается "верхним" классом (для примера ниже все документы, имеющие в базовом списке DocumentBase будут иметь поля Number и Status, а кто унаследован от DocumentSign - Number, Status и SignedBy). Тогда для вымышленной системы документооборота можно иметь следующую иерархию: class DocumentBase //базовые свойства документов { [Stored] string Number; [Stored] int Status; ...... } class DocumentSign : DocumentBase //базовый класс для документов, треб. { // подпись [Stored] SignedBy: CPerson; method Sign( person : CPerson) { SignedBy = person; Save(); } } ...... Тогда в коде приложения на РМ, где происходит операция подписи документа, независимо от типа документа ( накладная, заявление по собств. желанию ....) выполняется код: (DocumentSign)currentDocument.Sign( currentUser); Хотелось бы увидеть, как может выглядеть структура данных + ХП для аналогичный случая на обычной системе КС + РСУБД. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2005, 19:53 |
|
Создание сервера приложений
|
|||
---|---|---|---|
#18+
VladiChА вы как, сами решили что я делаю, сами покритиковали, сами сделали вывод? Разумеется, права доступа не кешировались. Если вам кажется, что вопрос о кэшировании метаданных при логике в СУБД не стоит, то вы ошибаетесь. СтоИт, да еще как. Моя объектная архитектура построена так, чтобы как раз минимизировать количество обращения к СУБД, с чем успешно и справляется в том числе и за счет кэширования. Проблемы к счастью мне придумывать не надо, их и без придумывания достаточно. Ладно извиняюсь я сужу по системам которые я видел, говорить за вашу - это я погорячился. А вы могли бы конкретизировать, зачем кэшировать метаданные при логике в СУБД. Или вы про АДО,ДАО,ЛинкедСервера? Это да - любят они метаданные закачать :) Ну так их с умом надо использовать просто. Вы не могли бы, кстати, ответить на вопросы, которые я задавал на странице 6 топика? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2005, 19:55 |
|
Создание сервера приложений
|
|||
---|---|---|---|
#18+
ВМоисеевVoDA, насчет того, что SQL сервер построит выборку быстрее нет сомнений, это его хлеб. Но что дальше будете делать с выборкой - пересылать клиентам? И сервер будет заниматься её обработкой? Здесь я с Вами принципиально расхожусь. Я за сервера приложений и распределенные вычисления. Достаточно долго разрабатывал системы управления тех. процессами. Там эти споры заглохли давно - контроллеры имеют право на существование. Но разницу между этими областями понимаю. Суважением, Владимир.А что до этого системы управления тех.процессами писали на СУБД? ;) Если вы думаете, что вас здесь убеждают весь софт в мире и особенно АСУТП переписать на TransactSQL - то это не так. Обсужение вертится вокруг учетных систем предприятий разного размера и сложности. ВМоисеевDrKonito. Спасибо за перенос акцентов. Меня интересуют не споры, что лучше двухзвенка-многозвенка, а варинты построения реальных многозвенных систем. Но на Ваши прямые вопросы по существу я не могу дать столь же прямые и исчерпывающие вопросы. И вот почему - я разрабатываю один из возможных вариантов построения прототипов (типовых моделей) многозвенных защищенных информационных систем для обслуживания многих(тысяч) клиентов. Разрабатываю один и достаточно много лет. Предпоследний вариант был для DCOM, но три года назад узнал о возможностях .Net и все свои знания и опыт попытался воплотить в при построении реальной системы в данной среде. Отчет, о то что и как получилось опубликовано здесь (повторяюсь): http://www.gotdotnet.ru/LearnDotNet/NETFramework/125377.aspx (первая и третья редакции). Прочитал я вашу статью про прототип приложения. Имхо такой подход укладывается в то, что tygra назвал "толстый драйвер". Насколько я понял в вашей системе бизнес-логическая процедура (в моем понимании) только одна и она собственно находится на сервере СУБД. Так что преимущества выноса бизнес-логики в отдельный слой этот прототип не иллюстирует. Имхо вопросы аутентификации, авторизации, шифрования в учетных системах ну никак не отнесешь к бизнес-логике. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2005, 19:59 |
|
Создание сервера приложений
|
|||
---|---|---|---|
#18+
авторdeclare @ProcName varchar(128) select top 1 @ProcName = o.name from sysobjects o join ObjectTypeTree t on ‘sp’ + t.ParentType + ‘_CalcPrice’ = o.name and o.xtype = ‘P’ and t.Type = @Type order by t.Level desc exec @Err = @ProcName @ThingId А вам не кажется, что данная логика значительно лучше реализуется на ОО языках вместо того, чтобы городить это на сервере. Ведь именно про такую обвязку и говорил Д. Сорокин в первых постах. Как у вас вызвается метод базового класса? Тоже через такой поиск? Зачем??? Если это пример того, как "снижаются" расходы на разработку - то я молчу. Релиазовывать С++ на T-SQL, да еще и так, что это становится делом ВСЕХ разработчиков системы - это что-то. В вашей реализации любой девелопер, разрабытвающий БЛ должен знать, что при добавлении метода ему нужно сделать "виртуальный", в нем пробежаться по таблице типов, выбрать нужный по имени и его вызвать. А если потом ошибиться на одну букву в названии метода для типа - то еще и ошибку получить. Великолепно. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2005, 20:07 |
|
Создание сервера приложений
|
|||
---|---|---|---|
#18+
Вообще-то это старая версия. В новой используются метаданные не сервера, а системы и писать такую конструкцию не нужно, для этого есть макрос. Кроме того ошибиться в буковке класса невозможно, так методы создаются из системы и имя класса там не фигурирует ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2005, 20:30 |
|
Создание сервера приложений
|
|||
---|---|---|---|
#18+
DrKonito, >А что до этого системы управления тех.процессами писали на СУБД? Да я не об этом. В мире систем управления стало почти аксиомой распределять вычисления по контроллерам (уровням, слоям) сети. Многомашинность. >Прочитал я вашу статью про прототип приложения. Имхо такой подход укладывается в то, что tygra назвал "толстый драйвер". Если Вам так более понятно, пусть будет "толстый драйвер", хотя я предпочитаю термины функциональные слои (звенья) и сервера приложений. Для меня важно построить типовую модель распределенной вычислительной сети, основанную на .Net Remoting сервисах. Сервисы могут располагаться и на отдельных компьютерах (и несколько сервисов на одном компе), а могут и на ваших суперкомьютерах серверов данных. Для меня сервер данных поставляет выборку, выполняя хранимую процедуру, реализующую запрос сервера приложений, который в свою очередь получает его от клиента. Выборка для прототипа конкретно - страница. Эту страницу надо вернуть клиенту, предварительно осуществив сжатие и шифрование. И запрос от клиента (последовательность байтов (сериализация)) надо декомпрессировать, дешифровать, проанализировать, построить SQL предложение запроса и вызвать сервер данных. Возможна передача в запросе от клиента переменного числа параметров и их также надо обработать. MS SQL имеет относительный максимум призводительности по числу одновременно выполняемых запросов (не знаю как Oracle). Число серверов приложений в прототипе находится где-то рядом с этим максимумом. Причем сервер приложений открывает одно соединение с сервером данных и в дальнейшем не отпускает его. Мне надо, что-бы все серверы приложений работали под одним аккаутом (строка соединения постоянна и не зависит от клиента). Поэтому выполняю аутентификацию клиента и построение клиентской сессии по полной схеме. Я могу (стараюсь по крайней мере) проанализировать время выполнения запроса (группирую их) и дать возможность выполняться быстрым запросам, притормаживая долгоиграющие. >Имхо вопросы аутентификации, авторизации, шифрования в учетных системах ну никак не отнесешь к бизнес-логике. Навыерное Вы правы - скудность словарного запаса. Это функциональность сервера приложений. Хотя, что называть бизнес логикой. Но это не суть важно. С уважением, Владимир. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2005, 22:13 |
|
Создание сервера приложений
|
|||
---|---|---|---|
#18+
VladiChУу... Как у вас все запущено... Например если в документе есть поля, которые надо выделять отдельно, но на бизнес-логику они никак не завязаны, зато по ним например может производиться поиск, то мне не придется изменять ничего, просто в конфигураторе описать новые поля. ... Разграничение прав доступа проверяется тоже в этих универсальных процедурах. Ой, дежавю... Вы 2С разработали?! Зачем, уже же есть 1С со всем известными ее проблемами?! ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2005, 07:56 |
|
Создание сервера приложений
|
|||
---|---|---|---|
#18+
Вот как так? Говоришь одно, спрашиваешь одно - отвечают другое....... ООП А вам не кажется, что данная логика значительно лучше реализуется на ОО языках вместо того, чтобы городить это на сервере. Ведь именно про такую обвязку и говорил Д. Сорокин в первых постах. Как у вас вызвается метод базового класса? Тоже через такой поиск? Зачем??? Нам не кажется. А вы привели бы пример этого всего на ООП - а мы посмотрим, как прекрасно, когда БЛ зависит от клиента. Особенно если вдруг версии клиента разные. :)) Ну еще вам наверное интересно писать в клиенте кучу структур, вместо одной маленькой и простой ХП? А потом править там же, на клиенте - так? Или не так? А как? Хотелось бы пример. ООП Если это пример того, как "снижаются" расходы на разработку - то я молчу. Релиазовывать С++ на T-SQL, да еще и так, что это становится делом ВСЕХ разработчиков системы - это что-то. У вас очки не те одеты - вы о каком С++? Или ..а, понятно, вот почему ООП - вы же только на С++ умеет с данными работать, а на SQL кроме select * from table ничего боле не можете. Ну так ваши проблемы, что sql не родной. ООП В вашей реализации любой девелопер, разрабытвающий БЛ должен знать, что при добавлении метода ему нужно сделать "виртуальный", в нем пробежаться по таблице типов, выбрать нужный по имени и его вызвать. А если потом ошибиться на одну букву в названии метода для типа - то еще и ошибку получить. Великолепно. Я даже и не понял, о чем это вы? Но все-равно, получается, что в вашей реализации ничего вообще делать не надо - методы сами откуда-то берутся, материализуются силой мысли. :)) -------- VladiCh Мне для заведения нового атрибута в самом простом случае не потребуется ни того, ни другого, ни третьего. В системе есть т.н. расширенные атрбуты, которые хранятся вертикально в отдельной таблице. Например если в документе есть поля, которые надо выделять отдельно, но на бизнес-логику они никак не завязаны, зато по ним например может производиться поиск, то мне не придется изменять ничего, просто в конфигураторе описать новые поля. Ну давайте сначала определимся - есть атрибуты, которые хранятся где-то отдельно от основной таблицы, и есть поля таблицы. Так вот при изменении полей таблицы вам все-равно придется менять везде. И нам тоже :) При изменении атрибутов вам не надо менять - автоматика, понимаешь. Ну и нам тоже :) Вот отсюда и вопрос, опять и опять: зачем тогда вам объект, если у нас его нет, а делаем мы с вами одно и тоже. :)) VladiCh Пользователь дергает эти методы... Эти методы реализуются по-разному у разных типов объектов, но пользователь их дергает одинаково. Ну конечно одинаково - одну ХП :) Только для того, чтобы ее дернуть, не надо городить городушки на клиенте - просто exec ChangeState @ID, @SID. И как бы логика не поменялась - всегда только этот вызов, с любого клиента, даже если у вас кроме ID и названия объекта ничего больше нет (естественно и никаких ООП). авторДля выполнения этих методов объекту нужны атрибуты, загружаемые з базы. Вот! А нам не нужно ничего загружать из базы - все там в ней самой и делается. Что проще? VladiCh Может быть я конечно непонятно пишу, не знаю... Но мне почему-то кажется, что дело не во мне, просто кое-кто упорно не желает понимать простейших вещей. Ну, мы просто не можем никак понять, зачем вам объекты со всеми их атрибутами и методами, которые как-то генерит какой-то специальный механизм. Почему непонятно - потому что непонятно, зачем делать сложнее, если можно проще, причем намного. Было бы у вас проще - мы бы другое говорили. VladiCh Разумеется можно дернуть одну ХП, которая внутри определит тип товара и дернет другую ХП. При добавлении нового типа товара вам нужно будет переписывать эту ХП. Ну если вы хотите - переписывайте. Обычно не переписывают - одна базовая ХП имеет только механизм для разборки, что, кто, зачем и где дернуть, вся же обработка естественно для каждого типа товара написана отдельно. Но тут уж простор реализаций - кто алгоритмы хранит и потом обрабатывает, а кто и отдельные процедуры пишет. Но сводится все к одному: дернули базовую ХП, она поняла тип, по типу определила, что исполнить, исполнила, отдала ответ. Все. Зачем тут ООП, да еще на клиенте? Зачем вообще для этого что-то на клиенте? Я еще раз обозначу проблему: зачем вам объекты? Ну приведите пример объекта, примерное описание кода, который делает объект на клиенте и т.д. Потому что пока все-равно не понятно - у нас сделано все намного проще, а работает так же. Смысл делать сложнее? Может рассказать и про мой "механизм", так, для информации? Может... -- Tygra's -- ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2005, 10:23 |
|
Создание сервера приложений
|
|||
---|---|---|---|
#18+
ASCRUSНу давайте уважаемые адепты 3-х звенок спустимся наконец на землю и на конкретных примерах от вас услышим, что же это за бизнес-логика такая у вас сложная, что она выльется в тысячи хранимых процедур с большим кол-вом кода, да еще который из за изменения ТЗ весь почему то лопатить придется ? Спор для себя считаю бессмысленным, хотя аргументы интерсны. Приведу только пример 3-х (много) звенки. Система регистрации пользователей. Веб-интерфейс - запрос пользователя о своих данных. 1. Обработка - проверка корректности данных по базе данных и далее 2. Созадть учетную запись в Active Directory в нужном домене (на основании данных из базы данных), занести в нужные группы (на основании должностей, категорий, ролей и т.п.) 3. Создать личную папку на файловом сервере и дать на нее права. Создать при необходимости папку отдела на сервере и дать на нее права вновь созданной учетной записи 4. Создать папку на другом сервере и дать на нее права 5. Создать запись в базе данных Ну ладно, по здешним парвилам веб-приложение не считается отдельным слоем. Ладно - сравнение на корректность 1 и п.5. можно делать или там же или в ХП. Теоертически какжется где-то мелькала информация, что можно даже создать учетную здапись из СУБД (но кажется речь шла исключительно о MS SQL - тут не буду спорить). НО п.3 и п.4. Можно сделать только с помощью приложения, работающего на тех же серверах, где файловые серверы и приложения, конечно, не SLQ. У нас на С++, возможно и на функциональных написать, только не понятно, чем они здесь лучше обычного С++, или просто С. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2005, 10:52 |
|
Создание сервера приложений
|
|||
---|---|---|---|
#18+
MainFrameНО п.3 и п.4. Можно сделать только с помощью приложения , работающего на тех же серверах, где файловые серверы и приложения, конечно, не SLQ. У нас на С++, возможно и на функциональных написать, только не понятно, чем они здесь лучше обычного С++, или просто С.Спорно. У меня, как пример, закачкой данных на сервер занимается сам сервер. Реализованно очень просто - сервер запускает шелл-команду и все... PS это не панацея, а просто пример того, что приложением может выступать и сам SQL-сервер. ---- SAnalis.ru - Just for fun. Еще расту, а так я ДЖИП! ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2005, 11:02 |
|
Создание сервера приложений
|
|||
---|---|---|---|
#18+
MainFrameПриведу только пример 3-х (много) звенки. Система регистрации пользователей. Веб-интерфейс - запрос пользователя о своих данных. Эээ... Интересный, пример, однако... Особенно в плане темы топика "Сервер приложений". И где тут бизнес-логика?! Голимое администрирование... авторНО п.3 и п.4. Можно сделать только с помощью приложения, работающего на тех же серверах, где файловые серверы и приложения, конечно, не SLQ. И какие проблемы вызвать это приложение на удаленном сервере?! про расширенные хп вы слышали? Которые можно на том же С++ написать и дергать их в СУБД. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2005, 11:04 |
|
Создание сервера приложений
|
|||
---|---|---|---|
#18+
MainFrame ASCRUSНу давайте уважаемые адепты 3-х звенок спустимся наконец на землю и на конкретных примерах от вас услышим, что же это за бизнес-логика такая у вас сложная, что она выльется в тысячи хранимых процедур с большим кол-вом кода, да еще который из за изменения ТЗ весь почему то лопатить придется ? Спор для себя считаю бессмысленным, хотя аргументы интерсны. Приведу только пример 3-х (много) звенки. Система регистрации пользователей. Веб-интерфейс - запрос пользователя о своих данных. Позволю себе слегка изменить порядок действий 0. Первичная проверка правильности ввода клиентом (JavaScript) MainFrame1. Обработка - проверка корректности данных по базе данных и далее 5. Создать запись в базе данных Выполняются в хранимой процедуре MainFrame2. Созадть учетную запись в Active Directory в нужном домене (на основании данных из базы данных), занести в нужные группы (на основании должностей, категорий, ролей и т.п.) 3. Создать личную папку на файловом сервере и дать на нее права. Создать при необходимости папку отдела на сервере и дать на нее права вновь созданной учетной записи 4. Создать папку на другом сервере и дать на нее праваВыполняются скриптом/набором скриптов на WSH/bat/cmd/*nix shell, которые генерятся и запускаются на исполнение той же самой хранимой процедурой. Кстати, как поведет себя приложение, действующее по описанному вами сценарию, в случае если п.5 по каким-либо причинам не выполнился и необходимо произвести откат транзакции? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2005, 11:11 |
|
Создание сервера приложений
|
|||
---|---|---|---|
#18+
VoDA MainFrameНО п.3 и п.4. Можно сделать только с помощью приложения , работающего на тех же серверах, где файловые серверы и приложения, конечно, не SLQ. У нас на С++, возможно и на функциональных написать, только не понятно, чем они здесь лучше обычного С++, или просто С.Спорно. У меня, как пример, закачкой данных на сервер занимается сам сервер. Реализованно очень просто - сервер запускает шелл-команду и все... PS это не панацея, а просто пример того, что приложением может выступать и сам SQL-сервер. ---- SAnalis.ru - Just for fun. Еще расту, а так я ДЖИП! Попробуйте создать папки на файловых серверах в Windows , находясь где-нибудь в другом месте кроме самого сервера и назначить квоты учетным записям на этом сервере. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2005, 11:25 |
|
Создание сервера приложений
|
|||
---|---|---|---|
#18+
pkarklin MainFrameПриведу только пример 3-х (много) звенки. Система регистрации пользователей. Веб-интерфейс - запрос пользователя о своих данных. Эээ... Интересный, пример, однако... Особенно в плане темы топика "Сервер приложений". И где тут бизнес-логика?! Голимое администрирование... авторНО п.3 и п.4. Можно сделать только с помощью приложения, работающего на тех же серверах, где файловые серверы и приложения, конечно, не SLQ. И какие проблемы вызвать это приложение на удаленном сервере?! про расширенные хп вы слышали? Которые можно на том же С++ написать и дергать их в СУБД. 1.Речь от сревера приложений плавно перетекла к многоуровневым приложением, поэтому и пример приведен приложения, где многокомпонентность необходимая вещь. 2. А при чем тут расширение. Приложение должно работать на файловом сервере (сервер базы данных - это свосем другой сервер), иначе оно не может задать квоты учетной записи. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2005, 11:29 |
|
Создание сервера приложений
|
|||
---|---|---|---|
#18+
PL99 MainFrame ASCRUSНу давайте уважаемые адепты 3-х звенок спустимся наконец на землю и на конкретных примерах от вас услышим, что же это за бизнес-логика такая у вас сложная, что она выльется в тысячи хранимых процедур с большим кол-вом кода, да еще который из за изменения ТЗ весь почему то лопатить придется ? Спор для себя считаю бессмысленным, хотя аргументы интерсны. Приведу только пример 3-х (много) звенки. Система регистрации пользователей. Веб-интерфейс - запрос пользователя о своих данных. Позволю себе слегка изменить порядок действий 0. Первичная проверка правильности ввода клиентом (JavaScript) MainFrame1. Обработка - проверка корректности данных по базе данных и далее 5. Создать запись в базе данных Выполняются в хранимой процедуре MainFrame2. Созадть учетную запись в Active Directory в нужном домене (на основании данных из базы данных), занести в нужные группы (на основании должностей, категорий, ролей и т.п.) 3. Создать личную папку на файловом сервере и дать на нее права. Создать при необходимости папку отдела на сервере и дать на нее права вновь созданной учетной записи 4. Создать папку на другом сервере и дать на нее праваВыполняются скриптом/набором скриптов на WSH/bat/cmd/*nix shell, которые генерятся и запускаются на исполнение той же самой хранимой процедурой. Кстати, как поведет себя приложение, действующее по описанному вами сценарию, в случае если п.5 по каким-либо причинам не выполнился и необходимо произвести откат транзакции? Ответ уже дан. Система Windiows, приложение работает только на файловом сервере ввиду необходимости задавать квоты. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2005, 11:32 |
|
Создание сервера приложений
|
|||
---|---|---|---|
#18+
MainFrameПопробуйте создать папки на файловых серверах в Windows , находясь где-нибудь в другом месте кроме самого сервера и назначить квоты учетным записям на этом сервере. Тут вот написано как сделать: http://www.microsoft.com/technet/scriptcenter/topics/win2003/quotas.mspx Учитывая поддержку Automation в T-SQL... Легко! ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2005, 11:33 |
|
Создание сервера приложений
|
|||
---|---|---|---|
#18+
MainFrame1.Речь от сревера приложений плавно перетекла к многоуровневым приложением, поэтому и пример приведен приложения, где многокомпонентность необходимая вещь. 2. А при чем тут расширение. Приложение должно работать на файловом сервере (сервер базы данных - это свосем другой сервер), иначе оно не может задать квоты учетной записи. 1. Ок. Согласен. 2. Ну так и пусть себеработает. А запускать его будет расширенная хп. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2005, 11:38 |
|
Создание сервера приложений
|
|||
---|---|---|---|
#18+
vialexis MainFrameПопробуйте создать папки на файловых серверах в Windows , находясь где-нибудь в другом месте кроме самого сервера и назначить квоты учетным записям на этом сервере. Тут вот написано как сделать: http://www.microsoft.com/technet/scriptcenter/topics/win2003/quotas.mspx Учитывая поддержку Automation в T-SQL... Легко! Скорее всего да, только сам WMIService будет работать все равно на файловом сервере и сделает установку вместо Вас. Но он-то тоже будет частью вашей системы. Вы просто используете для установки не свое приложение, а существующий com объект на файловом сервере ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2005, 11:48 |
|
Создание сервера приложений
|
|||
---|---|---|---|
#18+
Для разнообразия приведу еще один пример. Система тестирования. Тест, который предпоалагается пройти, является адаптационным. Т.е. в тесте есть определенные вопросы , которые являются подмножеством общего числа вопросов. И эти вопросы нужно показываться в некотором порядке, который заивист от ответов пользователя. Приложение вебовское - J2EE. Вариантов решения много. 1. Можно каждый раз, обработать ответ и выбирать из базы только тот вопрос, который нужно по результатам ответ показать. Сто вопросов - сто обращений к базе. ДВести пользователей одновременно тестируются - много обращений. 2. Можно выбрать один раз подмнождество. Потом из него выбирать тот, который соответсвует ответу на предыдущий. Обращений к базе меньше в сто раз. Нагрузка ложиться на сервер приложений. можно и другое придумать. Однозначаного лучшего решения тут нет, как мне кажется. По собственному опыту могу скзаать, что при большом числе пользователей выгоднее второй вариант, но наступает момент, когда отсутсвие нормальной сборки мусора (и кое какие другие причины) приводит к необходимости распределять нагрузку сервера приложений. НО и первый вариант не выход. На нем производительность недопустимая. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2005, 11:59 |
|
|
start [/forum/topic.php?fid=33&msg=33319318&tid=1548944]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
113ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
others: | 267ms |
total: | 476ms |
0 / 0 |