|
свойство %FileBinaryStream и толстый клиент
|
|||
---|---|---|---|
#18+
Приветствую! помогите советом, пожалуйста есть класс, в котором одно из свойств определено как: Код: sql 1.
с тонким клиентом вопросов не возникает, а с толстым проблема: класс, глобаль и стрим находятся на сервере на толстом клиенте имеется удаленная БД с соответствующим мепингом получается что окружение толстого клиента видит всё, кроме самого стрим файла вопрос: можно ли как то заставить толстого клиента, в данном случае, получить тот стрим файл, который находится на сервере? с общим расшаренным сетевым ресурсом вариант рассмотрел, может еще что есть? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2013, 17:07 |
|
свойство %FileBinaryStream и толстый клиент
|
|||
---|---|---|---|
#18+
Какая сложная система толстый клиент вместе с БД Cache ? а соединение с сервером через ECP ? и сколько же таких "толстых клиентов" по теме, а что вы потом с этим файлом делаете ? и опять же в зависимости от того как подключение с сервером осуществляется и решать как забирать файл с сервера брать например просто по ECP и не париться где он находится, по идее он возможно должен нормально кешироваться если это необходимо. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2013, 17:14 |
|
свойство %FileBinaryStream и толстый клиент
|
|||
---|---|---|---|
#18+
"ворошим старьё" ))) DAiMorтолстый клиент вместе с БД Cache ? а соединение с сервером через ECP ? и сколько же таких "толстых клиентов" да, по ECP, в одном месте порядка 140 "толстячков" DAiMorпо теме, а что вы потом с этим файлом делаете ? пока нужно создать директорию на "толстячке" и скопировать туда этот файл DAiMorи опять же в зависимости от того как подключение с сервером осуществляется и решать как забирать файл с сервера брать например просто по ECP и не париться где он находится, по идее он возможно должен нормально кешироваться если это необходимо. можно по подробней, плиз )) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2013, 17:33 |
|
свойство %FileBinaryStream и толстый клиент
|
|||
---|---|---|---|
#18+
ECP позволяет обращаться к глобалам сервера прозрачно для работы приложения приведу пример по нашему приложению которое работает по ECP и активно использует хранение файлов в Cache так вот наше приложение работает через WEB но пользователи могут попасть на любой доступный ECP-клиент (распределяя нагрузку) все файлы доступны пользователю в любом случае, со стороны кода ничего делать не было необходимости все работает прозрачно для нас. открываем объект получаем файл, а то что файл находится на другом сервере, значения не имеет подгрузится через ECP. Если какой то файл будет использоваться очень часто, то он еще и будет закеширован на ECP-клиенте, и он не будет часто перегружаться с сервера. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2013, 18:41 |
|
свойство %FileBinaryStream и толстый клиент
|
|||
---|---|---|---|
#18+
Ymka2007да, по ECP, в одном месте порядка 140 "толстячков" ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2013, 19:11 |
|
свойство %FileBinaryStream и толстый клиент
|
|||
---|---|---|---|
#18+
DAiMorYmka2007да, по ECP, в одном месте порядка 140 "толстячков" ну да )), это чужая старая прихоть )) когда конфигурировал, я намепил только пакет ECP на сервер уже был настроен может быть что то еще нужно? почему то, я думал что в такой конфигурации должно все получится, но видать что то не до конфигурировал как бы проверить ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2013, 21:32 |
|
свойство %FileBinaryStream и толстый клиент
|
|||
---|---|---|---|
#18+
давайте начнем с того что не получается на примерах ? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2013, 21:33 |
|
свойство %FileBinaryStream и толстый клиент
|
|||
---|---|---|---|
#18+
DAiMor, не поздно? не сильно отвлеку? первое что проверил на толстом: в студии классы видны, в портале и терминале глобаль видна при загрузке файла с толстого клиента с помощью ZEN страницы получилось следующее: 1. в глобаль прописался путь которого не должно было быть (первый файл с тонкого клиента грузил - лег куда надо) 2. файл нашел, локально на толстом клиенте в папке, прописанной в ^%SYS("TempDir") 3. При попытке получить файл - если тонкий клиент, то файл получаю используя %File.CopyFrom() там где нужно в то время если я использую толстого, то используя тот же код файл получаю там где нужно, но он 0 КБ (ПУСТОЙ) и сформирован без ошибки вот ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2013, 22:47 |
|
свойство %FileBinaryStream и толстый клиент
|
|||
---|---|---|---|
#18+
Ymka2007DAiMor, не поздно? не сильно отвлеку? первое что проверил на толстом: в студии классы видны, в портале и терминале глобаль видна при загрузке файла с толстого клиента с помощью ZEN страницы получилось следующее: 1. в глобаль прописался путь которого не должно было быть (первый файл с тонкого клиента грузил - лег куда надо) 2. файл нашел, локально на толстом клиенте в папке, прописанной в ^%SYS("TempDir") 3. При попытке получить файл - если тонкий клиент, то файл получаю используя %File.CopyFrom() там где нужно в то время если я использую толстого, то используя тот же код файл получаю там где нужно, но он 0 КБ (ПУСТОЙ) и сформирован без ошибки вот над толстым клиентом ZEN, еще интересней и пример все равно получился какой то туманный файл хранится в БД ? если так то никаких проблем с получением содержимого не должно быть не совсем понимаю откуда взялся файл локально если это веб приложение, то файл по идее должен скачиваться по действию пользователя, туда куда он пожелал, а у тут вроде получается что файл попадает туда куда пожелает приложение. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2013, 23:25 |
|
свойство %FileBinaryStream и толстый клиент
|
|||
---|---|---|---|
#18+
Код: sql 1.
вроде писал )) файл находится (должен находиться) на сервере в папке stream, там же где и cache.dat ZEN страничка пока написана только для загрузки файла на сервер при тонком клиенте все нормально загружается далее я просто на толстом клиенте запускаю метод который должен взять файл с сервера и положить его в папку на толстом клиенте ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2013, 23:32 |
|
свойство %FileBinaryStream и толстый клиент
|
|||
---|---|---|---|
#18+
Ymka2007 Код: sql 1.
вроде писал )) файл находится (должен находиться) на сервере в папке stream, там же где и cache.dat ZEN страничка пока написана только для загрузки файла на сервер при тонком клиенте все нормально загружается далее я просто на толстом клиенте запускаю метод который должен взять файл с сервера и положить его в папку на толстом клиенте а почему бы не хранить файлы в БД а не файлами, выделить отдельную БД для их хранения и все проблемы будут решены ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2013, 01:06 |
|
свойство %FileBinaryStream и толстый клиент
|
|||
---|---|---|---|
#18+
DAiMor, да, можно и так скорее всего так и придется реализовывать а нет примерчика? каким образом лучше сформировать класс для хранения файлов мне кажется нужно два класса и связь между ними, чтоб файл делить на куски по 32 кб и в каждую children запись записывать? может какая еще другая реализация возможна? спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2013, 12:32 |
|
свойство %FileBinaryStream и толстый клиент
|
|||
---|---|---|---|
#18+
Ymka2007DAiMor, да, можно и так скорее всего так и придется реализовывать а нет примерчика? каким образом лучше сформировать класс для хранения файлов мне кажется нужно два класса и связь между ними, чтоб файл делить на куски по 32 кб и в каждую children запись записывать? может какая еще другая реализация возможна? спасибо не нужно ничего делить на куски. Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2013, 12:44 |
|
свойство %FileBinaryStream и толстый клиент
|
|||
---|---|---|---|
#18+
DAiMor, спасибо, помогло )) посмотрел глобаль, удивился он сам все сделал ))) ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2013, 13:18 |
|
свойство %FileBinaryStream и толстый клиент
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2013, 13:35 |
|
свойство %FileBinaryStream и толстый клиент
|
|||
---|---|---|---|
#18+
servit, если указать, то это будет серверное окружение а когда толстый клиент, для файловой системы он берет свое окружение как то так ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2013, 14:45 |
|
свойство %FileBinaryStream и толстый клиент
|
|||
---|---|---|---|
#18+
Ничего, если не буду открывать отдельную тему? Т.к. тоже про потоки. Надо: 1- экспортировать классы, программы, etc в формате XML в глобал. Дальше этот глобал отдаётся сторонней программе, она его передаёт куда надо - короче, это не предмет рассмотрения. 2- На "приёмном конце" надо импортировать этот глобал. Если с (1) проблем никаких, пользуюсь: Код: javascript 1. 2. 3. 4.
и поток нормально ложится в глобал @glob, то с импортом подобный приём не проходит: %Location не подменить после создания потоковой oref. Приходится извращаться с копированием глобала @glob в поток: /// На входе: /// glob - имя глобала с экспортированными элементами (.CLS, .MAC, etc) /// На выходе: /// items - импортированные элементы. ClassMethod strimp(ByRef items, glob = "", qspec = "", ByRef errorlog, listonly = 0) As %Status { n str, loc, sc, i #dim str as %Stream.GlobalCharacter k items s sc=0 s displayname=1 ;? if glob="" s sc=$$$ERROR(5001,"Global reference is empty") g strimpq try { s str=##class(%Stream.GlobalCharacter).%New() if '$isobject(str) s sc=$$$ERROR(5001,"Could not create stream") g strimpq s loc=str.%Location ;merge @loc=@glob ; плохо - пишет лишнее for i=1:1:@glob@(1) { ; ничего лишнего Do str.Write(@glob@(1,i)) } s sc=$system.OBJ.LoadStream(str, qspec, .errorlog, .items, listonly, displayname) if 'sc g strimpq } catch { s sc=$$$ERROR(5002,$ze) g strimpq } strimpq q sc } ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2013, 16:17 |
|
свойство %FileBinaryStream и толстый клиент
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2013, 16:43 |
|
свойство %FileBinaryStream и толстый клиент
|
|||
---|---|---|---|
#18+
Спасибо, пробовал. Для этой задачи, к сожалению, не подойдут. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2013, 16:46 |
|
свойство %FileBinaryStream и толстый клиент
|
|||
---|---|---|---|
#18+
Alexey Maslov, можно как то так Код: sql 1. 2. 3. 4. 5. 6. 7. 8.
и в другой области Код: sql 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2013, 16:50 |
|
свойство %FileBinaryStream и толстый клиент
|
|||
---|---|---|---|
#18+
Или так: s items("Sample.Person.CLS")="" s glob="^tmp" k @glob s strFrom=##class(%Stream.GlobalBinary).%New(glob) d $system.OBJ.ExportToStream(.items, .strFrom) d strFrom.%Save() s oid=strFrom.%Oid() s strTo=##class(%Stream.Object).%Open(oid) d $system.OBJ.DisplayError($system.OBJ.LoadStream(strTo)) ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2013, 18:21 |
|
свойство %FileBinaryStream и толстый клиент
|
|||
---|---|---|---|
#18+
DAiMor, спасибо, но в моём случае поведение немного иное. Код Код: javascript 1. 2. 3. 4. 5.
выводит: Код: plaintext 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2013, 18:22 |
|
свойство %FileBinaryStream и толстый клиент
|
|||
---|---|---|---|
#18+
Alexey MaslovТ.е. в Id попадает только номер, без информации о глобалеDAiMor предложил вставлять zw id, а не id. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2013, 18:27 |
|
свойство %FileBinaryStream и толстый клиент
|
|||
---|---|---|---|
#18+
Alexey Maslov , И всё-таки %Stream.Global Binary или %Stream.Global Character ? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2013, 18:36 |
|
свойство %FileBinaryStream и толстый клиент
|
|||
---|---|---|---|
#18+
servit, пробовал и zw id, результат такой же. %Stream.GlobalBinary или %Stream.GlobalCharacter?%Stream.GlobalBinary, хотя какая разница? Он ведь наследник %Stream.GlobalCharacter, ничего не добавлено. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2013, 19:43 |
|
|
start [/forum/topic.php?fid=39&fpage=27&tid=1557144]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
57ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
80ms |
get tp. blocked users: |
2ms |
others: | 238ms |
total: | 424ms |
0 / 0 |