Позволить пользователю ввести уравнение, используемое для оценки данных телеметрии
В настоящее время у меня есть данные датчика, сбрасываемые в базу данных. Это необработанные данные, и к ним нужно применить уравнение, чтобы они имели какой-либо смысл для конечных пользователей. Проблема, с которой я столкнулся, заключается в том, что я еще не знаю большинство формул, а также хотел бы, чтобы программа была достаточно гибкой, чтобы при добавлении в систему нового датчика пользователь мог ввести в уравнение калибровки следующее: сможет конвертировать необработанные данные во что-то полезное.
Я никогда не работал с тем, чтобы позволить пользователю вводить в уравнение для манипулирования данными. Буду признателен за любой вклад, который может помочь. В каком направлении я должен искать, должен ли я пробовать деревья лямбда-выражений, оценивать уравнение и компилировать его с использованием CodeDom или смотреть в другом направлении? Я никогда не делал ничего с деревьями лямбда-выражений или с CodeDom, и, как всегда, в довольно сжатые сроки, поэтому кривая обучения действительно имеет значение. У меня будет возможность вернуться и сделать это позже, им просто нужно, чтобы он работал.
Спасибо за любой вклад.
2 ответа
Я настоятельно рекомендую FLEE для анализа / оценки выражений. У него есть собственный компилятор IL, который испускает быстрый IL, у которого нет проблем с памятью, которые есть у CodeDOM.
Он также обладает желательным атрибутом простоты программирования и расширения.
Я думаю, вам нужно посмотреть, что работает для вас. Я также подумал о двух, только чтобы узнать, что вы упомянули их. Я думаю, что другой альтернативой является возможность сохранения параметров нескольких основных формул (т. Е. Кубических, квадратичных, экспоненциальных, логарифмов,...) и выбрать один из них для использования.
Я бы лично использовал деревья выражений, потому что они самые чистые. Одной из проблем CodeDom является утечка памяти, вызванная компиляцией кода, особенно если пользователь изменяет код и строит формулу несколько раз. Одним из решений было бы загрузить скомпилированный код в отдельный домен приложений, а затем выгрузить весь домен приложения.