2009-12-30 38 views
4

我工作的軟件公司爲以前使用過其他類似軟件的新客戶提供數據轉換服務。我已經編寫了一個VB.NET應用程序來自動執行常見的轉換操作,並在已知供應商之間有單獨的邏輯。一個特定的文件格式已經變得相當普遍,但由於這個特定的競爭對手的應用程序如何存儲信息的性質,某些字段對於一個客戶端意味着一件事,對另一個客戶端意味着另一個字段。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的腳本庫可以完成我想要的大部分功能?是腳本錯誤的方式去做這件事?如果有更好的方法,我真的不想重新發明輪子。

謝謝你的幫助。 :)

回答

2

IronPython(Jake提到的其中一個DLR語言)是Python腳本語言的.NET實現。它允許您訪問.NET代碼(包括您編寫的框架類和類),並且這將是這類任務的絕佳選擇。

它沒有任何真正的依賴關係(除了.NET Framework),爲了完成工作,您不需要學習太多的Python特定語法。

(如果你決定去與IronPython的,我建議使用Notepad++作爲你的編輯器。)

+0

我從來沒有使用過Python,但IronPython看起來很有前途。我會給它一個鏡頭。謝謝! – 2009-12-30 17:07:25

1

您可以嵌入任何DLR languages(IronPython,IronRuby或JScript),而不是編寫自定義語言,也可以使用compiler services從您的應用程序編譯VB.NET。

另一個想法......如果你只需要改變變量名稱之間的映射,也許你可能會想出一個小XML文件來定義映射。

+0

一個DLR語言聽起來像我需要什麼,但我會探索編譯服務,看看是否是一個可行的選擇。映射確實是我邏輯的一部分,但有時我需要定義其他邏輯,因爲某些字段不是以線性方式映射的。感謝您的意見。 :) – 2009-12-30 17:09:34