2012-02-19 32 views
0

我正在尋找最佳實踐或通用方法來製作可由常規非程序員修改的服務器端應用程序。它不需要熱修改;它可以重新編譯和重新部署。服務器端腳本編寫客戶端 - 服務器程序中的邏輯的方法

假設系統位於EJB或Spring容器中。該系統是消息驅動的(可能是EJB3.1)。有許多POJO接收來自客戶端應用程序(RCP或RIA)的消息,對這些消息作出反應,並將更多消息發送給相同的客戶端應用程序和其他客戶端應用程序。使系統易於修改的最佳方法是什麼?如果我正確分離服務器的邏輯組件,那麼採用什麼技術或設計方法可以讓我用新的POJO交換邏輯POJO,從而改變應用程序的行爲?

我想我所描述的是一種戰略模式。這些POJO是否可以通過一系列人類可讀和可編輯的規則生成?像Drools這樣的規則引擎是否可以解決這個問題?

這是否可以與狀態機生成器結合使用,以便每個狀態都有一個輸入消息列表以及對每個狀態的響應,轉換規則等等?

玩具例子:

  • State_Evening
    • 輸入sellStocks
      • 回覆 「不能在晚上賣,等到白天。」 「賣股票的_
  • State_Day
    • 輸入sellStocks
      • 做SellStocks
      • 回覆

現在,我寫出來這樣的,它看起來像腳本語言將是幾乎相同的編程...

我只是在尋找一個正確的方向指針。或者可能是因爲我簡單地過分複雜化了一些東西。也許我應該讓業務邏輯儘可能乾淨地分離,並在代碼中進行更改?

編輯在2012年2月22日爲清楚起見

+0

成爲一名程序員需要多年的時間,更要成爲一名體面的人,更要成爲一名好的人。我不會用手術刀將我的身體給予非外科醫生。我不會把我的代碼給非程序員。 – 2012-02-19 18:43:40

+0

我完全同意。另一方面,如果你是一個愛好/解決問題的方案,你通常會忘記一年前如何實施某些東西的細節。主要是因爲你不是每天都在編程。能夠在不需要重新學習你所做的事情的情況下進行修改會很好。 :) – 2012-02-19 19:29:36

回答

1

我同意關於手術刀JB Nizet評論。

總之:一些回答您的萬阿英,蔣達清:

春天,格里芬,嵌入式碼頭,Servlet的,EJB(?或POJO的或...) 到目前爲止是這個平臺的好方法嗎?

EJB不會以這種方式工作,他們將需要EJB容器,如Glassfish或Websphere Application Server。但是,如果您使用Spring,那麼您不需要EJB(而是使用Spring Beans)。如果你使用Spring,那麼你大多有一個Spring Servlet,並且所有的網頁材料都是由Spring MVC框架處理的 - 這是來自classis Servelt編程的潛水員(沒有框架)

一種方法來實時更改某些代碼正在使用腳本語言。因此,您可以使用例如Rino在JVM中運行Java腳本代碼。

但實際上,當我需要做你的工作時,我會嘗試實現一些服務器和客戶端的框架,這使得用java編寫遊戲變得很容易。所以你的學生可以使用普通的IDE,也可以使用maven來部署完整的應用程序。

+0

在這種情況下,學生不需要更改服務器或客戶端代碼 - 學生是使用客戶端的學生(他們是實驗中的主體)。我想我想知道什麼是最好的方法是以人類可讀的方式更改服務器的邏輯。我會澄清我的問題,專注於這個問題。 – 2012-02-22 15:33:49