我工作的软件公司为之前使用过其他类似软件的新客户提供数据转换服务。我编写了一个VB.NET应用程序来自动执行常见的转换操作,并在已知供应商之间使用单独的逻辑。特定的文件布局已变得相当普遍,但由于此特定竞争对手的应用程序存储信息的性质,某些字段对于一个客户端来说意味着一件事,而对于另一个客户端则是另一件事。
此供应商格式中的某些元素每次都会更改,因此我编写了应用程序来解释此问题。由于某些数据字段对不同的供应商意味着不同的东西,我每次都必须更改我的映射代码。当我每六个月左右使用其中一个时,这不是问题,但这些变得越来越普遍,我宁愿找到一种方法来进一步自动化这个过程。
我正在考虑实现一种简单的解释脚本语言,它允许我在文本文件中保存客户端的转换设置,因此每次运行时我都不必将设置提供给我的应用程序。我的目标是从长远来看,在更快的转换中花费时间来实现这种回报。
这是我脑子里的例子:
# this is a comment
RECORD INCLUDE(source[Class] != 'I' && source[Category] != 99);
FIELDMAP
destination[name] == source[name];
desintation[address] == source[mailingaddress1];
...
END FIELDMAP
BEGIN
# logic goes here
END
我不想让它变得比它需要的更复杂。我承认我从来没有考虑过编写脚本,而且对于从哪里开始或者需要做出哪些其他考虑因素都是无能为力的。
是否已经有.NET的脚本库可以完成我想要的大部分工作?编写错误的脚本是为了解决这个问题吗?如果有更好的方法,我真的不想重新发明轮子。
感谢您的帮助。 :)
答案 0 :(得分:2)
IronPython(Jake提到的DLR语言之一)是Python脚本语言的.NET实现。它允许您访问.NET代码(包括您编写的框架类和类),并且是这类任务的绝佳选择。
它没有任何真正的依赖(除了.NET Framework),你不需要学习太多了解Python特定的语法就可以完成工作。
(如果您决定使用IronPython,我建议您使用Notepad++作为编辑。)
答案 1 :(得分:1)
您可以嵌入任何DLR languages(IronPython,IronRuby或JScript),也可以使用compiler services从应用程序编译VB.NET,而不是编写自定义语言。
另一个想法......如果你只需要改变变量名之间的映射,也许你可以想出一个定义映射的小XML文件。