Позволить пользователю ввести уравнение, используемое для оценки данных телеметрии

В настоящее время у меня есть данные датчика, сбрасываемые в базу данных. Это необработанные данные, и к ним нужно применить уравнение, чтобы они имели какой-либо смысл для конечных пользователей. Проблема, с которой я столкнулся, заключается в том, что я еще не знаю большинство формул, а также хотел бы, чтобы программа была достаточно гибкой, чтобы при добавлении в систему нового датчика пользователь мог ввести в уравнение калибровки следующее: сможет конвертировать необработанные данные во что-то полезное.

Я никогда не работал с тем, чтобы позволить пользователю вводить в уравнение для манипулирования данными. Буду признателен за любой вклад, который может помочь. В каком направлении я должен искать, должен ли я пробовать деревья лямбда-выражений, оценивать уравнение и компилировать его с использованием CodeDom или смотреть в другом направлении? Я никогда не делал ничего с деревьями лямбда-выражений или с CodeDom, и, как всегда, в довольно сжатые сроки, поэтому кривая обучения действительно имеет значение. У меня будет возможность вернуться и сделать это позже, им просто нужно, чтобы он работал.

Спасибо за любой вклад.

2 ответа

Решение

Я настоятельно рекомендую FLEE для анализа / оценки выражений. У него есть собственный компилятор IL, который испускает быстрый IL, у которого нет проблем с памятью, которые есть у CodeDOM.

Он также обладает желательным атрибутом простоты программирования и расширения.

Я думаю, вам нужно посмотреть, что работает для вас. Я также подумал о двух, только чтобы узнать, что вы упомянули их. Я думаю, что другой альтернативой является возможность сохранения параметров нескольких основных формул (т. Е. Кубических, квадратичных, экспоненциальных, логарифмов,...) и выбрать один из них для использования.

Я бы лично использовал деревья выражений, потому что они самые чистые. Одной из проблем CodeDom является утечка памяти, вызванная компиляцией кода, особенно если пользователь изменяет код и строит формулу несколько раз. Одним из решений было бы загрузить скомпилированный код в отдельный домен приложений, а затем выгрузить весь домен приложения.

Другие вопросы по тегам