2013-08-30 118 views
3

需要在我們的發票中使用計算器,這些計算器將用於Web UI和後端。這需要Javascript和C#中兩個相同邏輯的實現,真正的問題是在更改規則時保持這兩個邏輯同步。保持C#和JS同步實現的相同邏輯

目前,我們在JS方面做的是,我們通過ajax調用將所有重新計算請求發送到後端,以便使用C#中實現的計算器。這使我們的服務器很忙,我不喜歡這個想法。我認爲應該有一個規則引擎或某個地方可以利用它來保持計算邏輯不是C#或JS以外的語言,並在前端和後端使用/解釋它。

有沒有其他人面臨同樣的問題?任何想法將不勝感激。

+2

看起來您需要爲可以在_C#_和_JavaScript_上共享的數據格式編寫/查找解釋器,它可以描述您想要的操作(可能是_String_),然後將所有邏輯定義爲即共享數據格式,因此兩種實現都可以訪問相同的內容。 –

+1

這個類似的問題列出了一個很好的概述:http://stackoverflow.com/questions/16434389/javascript-and-c-sharp-cross-compiling-and-conversion – Dejan

回答

1

面對同樣的問題,並通過在JavaScript中實現邏輯解決它,然後在服務器上運行它與https://jurassic.codeplex.com/。很好地工作。

+1

謝謝你。我發現幾個其他替代品http://stackoverflow.com/questions/16434389/javascript-and-c-sharp-cross-compiling-and-conversion和http://stackoverflow.com/questions/172753/embedding-javascript- engine-into-net-c –

+1

謝謝你的反饋。幾年前我和ScriptSharp一起工作過,很棒。它的發展有一天停了下來,但可能再次起飛。想聽聽你最後的選擇。 – citykid

+0

順便說一句,謝謝你應該總是值得+1。 – citykid

1

您可以嘗試使用Haxe來實現您的規則引擎,然後將其交叉編譯爲JavaScript和C#。這會給你一個共同的實現基礎,然後 - 在編譯期間 - 你將會形成兩種不同的語言輸出。

聲明:我還沒有使用Haxe,所以我不能證明它是否適合您的情況,但它支持兩種語言作爲目標。

0

您可以使用任何「決策即服務」平臺。他們通常將決策(與關係和依賴關係連接的業務規則串)作爲REST API服務公開。因此,您可以簡單地與服務交互以執行和管理規則。

例如here is a sample如何通過在JavaScript中傳遞輸入參數值來與執行決策服務進行通信。