|
|
|
API у десктопного приложения - как сделать?
|
|||
|---|---|---|---|
|
#18+
Здравствуйте, Программа написана на Delphi XE8 У меня спрашивают: "Если ли API у вашей программы" ? Ответ: нет Возникает вопрос: Как сделать API у десктопного приложения? В виде DLL или COM/OLE/ActiveX-технологии или может быть передавать через IP/порт ? Может сейчас есть более современные технологии? Приложения, которые будут получать/передавать данные в программу - это могут быть любые приложения, написанные на чем угодно. Передавать в программу нужно будет строки и возможно изображения (хотя изображение можно представить в виде текста). Какие будут идеи? Заранее благодарен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2017, 10:27:45 |
|
||
|
API у десктопного приложения - как сделать?
|
|||
|---|---|---|---|
|
#18+
Может просто импорт-экспорт данных из программы сделать, например, в json-xml? Иногда под апи именно это подразумевают. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2017, 10:31:11 |
|
||
|
API у десктопного приложения - как сделать?
|
|||
|---|---|---|---|
|
#18+
Кстати, а это мысль! Только после сохранения xml на диск надо как-то моей программе автоматически затащить данные из xml-файла. А как программа узнает, что xml для импорта подготовлен? Это уже конечно второй вопрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2017, 11:05:35 |
|
||
|
API у десктопного приложения - как сделать?
|
|||
|---|---|---|---|
|
#18+
m52Кстати, а это мысль! Только после сохранения xml на диск надо как-то моей программе автоматически затащить данные из xml-файла. А как программа узнает, что xml для импорта подготовлен? Это уже конечно второй вопрос. В программе, в настройках, хранить путь к папке и расширение файла (.xml или другое). Опрашивать при запуске + периодически\подписаться на события файловой системы (создание файла, например). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2017, 11:08:32 |
|
||
|
API у десктопного приложения - как сделать?
|
|||
|---|---|---|---|
|
#18+
Да, думал уже об этом, но не хотелось бы нагружать программу дополнительным мониторингом ожидания появления xml-файлов в опред.папке. А подписка на события, наверное, не будет работать, если папка лежит на FAT-32 (например на флешке). Для подписки на события ведь нужен NFTS? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2017, 11:17:34 |
|
||
|
API у десктопного приложения - как сделать?
|
|||
|---|---|---|---|
|
#18+
Да какие подписки -- тупо проверять наличие файлов в папке по нажатию на кнопки или через какой-то промежуток времени. А потом эти файлы перемещать в папку с очередью на обработку - обработанными - ошибочными. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2017, 11:21:40 |
|
||
|
API у десктопного приложения - как сделать?
|
|||
|---|---|---|---|
|
#18+
Ну похоже, что так и придется. Только Код: pascal 1. еще не означает, что файл существует и готов для импорта. Файл может быть не дописан до конца другой программой (лежать огрызок). Например, если вы в момент копирования длинного фильма проверите FileExists, то выдаст true, но файл еще до конца не скопирован. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2017, 11:38:22 |
|
||
|
API у десктопного приложения - как сделать?
|
|||
|---|---|---|---|
|
#18+
m52, так проверь - занят он еще или уже нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2017, 11:44:14 |
|
||
|
API у десктопного приложения - как сделать?
|
|||
|---|---|---|---|
|
#18+
m52Как сделать API у десктопного приложения? Зависит от того, кто и как будет использовать. Если это: - .Net / скрипты на WSH (JScript / VBS) / Office (VBA), то лучше сделать COM, причем с Dispatch интерфейсами - скрипты cmd / bash - лучше сделать CLI (command line interface). - PowerShell нужен модуль с Cmdlets (ну или WMI объект) - Java / C / ... какая-то экзотика (Python/...) лучше сделать DLL, и binding для соответсвующего языка - практически все они так или иначе поддерживают вызов из Dll m52передавать через IP/порт ? От вас ведь просят API, а не протокол обмена (который, во-первых, надо еще правильно реализовать и проверить, а во-вторых, вы в какой-то момент можете захотеть изменить). m52Какие будут идеи? Я бы сделал для начала минимальный по затаратам, но максимальный по распространенности вариант - DLL с парой функций. Сам протокол обмена (через сокеты, разделяемую папку, named pipe, shared папку, ... ) скрыть за этой библиотекой. Если будут потом просить binding к конкретному языку / среде - делать уже по запросу (как обертку над этой dll или же напрямую, используя внутреннее API самого протокола). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2017, 12:51:16 |
|
||
|
API у десктопного приложения - как сделать?
|
|||
|---|---|---|---|
|
#18+
m52Только Код: pascal 1. еще не означает, что файл существует и готов для импорта. Файл может быть не дописан до концаНу так сказали же. Перед обработкой твоя программа "перемещает файл в свою папку". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2017, 13:39:46 |
|
||
|
API у десктопного приложения - как сделать?
|
|||
|---|---|---|---|
|
#18+
Можно в программе использовать TTCPServer/TIdTCPServer и принимать различные команды по сети. Или даже TIdHttpServer. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2017, 17:54:51 |
|
||
|
API у десктопного приложения - как сделать?
|
|||
|---|---|---|---|
|
#18+
m52Как сделать API у десктопного приложения? Сначала надо решить какие функции твоего приложения должны быть доступны левым приложениям через это API и какие приложения это могут быть. Если, например, это 1С, то выбора нет: OLE Automation Server, другого эта штука не умеет. Если это какая-то уэб-хренотень, то SOAP сотоварищи. И т.д. и т.п. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2017, 18:08:17 |
|
||
|
API у десктопного приложения - как сделать?
|
|||
|---|---|---|---|
|
#18+
Реализовать плагинную систему на основе COM interface без регистрации com объектов. В принципе можно прикрутить любой язык программирования. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2017, 18:56:36 |
|
||
|
API у десктопного приложения - как сделать?
|
|||
|---|---|---|---|
|
#18+
m52Здравствуйте, Программа написана на Delphi XE8 У меня спрашивают: "Если ли API у вашей программы" ? Ответ: нет Возникает вопрос: Как сделать API у десктопного приложения? В виде DLL или COM/OLE/ActiveX-технологии или может быть передавать через IP/порт ? Может сейчас есть более современные технологии? Приложения, которые будут получать/передавать данные в программу - это могут быть любые приложения, написанные на чем угодно. Передавать в программу нужно будет строки и возможно изображения (хотя изображение можно представить в виде текста). Какие будут идеи? Заранее благодарен. Сильно зависит от того, кто будет пользоваться твоим API. Например, сервис обратится к тебе как к СОМ серверу, ты запускаешься под тем же пользователем со всеми вытекающими (без доступа к рабочему столу и т.п.). Если есть возможность - реализуйся как автономная длл (с дублированием кода). Или как вебсервис, но придется решить вопрос с первоначальным запуском и подчисткой гуя (диалогов и т.п.) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2017, 19:52:32 |
|
||
|
API у десктопного приложения - как сделать?
|
|||
|---|---|---|---|
|
#18+
оповещение программы (например, о том, что входной файл для неё готов и нужно его обработать) можно сделать через user windows message, которое главное окно программы должно обрабатывать или программа-клиент может запустить копию вашей программы с параметрами ком. строки, эта копия найдет окно ранее запущенной копии, передаст ему вышеописанное сообщение, сформированное по полученным параметрам и сразу завершится (или обработает файл сама, если окна ранее запущенной копии не найдется) файлы при этом лучше использовать отображаемые в память (mmf) - так можно полностью избежать физической записи этих файлов на диск рассматривая вариант c .dll (скорее, с экспортируемыми вашим .exe функциями), следует помнить о невозможности такого взаимодействия между 32-битными и 64-битными процессами ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2017, 00:44:17 |
|
||
|
API у десктопного приложения - как сделать?
|
|||
|---|---|---|---|
|
#18+
Клиенты у моей CRM-программы разные и я не знаю, кто и как хочет взаимодействовать с программой. Кто-то хочет,чтобы программа в 1С что-то отправляла, кто-то хочет со своего сайта клиентов заносить в программу. Поэтому мне сложно понять, какой API будет востребованней. Пока рассматриваю или DLL или COM. авторрассматривая вариант c .dll (скорее, с экспортируемыми вашим .exe функциями), следует помнить о невозможности такого взаимодействия между 32-битными и 64-битными процессами У меня приложение 32-битное. Это значит, что стороннее 64-битное приложение не сможет использовать мою DLL ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2017, 11:55:16 |
|
||
|
API у десктопного приложения - как сделать?
|
|||
|---|---|---|---|
|
#18+
Здравствуйтеили программа-клиент может запустить копию вашей программы с параметрами ком. строки, тоже хотел про этот вариант сказать. а то, сейчас API- модное слово, конечный потребитель не знает что это такое, но ему кто-то сказал, что это необходимо. как же, программа без апи, это плохо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2017, 12:00:04 |
|
||
|
API у десктопного приложения - как сделать?
|
|||
|---|---|---|---|
|
#18+
m52У меня приложение 32-битное. Это значит, что стороннее 64-битное приложение не сможет использовать мою DLL ?Не сможет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2017, 12:36:12 |
|
||
|
API у десктопного приложения - как сделать?
|
|||
|---|---|---|---|
|
#18+
m52Клиенты у моей CRM-программы разные и я не знаю, кто и как хочет взаимодействовать с программой. Ну так выясни. Устрой аукцион: кто за какой способ взаимодействия больше заплатит. YuRockНе сможет Сможет, если это будет standalone COM server, но это тот ещё геморрой. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2017, 14:12:37 |
|
||
|
API у десктопного приложения - как сделать?
|
|||
|---|---|---|---|
|
#18+
Если под приложением есть БД, то 2 варианта. 1) Если надо что-то делать через API без запуска приложения, то пишется служба и выбрасывается API в виде SOAP + RESTfull 2) Если достаточно, когда приложение запущено, то делается то же самое только в приложении. Кстати, самый главный вопрос. А что будет в API ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2017, 14:42:40 |
|
||
|
API у десктопного приложения - как сделать?
|
|||
|---|---|---|---|
|
#18+
X-CiteЕсли под приложением есть БД, то 2 варианта. Не, если под приложением есть БД, то никакого API вообще не требуется, достаточно просто документировать таблицы. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2017, 15:23:00 |
|
||
|
API у десктопного приложения - как сделать?
|
|||
|---|---|---|---|
|
#18+
m52 Возникает вопрос: Как сделать API у десктопного приложения? Конечно, можно в программе реализовать web-сервисы. Но если по-простому, то предлагаю такое решение: 1) как уже говорили выше, для передачи данных вашей программе можно выделить какую-то папку и класть туда json/xml/csv/sqlite/любые другие файлы с оговоренной структурой. Папку можно не вшивать жестко в EXE-шник, а например задавать в настройках программы и хранить в реестре 2) точно так же ваша программа может отдавать файлами в ту же папку 3) далее, надо сообщить вашей программе, что есть файлы для обмена. И тут предлагаю отлавливать windows - сообщения, отправляемые по SendMessage . Можно отправить либо просто числовой код команды, либо вообще WM_COPYDATA с данными. Кстати, SendMessage позволяет вернуть код И еще, можно для вызова SendMessage сторонними программами, например из batch-скрипта, можно написать небольшую консольную утилитку, транслирующую параметры командной строки в параметр для SendMessage и возвращающую кодом возврата результат вызова функции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2017, 03:33:51 |
|
||
|
API у десктопного приложения - как сделать?
|
|||
|---|---|---|---|
|
#18+
m52Приложения, которые будут получать/передавать данные в программу - это могут быть любые приложения, написанные на чем угодно. Передавать в программу нужно будет строки и возможно изображения (хотя изображение можно представить в виде текста). Если это будет android приложение (написанное на Xamarin или Java или FireMonkey) которое с телефона должно передать изображение или строки в вашу программу, то варианты через шары, COM, Dll можно забыть. Только SOAP или REST. Или в виде отдельного сервиса или встраивать в ваше приложение непосредственно. Технологии уходят вперед, пора уже задумываться о SOA... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2017, 21:37:49 |
|
||
|
API у десктопного приложения - как сделать?
|
|||
|---|---|---|---|
|
#18+
Использовать RealThinClient SDK, с ним очень легко встроить в приложение http сервер который будет принимать команды АПИ в виде JSON. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2017, 20:28:40 |
|
||
|
API у десктопного приложения - как сделать?
|
|||
|---|---|---|---|
|
#18+
amsdevс ним очень легко встроить в приложение http сервер который будет принимать команды АПИ в виде JSON. Останется один вопрос: зачем мучиться с API вообще, если для его работы всё равно придётся иметь запущенное приложение. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2017, 20:59:55 |
|
||
|
|

start [/forum/topic.php?fid=58&tid=2041609]: |
0ms |
get settings: |
10ms |
get forum list: |
25ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
293ms |
get topic data: |
14ms |
get forum data: |
4ms |
get page messages: |
83ms |
get tp. blocked users: |
2ms |
| others: | 237ms |
| total: | 676ms |

| 0 / 0 |
