|
web servis
|
|||
---|---|---|---|
#18+
вот вроде получился у меня web servis после подсказок мой сервиc содержит функцию select, которая выбирает некоторые данные, кладет в xml возвращает клиенту, клиент преобразует xmltocursor все работает, но вот получилась выборка, которая преобразованая в xml превышает ограничение на размер строковой переменной и не удается её вернуть клиенту. вычитал рекомендацию в в конце статьи делить возвращаемый поток. сделал в сервисе 2 функции select и select_next. select нарабатывает курсор и передает первую порцию и не закрывает его, а select_next должна передавать следующие порции. вызываю эти функции последовательно в одном и том же soap соединении и выясняется что в select_next ни открыто не одной таблици, как будто бы на сервере создается каждый экземпляр класа не только для каждого коннекта, но для вызова каждого метода. это действительно так? как всетаки реализовать передачу больших потоков с сервиса? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.07.2009, 16:24 |
|
web servis
|
|||
---|---|---|---|
#18+
АлексейО как всетаки реализовать передачу больших потоков с сервиса? А сколько надо передать? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.07.2009, 23:51 |
|
web servis
|
|||
---|---|---|---|
#18+
в данный момент я уперся в 50 мб, но вообще хочется не хуже чем фоксовское ограничение 2Гб ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2009, 08:49 |
|
web servis
|
|||
---|---|---|---|
#18+
АлексейОв данный момент я уперся в 50 мб, но вообще хочется не хуже чем фоксовское ограничение 2Гб Открою Вам секрет - для передачи таких объемов лучше всего использовать другие технологии и протоколы... Но если Вы настаиваете - то создаете временную таблицу на сервере с одним лишним полем - передано на клиента (либо отдельная таблица если клиентов много с номером клиента , номером переданной записи, датой передачи). Далее клиент соединяется с Web Service, принимает, например 100 записей, передает на сервер номера принятых записей, сервер делает пометку и снова передает новых 100 записей... Кажется, я уже где-то про это читал - да это будет replication на SQL Server :) Так что все можно написать без проблем на FoxPro, было бы желание... А за один раз передавать chunk в 2Gb просто не имеет смысла - "никакие сети" этого не выдержат... Good luck! ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2009, 18:44 |
|
web servis
|
|||
---|---|---|---|
#18+
Sergey ChОткрою Вам секрет - для передачи таких объемов лучше всего использовать другие технологии и протоколы... подскажите пожалуйста, какие? вообщем пытаюсь создать сервер приложений самый первый вариант(все еще действующий) - файловый обмен через общий сетевой ресурс - низка надежность, да и по безопастности плохо. еще пробовал winsocks - activeX не устроил по скорости ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2009, 14:59 |
|
web servis
|
|||
---|---|---|---|
#18+
АлексейО вообщем пытаюсь создать сервер приложений... А что он должен делать? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2009, 20:55 |
|
web servis
|
|||
---|---|---|---|
#18+
АлексейО,попробуй пережде чем отправить информции архивируй и у сервера разархивируй.Файлы dbf очень хорошо сжать можно,я сам так делаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2009, 11:53 |
|
web servis
|
|||
---|---|---|---|
#18+
Sergey ChА что он должен делать? ну воощем мечтается об универсальном - выполнение любых обработок данных(размещенных в таблицах dbf или на MS SQL)- прикладной программист пишет какуюто процедуру, которая вызывается с клиента и исполняется на этом сервере приложений., в основном они возвращают какието данные клиенту, но могут только преобразовать исходные и вернуть только "удачу". частный случай: "удаленный select" -именно с него я и начал. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2009, 08:40 |
|
web servis
|
|||
---|---|---|---|
#18+
pulsАлексейО,попробуй пережде чем отправить информции архивируй и у сервера разархивируй.Файлы dbf очень хорошо сжать можно,я сам так делаю. ну если бы у меня была задача с очень медленной сетью и приемлимой мощностью на клиенте, то это был бы вариант, но не панацея: допустим нужно передать 200Мб (вроде не огромная цифра для фокса) жмем их (раз в 10 )получаем 20мб - и уже не проходит ограничение(выяснилось что оно 16Мб - размер строковой переменной фокса) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2009, 08:48 |
|
web servis
|
|||
---|---|---|---|
#18+
АлексейО, такой вариант рассмотри: создается расшаренная папка в сети, по тяжелому запросу сервер сохраняет ответ в файл с уникальным именем и возвращает имя файла клиенту. Клиент забирает файл и удаляет из папки. Тут безопасность если и пострадает, то не сильно. Иначе надо с сокетами разбираться и через свои TCP соединения слать, но там много подводных камней есть. Как-то на статью натыкался как ускорить передачу по TCP соединению, ссылку найти не смог. Можешь еще в сторону "Named Pipe" покопать. Сам не пользовался, но как я понял это МСишная надстройка чтобы независеть от особенностей протокола используемого в сети. См. WinAPI функцию CreateNamedPipe() и все что с ней связано. Тут можно почитать ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2009, 14:01 |
|
web servis
|
|||
---|---|---|---|
#18+
Dima Tрасшаренная папка в сети Тут безопасность если и пострадает, то не сильно. это действующий вариант. и безопастность и надежность очень страдают: фокс очень критичен к надежности сети - поймал ошибку чтения и встал. иногда удается обработчиком ошибок поймать, но чаще всего нет. а безопастность просто ужас - по разным причинам клиент не удалил за собой - и вот тебе -"заходи кто хошь, бери что хошь". Dima T Иначе надо с сокетами разбираться и через свои TCP соединения слать, но там много подводных камней есть. частично я разобрался и сделал на activeX winsocks - очень медленно работало возможно на winapi было бы лучше, но решил поискать более свежие варианты Dima TМожешь еще в сторону "Named Pipe" покопать. См. WinAPI функцию CreateNamedPipe() и все что с ней связано. Тут можно почитать пожалуй посмотрю... ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2009, 14:29 |
|
web servis
|
|||
---|---|---|---|
#18+
АлексейО[quot Sergey Ch] выполнение любых обработок данных(размещенных в таблицах dbf или на MS SQL. Давайте не будем мешать два этих вида :) MS SQL Server прекрасно работает и без Web Services, хотя с 9 версии в нем уже самом встроенная возможность создания оного на Windows 2003 и выше (хотя ws работет приблизительно в 3 раза медленне так как оборачивает данные в XML). Так что работа напрямую будет быстрее всего, чего Вы сможете создать самостоятельно... Через этот-же SQL Server можно работать и с данными FoxPro посредством Linked Server (все это будет быстрее чем через WS)... Про ограничения 16Mb впервые слышу от Вас :) (просто надо соответствующие параметры изменить в Windows)... Да, есть ограничения 2Gb как и везде... На практике в Intranet передавал файлы и в 1Gb... ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2009, 22:49 |
|
web servis
|
|||
---|---|---|---|
#18+
Sergey ChПро ограничения 16Mb впервые слышу от Вас :) (просто надо соответствующие параметры изменить в Windows)... ну вообщем так оказалось: если я возвращаю только курсор Код: plaintext 1. 2.
а мне захотелось чуть сократить объем xml курсора и вложить в этот xml доп.инфу otvet_message Код: plaintext 1. 2. 3. 4. 5. 6. 7.
xml_return= xml_return+' <Cursor><![CDATA['+str_cursor_xml+']]></Cursor>'+CHR(13) получаю ошибку "слишком длинная строка" Sergey Ch, ваше мнение? если не раcсматривать MS SQL, то какая из технологий предпочтительней для сервера приложений WS, winsocks или "Named Pipe" ? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.07.2009, 09:42 |
|
web servis
|
|||
---|---|---|---|
#18+
АлексейО Sergey Ch, ваше мнение? если не раcсматривать MS SQL, то какая из технологий предпочтительней для сервера приложений WS, winsocks или "Named Pipe" ? Из указанного списка самым быстрым будет "Named Pipe". Самым гибким "Web Services"... Решать Вам... ... |
|||
:
Нравится:
Не нравится:
|
|||
14.07.2009, 18:18 |
|
|
start [/forum/topic.php?fid=41&msg=36085604&tid=1586233]: |
0ms |
get settings: |
11ms |
get forum list: |
16ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
42ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
others: | 320ms |
total: | 465ms |
0 / 0 |