powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ERP и учетные системы [игнор отключен] [закрыт для гостей] / Роль сервера приложений
25 сообщений из 325, страница 12 из 13
Роль сервера приложений
    #33660329
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторЕсли возможно, расскажите по-подробнее о взаимодействии триады - клиент <--> веб-сервис <--> сервер данных.
А что тут говорить?
Есть веб сервис, который имеет методы. Внутри метода вызов ХП СУБД и отдача результата наружу.
Сервисы xml, не soap.
Клиент по http(s) дергает вебсервис, обратно получает xml, превращает его в датасет и показывает.

авторНа всё время, пока активен клиент, ему соответствует и активный веб-сервис на веб-сервере?
Нет такого понятия "активный вебсервис". Это как обычный вебсайт работает.
Можно только сказать, что пока вы держите живой коннект к вебсервису то сохраняется ваша текущая сессия. Если коннект рвался - сессия будет новая.

авторЕсли клиент запросил построения выборки всей достаточно большой таблицы, то как данная информация передаётся клиенту? Коннект клиентского веб-сервиса с базой данных остается активным на все это время?
Я не допускаю возможности передачи большого количества данных - даже в локале, не то что через вебсервисы. Это недостаток архитектуры системы. Могут быть только небольшие выборки.
Хотя смотря о каком объеме идет речь. Собственно зависит только от толщины интернет-канала.
Т.к. вебсервис между вызовами не живет, то и коннект вебсервиса не может храниться.
Но у меня сервисы ходят через пул коннектов, которые всегда живые.

авторСколько клиентов одновремено активны в системе?
Что будет, если клиент пойдет покурить в процессе закачки данных в локальный комп?
Количество активных клиентов может быть любым - это решается количеством нод, на которых стоят вебсервисы, и мощью СУБД. Собственно не отличается от обычной к-с.
Если клиент пойдет покурить - и что? Данные придут и покажутся :))

-- Tygra's --
...
Рейтинг: 0 / 0
Роль сервера приложений
    #33660367
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Интересно, как СП подойдей при таком раскладе:
Юзеру требуется создать TEMPORARY TABLE, потом залить в нее данные (заливка осуществляется интерактивно . Затем обработать временную таблицу. Если работа СП осушествляется через пул соединений, то...

1) Каждому соединению на стороне сервера всегда должно соответствовать определенное соединение в пуле коннекций СП к серверу БД.
2) Получается что мультиплексирование (N-клиентских коннекций/M-коннекций СП к серверу БД будет невозможно из-за конфликта имен)

И, почему бы не рассмотреть работу СП с временными таблицами. Что тут можно сделать?
...
Рейтинг: 0 / 0
Роль сервера приложений
    #33661476
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gardenmanИнтересно, как СП подойдей при таком раскладе:
Юзеру требуется создать TEMPORARY TABLE
Это немного напоминает "как СП подойдет при раскладе "пользователю требуется работать без СП"".

Юзеру не может требоваться TEMPORARY TABLE. Юзеру может требоваться некоторая функциональность, для которой было бы удобно применить нечто типа TEMPORARY TABLE. Из этого начинают набираться возможные пути - сделать на СП буфер данных (собственно эту таблицу), возможно в момент начала обработки таки скидывать ее на сервер БД, возможно фиксировать сессию со временной таблицей, возможно использовать постоянную таблицу в роли временной.

Общего можно сказать одно. Все пользователи одновременно могут вызвать функцию X, а следовательно, если мы не хотим иметь однозначное соответствие пользовательских сессий коннектам к БД, нужно выдумывать некое более сложное решение. В клиент-серверной архитектуре аналог такой ситуации придумать трудно (сессии однозначны и без вариантов); разве что можно соотнести решения типа ораклового MTS.
...
Рейтинг: 0 / 0
Роль сервера приложений
    #33661957
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 softwarer
вобщем все понятно. Хреново все. СП подходит разве что для тривиальных задачек. Чуть сложнее - обкакается.
...
Рейтинг: 0 / 0
Роль сервера приложений
    #33662033
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы наверняка знаете, что при некотором желании легко доказать все что угодно. Например, "а вот пусть Ваш мерседес попробует переехать через ручей по доске шириной 22 сантиметра.... то-то, подходит разве что для тривиальных задачек, чуть сложнее - обкакается" (доставая велосипед "Орленок").

Вы полагаете, здесь было недостаточно словоблудства?
...
Рейтинг: 0 / 0
Роль сервера приложений
    #33662196
Херрес
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
сколько настрочили, однако...
Сторонникам двухзвенки.
Объяснюсь в 1Совских терминах, по другому не умею.

Предположим, Вам нужно провести расходную накладную. (примитивно, да ?)
При этом нужно примерно вот что:
1. проверить правильность заполнения накладной.
2. списать товары по бух.учёту. С достаточно универсальным алгоритмом, позволяющим настроить ЛЮБОЙ способ списания. С учётом того, что товар может быть комиссионный, кроме того он может оказаться материалом или основным средством, что он может храниться на складах или без них, что дополнительная аналитика по характеристикам или по сериям может использоваться или нет.
Отразить НДС. Всё это для любой учётной политики, для любого режима налогобложения.
(всё это делать, попутно пересчитывая в нужные валюты)
3. то же для упр. и налогового учёта. В налоговом учёте рассчитать временный или постоянные разницы при необходимости.
4. распределить стоимость услуг по товарам (если есть услуги)
5. сделать проводку по взаиморасчётам. Выделить авансы при необходимости. С учётом возможности разной детальности ведения взаиморасчётов - по договорам, по документам, при необходимости проконтролировать глубину кредита.
6. учесть суммовые разницы при необходимости.
7. снять с резерва при необходимости.
8. ну да мало ли ещё что.

Дык вот, делать это на клиенте весьма не оптимально.
Написать всё это на sql можно ? Можно. Если заняться больше нечем (читай - деньги девать некуда). Т.е. если в конторе всё уже автоматизировано в усмерть и можно позволить себе годами ковырять нечитабельный, несопровождаемый, нетехнологичный код на sql, добиваясь какого-то повышения производительности. Ну или если просто нашли чудака, готового платить за всё это.

Я кончил.
...
Рейтинг: 0 / 0
Роль сервера приложений
    #33662384
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ХерресЯ кончил.

Мои поздравления!!!
...
Рейтинг: 0 / 0
Роль сервера приложений
    #33662852
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gardenmanИнтересно, как СП подойдей при таком раскладе:
Юзеру требуется создать TEMPORARY TABLE, потом залить в нее данные (заливка осуществляется интерактивно . Затем обработать временную таблицу. Если работа СП осушествляется через пул соединений, то...

1) Каждому соединению на стороне сервера всегда должно соответствовать определенное соединение в пуле коннекций СП к серверу БД.
2) Получается что мультиплексирование (N-клиентских коннекций/M-коннекций СП к серверу БД будет невозможно из-за конфликта имен)

И, почему бы не рассмотреть работу СП с временными таблицами. Что тут можно сделать?
Совсем не понятно
...
Рейтинг: 0 / 0
Роль сервера приложений
    #33662859
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Mainframe
Спасибо за деловой стиль ответа. Постараюсь отвечать и задавать вопросы в том же духе.

>веб-служба , точнее метод вызывается по http(s) в момент вызова ...

В прототипе (см. цитированную статью) веб-сервис на веб-сервере (IIS) активен на время обработки запроса. Как только ответ будет передан клиенту, веб-сервис самоуничтожается. Для веб-сервиса запрос - последовательность байтов - byte[], ответ - аналогично. Клиент готовит запрос в форме некоторой структуры, затем сериализует её binary формат (не xml, а именно binaty). Полученная строка байтов сжимается (и шифруется). И по каналам Интернета передается на веб-сервер в формате 6-ти битных байтов (SOAP протокол). Веб-сервис данного клиента получает байтовую строку запроса и записывает её в свободный абонентский ящик - ещё один сервер приложения. Это программная конструкция и может располагаться на любом компьютере сети.

> Коннект можно организовать по-разному...

Я сделал так - с каждым конкретным СП абонентского ящика связано семейство СП КриптоСерверов ( серверов приложений а-ля бизнес-логики). Каждый КриптоСервер имеет постоянное фиксированное число коннектов с базой данных (у меня - 1 коннект) и они активны пока работает СП. Никакой динамики. За одним СП абонентских ящиков закреплен с одной стороны веб-сервер (IIS) - СП, а с другой - КриптоСерера (1-8 штук). Эта конструкция - вычислительный узел. Число узлов определяется задачей. Каждый КриптоСервер сканирует абонентские ящики, при наличии запроса считывает байтовую строку из ящика дешифрирует, декомпрессирует, десериализует её в структуру запроса и стрит на её основе SQL предложение (SELECT, UPDATE,INSERT, DELETE) и вызывает сервер данных. Нужные SQL-предложения (UPDATE, INSERT, DELETE) (или дешифрованную байтовую строку запроса) храню на СП модифицирующих предложений для поддержки реплик.
В качестве ответа обычно получаю некоторую выборку, возможно достаточно большого размера. Система не сможет протащить byte[] полной выборки по уровням, емкость буферов особенно на абонентских ящиках и IIS невелика по сравнению с возможностся сервера данных. Из всей выборки вырезаю запрашиваемую страницу и её передаю (страница - 240 строк, например). Т.е. "жадному" клиенту могу показать весь объём выборки, но в несколько приемов.

>Ну пусть курит .. данные передадутся ...

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

С уважением, Владимир.
...
Рейтинг: 0 / 0
Роль сервера приложений
    #33662861
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как связана интерактивная закачка данных на клиенте с обработкой их и на сервере приложений и при этом с пулом соединений с БД?
...
Рейтинг: 0 / 0
Роль сервера приложений
    #33662947
Фотография OTiger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Херрессколько настрочили, однако...
Сторонникам двухзвенки.
Объяснюсь в 1Совских терминах, по другому не умею.

Не вопрос:)
Херрес
Предположим, Вам нужно провести расходную накладную. (примитивно, да ?)
При этом нужно примерно вот что:
1. проверить правильность заполнения накладной.

Это проверять лучше в процессе ввода...
Херрес
2. списать товары по бух.учёту. С достаточно универсальным алгоритмом, позволяющим настроить ЛЮБОЙ способ списания. С учётом того, что товар может быть комиссионный, кроме того он может оказаться материалом или основным средством, что он может храниться на складах или без них, что дополнительная аналитика по характеристикам или по сериям может использоваться или нет.
Отразить НДС. Всё это для любой учётной политики, для любого режима налогобложения.
(всё это делать, попутно пересчитывая в нужные валюты)
3. то же для упр. и налогового учёта. В налоговом учёте рассчитать временный или постоянные разницы при необходимости.
4. распределить стоимость услуг по товарам (если есть услуги)
5. сделать проводку по взаиморасчётам. Выделить авансы при необходимости. С учётом возможности разной детальности ведения взаиморасчётов - по договорам, по документам, при необходимости проконтролировать глубину кредита.
6. учесть суммовые разницы при необходимости.
7. снять с резерва при необходимости.
8. ну да мало ли ещё что.

Вот это все преднастроенные проводки(в моем понимании), все одинаково и прозрачно. И все что происходит при проведении - это создание правильных проводок. Это и есть все Ваши пункты включая "мало ли еще"
Херрес
Дык вот, делать это на клиенте весьма не оптимально.

А то....
Херрес
Написать всё это на sql можно ? Можно. Если заняться больше нечем (читай - деньги девать некуда). Т.е. если в конторе всё уже автоматизировано в усмерть и можно позволить себе годами ковырять нечитабельный, несопровождаемый, нетехнологичный код на sql, добиваясь какого-то повышения производительности. Ну или если просто нашли чудака, готового платить за всё это.

Проще нужно все делать, проще. Да и код годами ковырять не придется, если написано без ошибок
У нас так все и проводится. И провожу я накладную легко, удаленно, через мобилку:)
Херрес
Я кончил.
Как же я за Вас рад:)
...
Рейтинг: 0 / 0
Роль сервера приложений
    #33663264
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, Херрес повеселил
Сразу признался, что в SQL он ни бельмеса, потому все делает с клиента, по-старинке.
Когда наконец-то у вас будет нечего делать и вы выучите таки sql, тогда приходите Херрес, поговорим, а пока что покурите дальше ту травку :))

2 ВМоисеев
Я что-то не понял смысла всех превращений - зачем ящики, СП и т.д.?
Какие проблемы в том, чтобы прямо при вызове метода вебсервиса расшифровывать запрос, посылать его в БД и сразу отправлять обратно, предварительно зашировав и сжав? Зачем столько наворочено?

авторЕсли большая выборка хранится во временной таблицы, ассоциированной с соответствующим клиентом, до тех пор пока с ней работает клиент, то какой же объём винтовой системы потребуется, при нескольких тысячах активных клиентов. Если ограничить объем пула коннектов, то заснувшие клиенты быстро его израсходуют.
Не понял - при чем тут выборка, винты и тысячи клиентов?
Требуется пояснение, о чем собственно речь идет. Желательно с примером

-- Tygra's --
...
Рейтинг: 0 / 0
Роль сервера приложений
    #33663439
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iscrafmкак связана интерактивная закачка данных на клиенте с обработкой их и на сервере приложений и при этом с пулом соединений с БД?

Попробую еще раз. Медленно.
Юзер работает с очень большой таблицей. Ему нужно спуцифическим образом обработать большое количество записей. (Для примера - отобрать контрагентов по специфическим критериям и всем им выслать письма с коммерческим предложением). Напрашивается вариант - создается временная таблица, в которую по всем критериям в несколько этапов заносятся ID контрагентов. Далее временная таблица обрабатывается.

Мы ведь знаем что временную таблицу можно выдеть только через соединение, которое ее создало. Поэтому нужно чтобы каждому соединению клиента с СП, ставился в соответствие только один конкретный коннект СП к базе данных. Иначе временная табличка видна не будет. Теперь понятно?
...
Рейтинг: 0 / 0
Роль сервера приложений
    #33663543
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Понятно. Только не понятно зачем временная таблица, и даже если нужна - какие проблемы :)
Есть такое понятие как клиентский набор данных. Клиентский образно конечно, потому что относительно СУБД сервер приложений тоже клиент. Именно в него можно делать промежуточные выборки, СУБД с временными таблицами здесь не нужна. Второй вариант: это таблица в БД, но не временная (на картинке). Т.к. исходящую корреспонденцию все равно нужно сохранять.
Ну и конечно никакого пересечения по именам если уж с временными таблицам.
Ниже пример реального кода сервера приложений. В этом случае используется временная таблица для вычислений. Но что такое пересечение по именам, не пойму.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
-- Временно переносим остатки по складам, с которых будет списание

    select
    d.id, -- складская запись
    d.itemid, -- продукт
    d.qty, -- в наличии
    d.price, -- учетная цена
    d.sertnum,
    d.rdate,
    isnull(d.vatprc, 0 ) as vatprc,
    d.whid,
    d.r,
    d.parentid
    into ##invtmp
    from vInvCardFile d
    where d.pdate < = :pMenuDate and whid in (select distinct whid
    from invtrbom t
    where t.batchid = :pBatchId
    and t.st= 1  -- Только утвержденные
    and (t.nodetype =  3  or t.nodetype =  8 ))

IF @@ERROR <>  0 
BEGIN
ROLLBACK TRANSACTION
RAISERROR('Во время выполнения процедуры произошла ошибка. Повторите расчет', 16 , 1 )
RETURN
END

    create clustered index invtmp_key on ##invtmp (id)
    create index invtmp_idx on ##invtmp (itemid,whid,qty)
...
Рейтинг: 0 / 0
Роль сервера приложений
    #33663600
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор
Именно в него можно делать промежуточные выборки, СУБД с временными таблицами здесь не нужна. Второй вариант: это таблица в БД, но не временная (на картинке). Т.к. исходящую корреспонденцию все равно нужно сохранять.Ну и конечно никакого пересечения по именам если уж с временными таблицам


Я вполне предполагал что вы именно это и ответите. Замечу что хранить промежуточные выборки на сервере приложений можно, но глупо. Ибо пока промежуточную выборку не зальете в СУБД она бесполезна. Т.е. вы увеличиваете на порядок IO между СП и СУБД. Это - нехорошо. В случае же когда одна постоянная таблица: 1) ее нужно чистить от мусора. 2) юзер ограничен в количестве запущенных экземпляров приложения.

Я не знаю зачем вы пытаетесь оправдываться. Конечно можно делать и так как вы, однако ... ну несолидно получается.
...
Рейтинг: 0 / 0
Роль сервера приложений
    #33663667
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторВ случае же когда одна постоянная таблица: 1) ее нужно чистить от мусора. 2) юзер ограничен в количестве запущенных экземпляров приложения.
Какие с этим проблемы?
Вообще предпочтительно делать на постоянной таблице, а не на временной, тем более когда речь идет о больших выборках. Иначе с временной таблицей будет нехороший момент - два часа вы собирали получателей писем, насобирали их 2000 .... и тут оборвался коннект Вот весело будет, да?

-- Tygra's --
...
Рейтинг: 0 / 0
Роль сервера приложений
    #33663672
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 gardenman
==========
Ну Вы блин даете Я ж Вам привел примеры, что лично я так не делаю . :)
В одном случае постоянная таблица в БД, в другом - временная, но тоже в БД.
...
Рейтинг: 0 / 0
Роль сервера приложений
    #33663673
systemR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
чо-то не пойму о чем речь, рассылкой же будет заниматся СП. Он потянет все эти гигабайты на СП, чтоб банально отослать майл или подготовить dbf/xml файл для почтовой конторы (вы же сами не будете тысячи предложений сами печатать). поэтому совсем непойму зачем СП хранить ид в таблице если он по любому забивая канал все будет тянуть к себе.
а вообще имхо не проблема создать персистент объект на СП который длительное время не будет возвращать в пул конекцию. главное чтоб не было транзакций ждущих юзерского инпута.
...
Рейтинг: 0 / 0
Роль сервера приложений
    #33663694
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 systemR
===
гигабайтов там нет конечно. Запрашивается информация из БД, очень далеко не гигабайтная. Бланки вложений (RTF, Excel) находятся на СП и тянутся по сети. Так что все нормально.
...
Рейтинг: 0 / 0
Роль сервера приложений
    #33663698
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хотел сказать конечно " не тянутся по сети "
...
Рейтинг: 0 / 0
Роль сервера приложений
    #33663712
systemR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
iscrafmхотел сказать конечно " не тянутся по сети "

ага инфо для бланков на СП появляется магическим путем :)
...
Рейтинг: 0 / 0
Роль сервера приложений
    #33663734
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tygra авторВ случае же когда одна постоянная таблица: 1) ее нужно чистить от мусора. 2) юзер ограничен в количестве запущенных экземпляров приложения.
Какие с этим проблемы?
Вообще предпочтительно делать на постоянной таблице, а не на временной, тем более когда речь идет о больших выборках. Иначе с временной таблицей будет нехороший момент - два часа вы собирали получателей писем, насобирали их 2000 .... и тут оборвался коннект Вот весело будет, да?

-- Tygra's --

Ну, с тобой-то вообще всё ясно - мы ведь знаем как MS SQL с времянками работает

2 systemR
возможно формирование рассылок не очень хороший пример. Как вариант: начислить проценты на лицевые счета... или сформировать специфический отчет только по выбранным контрагентам... И, прикиньте если у меня в системе 200000 контрагентов, а в моей выборке 50%... мне что прикажете всю эту выборку гонять по сети?.. абсурд. А если мне нужно будет сделать какой-то промежуточный расчет?... Ребята, вы что, с такими задачами не сталкивались что-ли?... Использовать СУБД как хранилище данных для СП - это дурость. Вспомните аналитический функции, MQT, распараллеливание IO и вычислений, вспомните про кластерные (многораздельные) СУБД. Вы правда думаете что реально все это реализовать на СП?...
...
Рейтинг: 0 / 0
Роль сервера приложений
    #33663745
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
systemR iscrafmхотел сказать конечно " не тянутся по сети "

ага инфо для бланков на СП появляется магическим путем :)
нет конечно :) достается запросом из БД.
...
Рейтинг: 0 / 0
Роль сервера приложений
    #33664051
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 gardenman
А причем тут MS SQL?
Неужели Оракл с временными таблицами по-другому работает?

Или вы в принципе не знаете, как сделать без временных таблиц, потому и ответ такой? ;)

-- Tygra's --
...
Рейтинг: 0 / 0
Роль сервера приложений
    #33664145
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tygra2 gardenman
А причем тут MS SQL?
Неужели Оракл с временными таблицами по-другому работает?

Или вы в принципе не знаете, как сделать без временных таблиц, потому и ответ такой? ;)

-- Tygra's --
Да, У каждой СУБД своя специфика работы с времянками. Это уже обсуждалось. MSSQL/SybaseASE - в этом плане отстой.
...
Рейтинг: 0 / 0
25 сообщений из 325, страница 12 из 13
Форумы / ERP и учетные системы [игнор отключен] [закрыт для гостей] / Роль сервера приложений
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]