2008-09-07 65 views
5

我們有幾個項目涉及構建一個由50%定製功能組成的應用程序,但隨後引入了一個wiki,一個論壇和其他組件那些已經被髮明出來的「輪子」,我們不想從頭開始重新編寫。將第三方模塊集成到您的應用程序中的最佳做法

這些第三方應用程序通常擁有自己的數據庫,主題和身份驗證系統。根據我的經驗,讓事情像單點登錄或共同主題一樣工作,或者在多個子應用程序中跨實體進行標記/搜索都是非常具有挑戰性的問題。這種集成項目的一些最佳實踐是什麼?

到目前爲止,我們的方法一直是仔細挑選組件,選擇具有明確定義的API的組件,最好通過HTTP(如REST或SOAP),儘管這並不總是可行的(我們還沒有「 t找到了一個體面的論壇,這種方式)。有人建議人們可以給任何試圖這樣做的人,因爲我懷疑我們當中的許多人這些日子越來越頻繁?

+0

具體而言,我正在尋找一些可以嘗試,避免或注意的事情。 – 2008-09-07 17:48:11

回答

1

確保您的應用程序和第三方應用程序或庫之間的接口是這樣的,以便您可以用其他方法輕鬆替換它以防萬一。在某些情況下,第三方軟件可能只是一個標準API的實現(Java在JDBC,JMS,JNDI等方面做了很多工作)。在其他情況下,這意味着將第三方庫封裝在您想要的某個API中。

當然有時候會將這個想法拋出窗外,並將事情與第三方軟件緊密集成。只要確定你真的想將你的應用程序綁定到該第三方。一旦你走下這條路,真的很難回去改變主意。

0

Donald Knuth表示,可重用的代碼甚至可以更好地修改代碼,所以如果沒有API,您應該尋找一個寫得很好的開源應用程序,因此可以自定義。對於數據庫和登錄系統以及其他編程部分(我不明白例如主題會如何受益),您還可以嘗試,根據情況包裝的內容,以便模塊相信它是獨立的,但實際上會談到你的代碼。

1

如果您打算使用開源庫,請選擇具有良好許可證的庫。我已經找到了困難的方法(在嘗試OEM應用程序時),許多公司迴避像LGPL這樣的許可證。我不會詳細討論爲什麼,但他們更喜歡Apache,BSD或MIT風格的許可證。

選擇已經存在一段時間的工具。檢查社區並確保它是活動的。看看其他人正在使用和使用這些工具。

選擇一起工作的技術。我已經整合了一個使用ORM和Web服務的應用程序。 Spring框架+針對ORM的Apache CXF + JPA創建了一個不錯的技術堆棧。我使用的所有工具都很容易在Spring中綁定在一起,因此可以輕鬆地將它們結合使用。你最不希望做的事情是選擇工具,你必須編寫一堆代碼才能將它們一起使用。

挑選基於標準的技術。這樣,如果庫或工具死亡,您可以輕鬆切換到使用相同標準的另一個。

0

我的方法是使用第三方代碼來實現某些核心功能。例如,我爲我的數據訪問使用Subsonic,用於UI的Devexpress組件和用於數據輸入和驗證的Peter Blum數據輸入套件。 Subsonic是開源的,Devexpress Peter Blum的控件有額外的源代碼可用。如果我試圖自己寫這些控件,那麼我就不可能獲得這些控件的功能。

這種方法允許我專注於自己的應用程序的自定義功能,而不必擔心如何訪問數據庫,或者如何製作看起來漂亮的可編輯的結果列表。當然,我沒有完整的配置和工作論壇,但我知道我將爲我的應用使用SQL數據庫,並且我不需要嘗試獲取不同的數據存儲組件以便一起工作。我沒有wiki,但我知道如何使用devexpress ui組件,格式化和驗證數據輸入與Peter Blum的控件輕而易舉。換句話說,學習工具(當然,仔細選擇它們)可以加速所有項目的開發,然後您可以專注於必須定製的部分應用程序。

只要源代碼可用,我並不太在意它是否是開源代碼。如果它是開源的,我會捐贈給項目。如果這是一個商業部分,我會支付一個合理的價格。無論如何,這些工具有助於使編程變得有趣,並且結果具有數據完整性並且非常好看。如果我開發一個wiki或論壇,我知道我可以讓他們無縫地一起工作。最後,我提到的所有工具都已經存在了很長時間,並且都是由傑出的開發人員撰寫的,聲譽卓着。

相關問題