Skip to content

Commit 43e109e

Browse files
authored
Update README.md
1 parent f105aa9 commit 43e109e

1 file changed

Lines changed: 55 additions & 3 deletions

File tree

README.md

Lines changed: 55 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,63 @@
66
> <https://ahyahy.github.io/OneScriptClientServer/index.html>
77
>
88
9-
Можно обмениваться текстовыми сообщениями, сообщениями, содержащими двоичные данные или некоторые другие базовые типы данных. В дальнейшем планирую расширить возможности библиотеки до создания клиент-серверных приложений с использованием механизма удаленного вызова методов по протоколу TCP/IP.
9+
Основой проекта послужила [разработка автора Halil ibrahim Kalkan](https://www.codeproject.com/Articles/155282/TCP-Server-Client-Communication-Implementation). Согласно документации на разработку (далее следует перевод) - клиенты смогут вызывать методы серверного приложения через интерфейс точно так же, как обычные вызовы методов в том же приложении. ... То есть должна получиться двусторонняя, ориентированная на подключение и асинхронная коммуникационная библиотека. После того, как клиент подключается к серверу, они смогут обмениваться данными ... асинхронно до тех пор, пока клиент или сервер не закроют соединение.
1010

11-
Основой проекта послужила [разработка автора Halil ibrahim Kalkan](https://www.codeproject.com/Articles/155282/TCP-Server-Client-Communication-Implementation). Согласно документации на разработку (далее следует перевод) - клиенты смогут вызывать методы серверного приложения через интерфейс точно так же, как обычные вызовы методов в том же приложении. Серверное приложение также сможет вызывать клиентские методы таким же образом через интерфейс. То есть должна в итоге получиться двусторонняя, ориентированная на подключение и асинхронная коммуникационная библиотека. После того, как клиент подключается к серверу, они смогут обмениваться данными в обоих направлениях (сервер-клиенту или клиент-серверу) асинхронно до тех пор, пока клиент или сервер не закроют соединение. Это не просто обмен запросами/ответами, как в веб-сервисах.
11+
Что в итоге получилось при создании библиотеки.
1212

13-
Надеюсь удастся научить и мою библиотеку всё это выполнять, посмотрим.
13+
Можно обмениваться сообщениями, содержащими текст, двоичные данные или базовые типы данных.
14+
Клиент может подключившись к серверу вызывать методы скрипта, содержащего код сервера, и соответственно методы подключенного к этому скрипту других сценариев. В ответе сервера клиент может получить какое либо значение базового типа данных, или двоичные данные. А это дает возможность написать приложение, состоящее из множества сценариев, запустить его на компьютере-сервере и подключаясь одновременно с компьютеров-клиентов по сети управлять работой приложения.
15+
Сервер многопоточный (каждый клиент в своем потоке живет), асинхронный (обработка клиентов происходит асинхронно).
16+
17+
Вот как это выглядит в коде.
18+
19+
Файл Сервер.os
20+
21+
```bsl
22+
Перем КС, ПриложениеСервис1;
23+
24+
Процедура МояПроцедураНаСервереСПараметрами(Параметр1, Параметр2, Параметр3) Экспорт
25+
ПриложениеСервис1.Результат = "Сумма параметров = " + (Параметр1 + Параметр2 + Параметр3) + " (" + ТекущаяУниверсальнаяДатаВМиллисекундах() + ")";
26+
КонецПроцедуры
27+
28+
ПодключитьВнешнююКомпоненту("ВашКаталогНаДиске\OneScriptClientServer.dll");
29+
КС = Новый КлиентСерверДляОдноСкрипта();
30+
ПриложениеСервис1 = КС.ПриложениеСервис(10085, ЭтотОбъект);
31+
32+
// Запустим сервер
33+
ПриложениеСервис1.Начать();
34+
Сообщить("ПриложениеСервис запущен");
35+
36+
// Запустим цикл обработки событий
37+
Пока КС.Продолжать Цикл
38+
Попытка
39+
КС.ПолучитьСобытие().Выполнить();
40+
Исключение
41+
КС.ВызватьМетод(ЭтотОбъект, КС.АргументыСобытия.ИмяМетода, КС.АргументыСобытия.МассивПараметров);
42+
КонецПопытки;
43+
КонецЦикла;
44+
```
45+
Файл Клиент.os
46+
47+
```bsl
48+
ПодключитьВнешнююКомпоненту("ВашКаталогНаДиске\OneScriptClientServer.dll");
49+
КС = Новый КлиентСерверДляОдноСкрипта();
50+
ПриложениеКлиент1 = КС.ПриложениеКлиент(КС.TCPКонечнаяТочка("127.0.0.1", 10085));
51+
52+
ПриложениеКлиент1.Подключить();
53+
54+
МассивПараметров = Новый Массив();
55+
МассивПараметров.Добавить(125.35);
56+
МассивПараметров.Добавить(25);
57+
МассивПараметров.Добавить(75);
58+
59+
Если ПриложениеКлиент1.СостояниеСоединения = КС.СостояниеСоединения.Подключен Тогда
60+
Сообщить("Результат на клиенте = " + ПриложениеКлиент1.ВыполнитьНаСервере("МояПроцедураНаСервереСПараметрами", МассивПараметров));
61+
КонецЕсли;
62+
63+
Приостановить(2000);
64+
ПриложениеКлиент1.Отключить();
65+
```
1466

1567
### Замеры производительности
1668

0 commit comments

Comments
 (0)