У меня очень простая проблема. У меня есть приложение, которое написано в Delphi 2007 для WIN32. Он использует C # DLL, которая импортируется в проект через его COM-интерфейс, и простой прием, чтобы избежать регистрации COM-объекта. Но теперь у меня есть сгенерированный Java-файл .JAR, который я хочу вызвать из своего приложения. И хотя у меня есть доступ к Delphi и коду C #, у меня просто нет доступа к коду Java.
Я могу сделать две вещи. Либо я вызываю Java-класс из кода Delphi, который затем вызывается из кода C #, который вызывается снова из кода Delphi. Или я просто вызываю код Java прямо из C #. (Который снова вызывается из Delphi.)
Я знаю, что это сложная установка. Приложение Delphi содержит графический интерфейс и некоторые коммуникационные модули для некоторого специального оборудования. Для них нет драйверов .NET. Код C # предназначен для поддержки связи с базой данных и включает некоторую логику, связанную с CardSpace и другими параметрами безопасности. Класс Java - это сторонний модуль кодирования, который создается сторонней организацией, которая вычисляет специальный хэш-код для данных в базе данных и выполняет дополнительную обработку, которая контролирует еще одну часть оборудования.
Самая большая проблема: нет сетевых коммуникаций! Он будет работать на специальном компьютере, на котором не установлено сетевое оборудование. Это автономная система Windows XP. Хотя с COM, Java и .NET все в порядке, я не могу использовать никакие соединения TCP / IP в этой системе.
Это будет мой следующий проект, если я его приму. Уже сейчас у меня болит голова, поэтому я думаю, что упущу этот шанс, хотя в нем есть интересная смесь нескольких разных языков. Я думаю, что я просто скажу им, чтобы они потратили 6 цифр на покупку нового оборудования вместо того, чтобы тратить сумму в 5 цифр на 28 дней моей работы ...
Несколько подробностей о проекте, которым я могу поделиться:
Код Delphi может подключаться к системе УАТС через COM-порт, который он использует для отправки факсов, отправки и получения SMS-сообщений, а также для получения простых команд, просто вводя цифры с телефона после вызова. Вся система имеет было написано для этого, все на основе кода WIN32.
Java-код является клиентским модулем для связи с робототехнической системой, которая контролирует среду, обрабатывает несколько деликатных объектов и выполняет постоянные измерения этих объектов. Это на Java, поэтому он не зависит от платформы. Связь между Java-клиентом и роботизированным оборудованием осуществляется через сеть, и сетевое оборудование / драйверы не любят дополнительной болтовни в этой сети. (Именно поэтому он отключен в максимально возможной степени. Даже Windows не будет получать обновления.)
Код C # предназначен для сбора данных из модуля Java и для фактического сохранения этих записей в памяти при записи обычных резервных копий в XML на случай, если что-то случится. Он предназначен для связи с модулем Java и несколькими другими модулями, которые обрабатывают сложные вычисления, написанные на .NET-совместимом доменном языке, который этот клиент разработал самостоятельно. Эти модули не поддерживают COM, поэтому оболочка c #.
Клиенту теперь нужен оператор, чтобы находиться рядом с оборудованием, чтобы манипулировать робототехникой. Он может либо модернизировать аппаратное обеспечение, что обойдется ему довольно дорого, но это даст ему лучший удаленный доступ, который стоит около 250 000 евро для замены древней робототехники и другого оборудования, или он платит нескольким разработчикам десятую часть этой суммы, чтобы получить свое текущее оборудование делать то же самое. Лично я думаю, что он не должен быть таким дешевым человеком, он просто хочет оценить, сколько будет стоить ему решение для разработчиков. Изменения кода невелики, так как большая часть функциональности уже есть. Это просто объединяет все это без какой-либо связи TCP / IP, что делает его более сложным.
По сути, инструкции, которые они хотят дать, - это ускорить или замедлить работу, отправлять случайные отчеты и отправлять SMS-предупреждения в случае возникновения проблем. Теперь они сидят рядом с экраном и пьют кофе целый день, читая какие-то газеты или другие журналы. И хотя это забавно в течение нескольких дней, он не может найти кого-то, кто хочет делать это все время, 24/7. (Да, они работают днем и ночью, включая выходные.)
По сути, это все, что я знаю сам. Я даже не видел ПК, на котором он должен быть установлен, но некоторые из них настроены одинаково, поэтому я смогу поэкспериментировать с ним, как только это понадобится. (И это будет адский отладчик тоже.)
В заключительной заметке я представил смету расходов и набрал достаточно большое число, чтобы убедить моего потенциального работодателя вместо этого выполнить обновление оборудования. Дороже, но это сохранит надежность.
Из-за этого этот Q только что стал академическим ...