2012-09-28 112 views
4

我是magento的初學者,並且正在使用magento創建網站。我注意到,magento擁有大量的apis,這些apis公開了創建電子商務網站所需的所有功能。所以,我想用magento的apis來獲取數據,但是分開開發UI,而不依賴於magento。我發現了許多通過magento主題開發網站的參考資料,但不是那些在單獨的MVC中開發UI並僅將magento用作服務層的那些參考資料。我的方法中是否有任何問題/問題?使用magento apis電子商務網站

編輯:我已經在apis中獲得了很多關於數據庫性能問題的明確信息,以及外部緩存如何緩解這個問題,但我仍然不明白magento作爲服務層的不可用的用途(即通過給網站加油使用magento的apis),他們有任何其他問題嗎?

+0

以及主要問題是你將無法找到任何引用該主題:) – srgb

+0

我試了很多,但它似乎並不是一個首選的方法,因此周圍缺乏文章。 – 142857

回答

2

下面是我們如何克服在Magento的API緩慢:

  1. 創建於J2EE Web服務提供者,Spring MVC中充當的Magento和最終用戶之間的代理。
  2. J2EE Web服務提供程序公開了幾乎所有Magento具有的API,但同時還支持帶REST的JSON和SOAP RPC & RPC。
  3. J2EE Web服務提供者使用基於文檔的數據庫(MongoDB)在MongoDB中存儲產品目錄的快照。
  4. J2EE Web服務提供程序使用本機MongoDB緩存來快速提供數據,而無需運行任何昂貴的SQL查詢。
  5. 爲了避免髒緩存問題,我們在Magento Admin中創建了一個掛鉤,以便在Magento中的數據更改時將數據推送到MongoDB中。

這可能聽起來有點過度,但我們已經能夠在沒有任何緩慢的情況下實現相當高的吞吐量。

+0

謝謝,有趣的聽到你使用了mongodb。您是否面對JMC提及的任何「會話到期」問題? – 142857

+1

不,我們還沒有遇到來自Magento的任何「會話過期」錯誤,即使在來自多個Jmeter節點的模擬重負載下也是如此。 – anubhava

+0

我還發現購物車apis,比如添加到購物車相比,可以在自制平臺上做得很慢。我注意到你提到你使用了mongodb來獲得產品屬性,但是這些其他apis /函數呢? – 142857

1

從技術上講,只有通過API才能運行站點。

您可能會遇到的問題是一個實際問題,而不是花時間學習所有API調用,您可以學習如何在Magento中實現您當前的用戶界面。

這種方法的好處是您還可以更好地瞭解Magento如何在內部工作,從而使您能夠利用其功能滿足您獨特的業務需求。

另一個問題是,當使用API​​的時候,你對於處理/計算事物的方式的控制較少,與在Magento中工作時相比,對細節有很多控制權。

2

Magento API速度很慢,您會遇到嚴重的性能問題,試圖運行一個網站。

由於EAV模型的複雜性,您可能會發現很難通過API單獨管理產品。

您對使用Magento自己的前端有任何特別的擔憂嗎?起初令人望而生畏,但一旦理解了佈局系統,它實際上是非常強大和可定製的。

+0

謝謝,是什麼讓magento apis比使用magento的前端更慢?我的關注是我從少數幾個人那裏獲得的反饋,這些人曾經從事數字控制能力以精確控制用戶界面元素。作爲一個完全的外人,我喜歡完全控制開發UI的想法,並使用一組API來支持目錄,搜索,推車,促銷,結賬等功能。這似乎是一種更自然的開發方式。 – 142857

+1

這確實需要一點技巧,但總體而言,可以設計任何您想要的磁電機用戶界面。 – pzirkind

+0

如果您使用的是API,那麼您有使用Web請求而不是直接模型訪問的開銷。即使直接使用API​​模型,我發現它們比直接使用核心模塊要慢。我認爲他們做了大量的核心模型沒有完成的驗證。 –

1

當通過SOAP和XMLRPC訪問Magento的API時,我經常會看到「session expiration」問題。我所有的通話都需要異常處理,以避免執行停止。我想象一下,在API的基礎上構建所有東西時,就會造成一場噩夢。

在開始編碼之前,您將獲得的最佳答案是Load Test API。廣泛記錄測試並查找錯誤。如果您在正常的基礎上看到應該回答您的問題的錯誤。即使您發現文檔說可以做您正在嘗試的內容,您仍然需要調整API以在運行商店所需的負載下正常工作。

很高興知道您在開發過程中遇到什麼困難。

+0

你能請你多解釋一下。我嘗試了一下apis,並沒有遇到任何這樣的問題。 – 142857

+1

有時,當兩個同時調用API時,即使調用來自不同的API web用戶,magento也會將「會話到期」返回給兩個調用之一。會話過期對於過期的腳本來說就像是一個致命的錯誤,並且如果沒有適當的處理,它會暫停執行。它可能只是我的配置,但我的硬件和php配置足以應付負載。如果您嘗試每分鐘調用數百到數千次API來運行整個商店時遇到此問題,請不要感到驚訝。 – JMC