2013-04-07 179 views
1

我必須提供對我的語義的訪問。目前,它是一個RDBMS,但後來我可能會使用額外的非RDBMS數據源(圖形,hadoop等)。如何屏蔽數據庫?

我的語義消費者位於公司域/ Intranet內,但在遠程服務器上運行。而且,由於我們處於設計階段,因此不清楚它們將用於實現其業務邏輯(Java/C或其他)的技術。 我認爲向我們的SW的外部模塊提供直接訪問通過JDBC/ODBC的數據模型(因爲我不想僅僅致力於RDBMS)是一個好主意。

該計劃是創建一個API來訪問我的語義。 API基本上是CRUD。目前的候選人是使用Spring的REST API。

我擔心REST訪問可能會很慢。該技術最好是基於Java的。但是,也歡迎C-base和其他人。

我想知道:我應該考慮什麼替代REST? 除訪問速度外,唯一的要求是它必須易於實施和維護。

我很感激你的建議。

回答

0

對於公司防火牆後面的內部調用,RMI允許使用多種方法創建任意複雜的API,以接受和返回複雜的數據結構。 CORBA也會這樣做。這些技術是JavaSE的一部分。

從較新的技術,Google protocol buffers可能不會對這項任務不好。

+1

anonymous downvoter - 在地獄裏燃燒! – aviad 2013-04-07 18:08:00

+0

我會檢查出protobuf,謝謝你的提示! – aviad 2013-04-07 18:16:15

0

如果您想要將您的域模型與數據模型屏蔽,可以在其間插入一層抽象層,即接口。你爲什麼認爲你需要遠程邊界?通過REST提供可遠程訪問的API完全正交於消除域和數據模型之間耦合的擔憂。

無論如何,您的API的使用者將永遠被屏蔽於您的私有域模型。如果你正在構建一個java API,你將公開接口,並且使用一個遠程和正交的REST接口,你將公開HTTP資源。

+0

問題可能並不清楚,但我的語義需要遠程訪問。因此,「......通過REST提供可遠程訪問的API完全與您的擔憂正交......」並不準確。你有任何具體的建議,或者只是一個關於「只是一層抽象......」的一般性陳述,而這個陳述並沒有太多貢獻(IMO)? – aviad 2013-04-07 18:14:57

+0

如果你想要一個特定的答案,我會建議更清楚地形成更詳細的問題。 API的用途是什麼?誰是消費者?例如,如果API需要迎合不同類型的客戶端,我會選擇REST。如果所有客戶端都是Java,並且我願意鎖定自己並處理客戶端重新綁定二進制文件的痛苦,那麼我可以選擇Java RMI。這些選擇是上下文的,必須認真對待。我給出了一個總的建議,讓你朝正確的方向發展,並讓你考慮這個問題。 – 2013-04-07 18:32:55

+0

我編輯我的問題,強調我的語義需要遠程訪問和API是CRUD的事實。我相信現在你可以在你的回答中更具體。 – aviad 2013-04-07 19:07:49