Переключение на Главную Страницу Страницы: [1] 2 3 ... 6 ОтправитьПечать
Очень популярная тема (более 25 ответов) 1C 7.7 DBF Клиент-сервер. Нужна помощь в тестировании. (число прочтений - 31530 )
Wirth
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 54
Зарегистрирован: 01. Марта 2010
1C 7.7 DBF Клиент-сервер. Нужна помощь в тестировании.
20. Июля 2010 :: 08:33
Печать  
Нужна помощь в тестировании Клиент-серверного решения для 1С:Предприятия 7.7 DBF
Написал его разбираясь с устройством dbeng32. Конечно сам потестил, но сами понимаете...
Разработка главным образом борется с падением скорости при подключении более одного пользователя. Блокировки не использует.
  
Наверх
www  
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: 1C 7.7 DBF Клиент-сервер. Нужна помощь в тестировании.
Ответ #1 - 20. Июля 2010 :: 08:52
Печать  
Ну, выкладывай решение, поглядим..
  
Наверх
 
IP записан
 
Wirth
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 54
Зарегистрирован: 01. Марта 2010
Re: 1C 7.7 DBF Клиент-сервер. Нужна помощь в тестировании.
Ответ #2 - 20. Июля 2010 :: 09:08
Печать  
Положил на свой сайт в каталог файлов. Не знаю можно здесь давать ссылки?
  
Наверх
www  
IP записан
 
slawa
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 125
Зарегистрирован: 05. Октября 2006
Re: 1C 7.7 DBF Клиент-сервер. Нужна помощь в тестировании.
Ответ #3 - 20. Июля 2010 :: 09:14
Печать  
Wirth писал(а) 20. Июля 2010 :: 08:33:
Блокировки не использует.


Описание есть ?
Что значит не использует блокировки ?
  
Наверх
 
IP записан
 
Wirth
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 54
Зарегистрирован: 01. Марта 2010
Re: 1C 7.7 DBF Клиент-сервер. Нужна помощь в тестировании.
Ответ #4 - 20. Июля 2010 :: 09:15
Печать  
Да еще, мне хочется верить, что решение будет условно-бесплатным. Ну на самом деле, как пойдет. Это я к тому, что если все-таки пойдет Улыбка , то предоставление бесплатных лицензий, дело само-собой разумеющееся.
Заранее спасибо!
  
Наверх
www  
IP записан
 
Wirth
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 54
Зарегистрирован: 01. Марта 2010
Re: 1C 7.7 DBF Клиент-сервер. Нужна помощь в тестировании.
Ответ #5 - 20. Июля 2010 :: 09:16
Печать  
Описание есть в дистрибьютиве.

Используется принцип не блокировок, а файловых транзакций.
  
Наверх
www  
IP записан
 
Wirth
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 54
Зарегистрирован: 01. Марта 2010
Re: 1C 7.7 DBF Клиент-сервер. Нужна помощь в тестировании.
Ответ #6 - 20. Июля 2010 :: 09:22
Печать  
Выдержки из описания:

Сервер Вирт:V7DBNet – создан специально для работы с 1С:Предприятием 7.7, для повышения производительности работы платформы в режиме DBF. Сервер переводит 1С:Предприятие из режима блокировок в режим транзакций, позволяя тем самым избежать  падения производительности 1С при подключении более чем одного пользователя («проблема второго пользователя»). При отсутствии блокировок, естественным образом, снимается ограничение размера файлов в 1Gb.  Файлы DBF не предоставляются в общий доступ, с ними работает только один сеанс – Сервер Вирт:V7DBNet, что позволяет не использовать специальных серверных операционных систем, а также снизить требования к «железу» сервера. Также тот факт, что файлы находятся на защищенной области диска, интересен с точки зрения политики безопасности организации. Для работы 1С:Предприятия 7.7 с сервером Вирт:V7DBNet, необходимо установить V7DBNet Клиент, в виде расширения платформы. (подробнее в документации клиента).


Как это  работает

Клиент перехватывает обращения к файлам DBF и CDX и передает запросы на сервер, сервер возвращает результат в виде кеш-страниц. Далее клиент работает с такой страницей без обращения к серверу, пока сервер не сообщит о потере  ее актуальности.
Иначе говоря, данные хранятся в оперативной памяти клиентов в виде кеш-страниц, а сервер их обслуживает по мере необходимости.
Запись, все еще происходит поочередно (эксперименты показали, что пока это самый надежный вариант, но в этом направлении еще можно работать). Клиент подает запрос серверу на запись, сервер добавляет его в очередь ожидания, если кто-то уже пишет данные, или сразу дает разрешение. Когда клиенту разрешена запись, он отправляет на сервер обновленные данные, при этом сервер создает транзакцию, отдельный сеанс, в котором тот кто пишет, видит изменения, а остальные нет, Иначе говоря, все остальные клиенты не блокируются. Когда клиент сообщает, что он завершает запись, и других измененных данных не будет, сервер отражает измененные данные в файлах и посылает клиентам уведомление об измененных кеш-страницах.
  
Наверх
www  
IP записан
 
slawa
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 125
Зарегистрирован: 05. Октября 2006
Re: 1C 7.7 DBF Клиент-сервер. Нужна помощь в тестировании.
Ответ #7 - 20. Июля 2010 :: 09:27
Печать  
Wirth писал(а) 20. Июля 2010 :: 09:16:
Описание есть в дистрибьютиве.

Используется принцип не блокировок, а файловых транзакций.


Спасибо. Понял.
Просто скачал, а описания нет.
Ставить все подряд в систему не хочется.
ЗЫ.
Про виртуалки знаю Улыбка
  
Наверх
 
IP записан
 
slawa
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 125
Зарегистрирован: 05. Октября 2006
Re: 1C 7.7 DBF Клиент-сервер. Нужна помощь в тестировании.
Ответ #8 - 20. Июля 2010 :: 09:41
Печать  
Wirth писал(а) 20. Июля 2010 :: 09:22:
... транзакцию, отдельный сеанс, в котором тот кто пишет, видит изменения, а остальные нет, Иначе говоря, все остальные клиенты не блокируются.
Очень интересно. Т.е. остаются в заблуждении?
Цитата:
Когда клиент сообщает, что он завершает запись, и других измененных данных не будет, сервер отражает измененные данные в файлах и посылает клиентам уведомление об измененных кеш-страницах.
и как на 1с-ке реализуется пересчет измененных данных ?
  
Наверх
 
IP записан
 
Wirth
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 54
Зарегистрирован: 01. Марта 2010
Re: 1C 7.7 DBF Клиент-сервер. Нужна помощь в тестировании.
Ответ #9 - 20. Июля 2010 :: 09:49
Печать  
1с опрашивает таблицы на вопрос изменений.
В данном варианте, она опрашивает всегда актуальный собственный кеш, за этим следит сервер. Пока запись не завершена, она не актуальна, и не интересна для тех кто не пишет.
1с перед тем как что-то писать, сообщает об этом (пытается установить виртуальную блокировку), я обрабатываю ее как событие. Запись происходит поочередно. Первый записал, сервер всем кеш актуализировал, далее второй и т.д.
Вроде все должно быть гладко. Но конечно надо протестировать в разных условиях, собственно поэтому и обращаюсь.
  
Наверх
www  
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: 1C 7.7 DBF Клиент-сервер. Нужна помощь в тестировании.
Ответ #10 - 20. Июля 2010 :: 09:50
Печать  
Установил, как узнать, что ЭТО работает ?..
А всё, не надо.. нашел описалово..
  
Наверх
 
IP записан
 
Wirth
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 54
Зарегистрирован: 01. Марта 2010
Re: 1C 7.7 DBF Клиент-сервер. Нужна помощь в тестировании.
Ответ #11 - 20. Июля 2010 :: 09:53
Печать  
в документации на сервер есть пример пошаговый с "картинками"
  
Наверх
www  
IP записан
 
slawa
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 125
Зарегистрирован: 05. Октября 2006
Re: 1C 7.7 DBF Клиент-сервер. Нужна помощь в тестировании.
Ответ #12 - 20. Июля 2010 :: 10:03
Печать  
Wirth писал(а) 20. Июля 2010 :: 09:49:
1с опрашивает таблицы на вопрос изменений.
В данном варианте, она опрашивает всегда актуальный собственный кеш, за этим следит сервер. Пока запись не завершена, она не актуальна, и не интересна для тех кто не пишет.
1с перед тем как что-то писать, сообщает об этом (пытается установить виртуальную блокировку), я обрабатываю ее как событие. Запись происходит поочередно. Первый записал, сервер всем кеш актуализировал, далее второй и т.д.
Вроде все должно быть гладко. Но конечно надо протестировать в разных условиях, собственно поэтому и обращаюсь.

давайте на пальцах:
1. Есть справочник из 5-ти элементов у которых есть числовой реквизит.
2. Первый клиент начал увеличивать (в 1с-ной транзакции) значения числовых реквизитов на 1.
3. После изменения первого элемента, второй клиент начал увеличивать (так-же в транзакции) значение числовых, этих-же, реквизитов в два раза.
4. Что будет в результате завершения обоих транзакций ?
  
Наверх
 
IP записан
 
Wirth
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 54
Зарегистрирован: 01. Марта 2010
Re: 1C 7.7 DBF Клиент-сервер. Нужна помощь в тестировании.
Ответ #13 - 20. Июля 2010 :: 10:03
Печать  
На всякий случай все же приведу выдержки из документации.

Пример переноса базы 1С на сервер Вирт:V7DBNet

Кратко:

1. Установите сервер.

2. Определите где будут располагаться базы данных, и пропишите этот путь в файл
настройки сервера dbnets.ini, fold=путь. Файл доступен из меню «Настройка
сервера».

3. Запустите сервер, убедитесь, что порт разрешен вашей системой безопасности
компьютера, например, открыв Web-интерфейс сервера с компьютера клиента.

4. Установите клиент в платформу 1С:Предприятия 7.7.

5. Создайте каталог имени базы по указанному пути, например: «Бухгалтерия»,
переместите в него файлы DBF и CDX из базы данных 1С.

6. Создайте в каталоге базы данных 1С файл dbnet.ini с параметрами fold=
Бухгалтерия, host=ip или имя сервера

Подробно:

Предположим - у нас есть сервер «serv-1c», с размещенной на нем базой 1С и
административная установка 1С:Предприятие 7.7 в виде ресурса с общим доступом
«D:\1C». И несколько клиентов.


serv-1c:
D:
|-----[ 1C ] - общий ресурс
|-----[ 1Cv77.ADM ] – платформа 1С:Предприятие 7.7
| |-----[ bin ]
| |-----[ Бухгалтерия ]


база данных бухгалтерии организации
|-----[ ExtForms ]
|-----[ Userdef ]
|-----[ ... ]
|-----< 1Cv7.MD >
|-----< 1Cv7.DD >
|-----< ... >
|-----< *.DBF >
|-----< *.CDX >


Предположим, что место для размещения баз сервера Вирт:V7DBNet, мы определили как
D:\V7DBNet\

И так:

1. Установим сервер

2. Откроем файл настроек сервера dbnets.ini через пункт меню «Настройка сервера»
установленной программы «Вирт V7DBNet Сервер»
dbnets.ini
-------------------------------------------------------------
;fold=d:\base
user=Admin
pass=123
-------------------------------------------------------------

3. Включим параметр fold, убрав точку с запятой, и укажем в качестве значения
необходимый нам путь D:\V7DBNet\

dbnets.ini
-------------------------------------------------------------
fold= D:\V7DBNet
user=Admin
pass=123
-------------------------------------------------------------

4. Сохраним файл

5. Запустим сервер как приложение «Сервер как приложение - Запуск» или как сервис
«Сервер как служба - Установка»

6. Для того чтобы убедиться что порт разрешен (ни кем не занят и не заблокирован
системой защиты компьютера) попробуем войти в Web-интерфейс сервера с
компьютера клиента. Запустим на клиенте браузер и в адресной строке укажем:
http://serv-1c:13387/
Если все нормально, браузер предложит указать имя пользователя и пароль на
доступ. Пользователь = Admin, пароль = 123

7. Создадим каталог для размещения баз - V7DBNet, на диске D: сервера.

8. Создадим в нем каталог нашей базы, пусть он будет называться также, как и
исходная база – «Бухгалтерия», хотя названия могут не совпадать.

9. Переместим в каталог базы сервера «D:\V7DBNet\Бухгалтерия\» файлы *.DBF и
*.CDX из каталога базы 1С «D:\1C\Бухгалтерия\»

10. В каталоге базы 1С «D:\1C\Бухгалтерия\» создадим файл dbnet.ini с необходимыми
параметрами:

D\1C\Бухгалтерия\dbnet.ini
-------------------------------------------------------------
host=serv-1c
fold=Бухгалтерия
szcache=15Mb
-------------------------------------------------------------

В итоге имеем:

serv-1c:
D:
|-----[ V7DBNet ]
| |-----[ Бухгалтерия ] – имя базы сервера
| |-----< *.DBF >
| |-----< *.CDX >
|
|-----[ 1C ] - общий ресурс
|-----[ 1Cv77.ADM ]
| |-----[ bin ]
| |-----[ Бухгалтерия ]

база данных бухгалтерии организации
|-----[ ExtForms ]
|-----[ Userdef ]
|-----[ ... ]
|-----< 1Cv7.MD >
|-----< 1Cv7.DD >
|-----< ... >
|-----< dbnet.ini >


11. Установим Вирт: V7DBNet Клиент (в данном случае на сервер, т.к. файлы
платформы 1С:Предприятие 7.7 находятся на нем, в случае, если платформа
установлена на каждом клиенте отдельно, пункты 11-12 выполнить на каждом
клиенте )

12. Инсталлируем компонент в каталог платформы “D:\1C\1Cv77.ADM\Bin\”

Для отмены переноса базы не сервер, переместите файлы DBF и CDX обратно в каталог
базы данных 1С, и удалите из него файл dbnet.ini
  
Наверх
www  
IP записан
 
Wirth
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 54
Зарегистрирован: 01. Марта 2010
Re: 1C 7.7 DBF Клиент-сервер. Нужна помощь в тестировании.
Ответ #14 - 20. Июля 2010 :: 10:13
Печать  
slawa писал(а) 20. Июля 2010 :: 10:03:
давайте на пальцах:
1. Есть справочник из 5-ти элементов у которых есть числовой реквизит.
2. Первый клиент начал увеличивать (в 1с-ной транзакции) значения числовых реквизитов на 1.
3. После изменения первого элемента, второй клиент начал увеличивать (так-же в транзакции) значение числовых, этих-же, реквизитов в два раза.
4. Что будет в результате завершения обоих транзакций ?


Я не создаю параллельные транзакции на запись. Запись происходит по очереди (пока по крайней мере).
И на всякий случай эмуллирую блокировку объекта, чтобы к примеру не могли открыть один документ два пользователя.
Хотя пробовал и без нее - работает нормально, но сохраняется последний записанный вариант. (может потом в настройки выведу включение такого режима. Пока я в нем не уверен).

  
Наверх
www  
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 3 ... 6
ОтправитьПечать