Форум » [x]Harbour » Как делать программу для Сервера-Терминала ? » Ответить

Как делать программу для Сервера-Терминала ?

Andrey: Всем привет ! Подскажите как уже готовую программу переделать под Сервер-Терминалов ! Что нужно учитывать ? Где и как располагать временные файлы ?

Ответов - 28, стр: 1 2 All

LYSK: интерфейс ГУИ или консольный? Если консольный, то надо поплясать с бубном вокруг шрифтов, чтоб символы были достаточно крупные, потому что полноэкранного режима в терминале нет. Надеюсь, у тебя не 16-разрядное приложение? 16-ти сильно садят терминал-сервер, особенно если в Клиппер-программе не пропатчен опрос клавиатуры.. Если админ сервера позволяет, то временные файлы лучше располагать на том же терминал-сервере.

Andrey: Интерфейс консольный ! Программа на хХарборе, использую GTWVT-терминал во весь экран. Шрифты крупные поддерживают все режимы. Смотри картинку: Админ сервера позволяет сделать все. Куда "пихать" временные файлы и выборки ? Т.к. у меня задача файл-серверная, то все выборки я помещал на клиентской машине в папку C:\TEMP Как на хХарборе узнать что задача стартует на терминале-сервера и как сделать для каждого клиента свою временную папку ?

petr: Для каждого сеанса(пользователя) - уникальный ID ( 3 знака хватит), временная папка - C:\temp\%ID%


КСС: Поднимал терминальные сервера, настраивал права пользователей, даже хотел переносить каталог "Documents and Settings" на другой диск. Поэтому мой совет такой: использовать для TEMP только 100% гарантированный ресурс. Предыдущий совет может не сработать, т.к. прав может и не быть. Сейчас у меня в двух офисах именно так - запрещено всё, что не нужно. Для этого необходимо прочесть в ветке реестра HKCU\Enviroment\ значение TEMP или TMP. Но там имеется %USERPROFILE%. Чтобы его получить проще воспользоваться функцией C_getspecialfolder(CSIDL_PROFILE) из MiniGUI-Ext, смотри \MiniGUI\SOURCE\h_winapimisc.prg

Andrey: Спасибо вам большое ! Буду пробовать....

КСС: Вот вспомнил, что как-то я хотел сделать перемещаемый профиль в терминале, а это значит, что путь к профилю будет в формате UNC (\\ServerName\...). Не знаю как xHarbour, а Clipper этого не понимал. Кроме того, временные файлы, лежащие где-то на другом сетевом ресурсе - не есть хорошо. Поэтому я бы использовал другую схему размещения временных файлов: 1. Получить каталог временных файлов стандартными средствами. Обычно, это \Windows\Temp. Туда всегда имеют доступ все программы. 2. Сформировать имя временного файла в виде [Буква(ы)]+[ID сессии]+[Счетчик номера].[ext] = 8.3 символов 3. Буква может быть одна, например F. Но, если Ваших программ будет работать несколько, то следует их идентифицировать. Поэтому в качестве идентификатора программы следует использовать не более трёх букв, например программа для ЖКХ - идентификатор VKH 4. В моих программах все пользователи проходят идентификацию, и, номер записи из зашифрованной таблицы, по которой идентифицировался пользователь, я использую в качестве идентификатора его сессии. Каждое дополнительное подключение пользователя обязательно через другой логин и как следствие - новая сессия и идентификатор. Двух символов обычно хватает - 99 сессий. 5. Затем три символа порядкового номера временного файла - от 001 до 999 и затем по кругу. Примерно так: // MyProgram.ch DEFINE PROGRAM_ID "VKH" ...... FUNCTION GetTempFileName( nSessionID, cExt ) // Для однопользовательских программ nSessionID = 1 // Иначе его нужно передавать или использовать PUBLIC переменную LOCAL cFileName STATIC nCounter := 0 DEFAULT nSessionID := 1, cExt := "TMP" nCounter = nCounter + 1 nCounter = if( nCounter = 1000, 1, nCounter ) cFileName := PROGRAM_ID + PADL( nSessionID, 2, "0" ) + PADL( nCounter, 3, "0" ) + "." + cExt cFileName := upper( cFileName ) // Лучше чётко определять регистр для кроссплатформенных приложений RETURN cFileName

Andrey: Для временных файлов я использую свой каталог \TEMP, могу и использовать \Windows\Temp Мне непонятно как в своей хХарборовской программе для СЕРВЕРА-Терминала определить кто (какой пользователь) запустил мою программу ??? Я бы добавил к своей переменной \TEMP\имя_пользователя и вот готов временный каталог для этого пользователя ! Тогда наверно лучше использовать %USERPROFILE% и не заморачиваться с временными именами файлов. Т.к. иногда бывает нужно знать конкретное имя файла, например для FastReport..... Посмотрел h_winapimisc.prg и даже переделал в отдельную программу, НЕТ ТАМ доступа к переменной: \Documents and Settings\{USERPROFILE}\Local Settings\Temp Как ее можно получить ? Или нужно самому добавлять к %USERPROFILE% \Local Settings\Temp ?

Dima: Andrey пишет: Шрифты крупные поддерживают все режимы Что за шрифт если не секрет ?

Andrey: Dima пишет: Что за шрифт если не секрет ? Использую библиотеку GTWVT3а. Сам терминал переделал Alexander Prostoserdov смотри http://clipperforwindows.narod.ru При линковки этой библиотеки шрифт крупный под различные расширения экрана и печать ДОС-овская есть... Какой там шрифт он использует я не знаю, спроси у него сам. Высылаю на пробу http://files.mail.ru/8PXOKT

Dima: Andrey пишет: Использую библиотеку GTWVT3а А поделиться не сложно ? ;) PS Напомню что я поделился с тобой одним купленным продуктом ;)

Andrey: Дима, все что угодно, только не это. Обещал Александру (он в Москве рядом живет, я с ним работаю по некоторым проектам) без него не распространять. Тем более что он вообще-то собирался выложить в публичное использование, но когда не знаю. Еще раз извини....

Dima: Andrey OK :) А сколько стоит библа ? Ты по чем брал ? На документацию к библиотеке хотя бы можно взглянуть ?

Andrey: Dima пишет: А сколько стоит библа ? Ты по чем брал ? Извини за задержку ответа, что то пропустил твой вопрос. Библиотеку брал давно, уже года полтора прошло. Просил недавно кое-что переделать мне. Делает.... Задачи с этим терминалам очень нравятся бухгалтерам из-за крупного шрифта. Пальцем тычат в 1С и говорят что такого им шрифта не надо.... Позвонил Александру и задал ему твой вопрос. Пока думает.... Доки нет никакой, там все просто. Пример ДОС печати могу выложить.

valery2: А сколько стоит библа ? Ты по чем брал ? Можно нажать Alt+Enter - получиш консоль в полноэкранном режиме разрешением 640х480

LYSK: В терминальном режиме полноэкранного разрешения не бывает.valery2 пишет: Можно нажать Alt+Enter - получиш консоль в полноэкранном режиме разрешением 640х480

Andrey: Не удается запустить бат файл со следующим содержанием: cmd /c start C:\Documents and Settings\InetComp\Local Settings\Temp\ABONENT4\BACKUP_DB.BAT пробовал cmd /c start "C:\Documents and Settings\InetComp\Local Settings\Temp\ABONENT4\BACKUP_DB.BAT" тоже не работает. Подскажите пожалуйста, кто может .....

Dima: Andrey пишет: cmd /c start "C:\Documents and Settings\InetComp\Local Settings\Temp\ABONENT4\BACKUP_DB.BAT" Вот так работает [pre2] cmd /c "C:\Documents and Settings\InetComp\Local Settings\Temp\ABONENT4\BACKUP_DB.BAT" [/pre2]

Andrey: Народ, помогите советом, как правильно нужно сделать ? Есть сервер Win2008, на нем клиенты подключаются через Сервер терминалов к моей задаче. Есть отдельная программа на МиниГуи которая может запускаться в трей и каждые 5 минут отправляет измененные записи на сайт. 1) Как организовать запуск этой программы чтобы она всегда работала (т.е. после перезагрузки сервера) ? 2) Как сделать, чтобы отправку записей юзера видели у себя на раб.столе Т.е. какой механизм использовать можно... Сейчас моя программа в трее пишет: Отправлено 15 записей. Но эту надпись же видит только тот пользователь от кого стартовала программа. Как сделать чтобы все видели это сообщение ?

petr707: 1) Программу лучше эксплуатировать не на сервере, а на виртуальной машине, которую нужно создать и запускать на этом сервере. 2) Выделить отдельную учетную запись для работы этой программы. 3) Виртуалку запускать в режиме автологона для этой учетки - в системном реестре есть такие ключи. Тогда виртуалка поднимется при любом перестарте сервера. 4) Для запуска задачи - использовать Планировщик виртуалки - создать задание Планировщика -запускать программу при условии входа в виртуалку под нужной учеткой 5) для других юзеров - использовать другую часть программы - пусть просто читают лог, который создает первая программа

Andrey: petr707 пишет: 1) Программу лучше эксплуатировать не на сервере, а на виртуальной машине, которую нужно создать и запускать на этом сервере. А можете пояснить почему ? petr707 пишет: 5) для других юзеров - использовать другую часть программы - пусть просто читают лог, который создает первая программа Тогда нужно делать другую программу на МиниГуи, которая будет сидеть в трее и показывать лог програмы отправки ? Так ?



полная версия страницы