2009-01-13 12 views
2

我正在尋找關於我正在構建的業務應用程序的一些快速思考。我想分別到三個分離各層介紹域邏輯,和數據使用PHP的Python,和的PostgreSQL的。我想聽到的,可能是從誰已經失去了這條路其他人,如果有問題,通過這種方法,如果我指定了錯誤的工具等是適用於業務應用程序的PHP,Python,PostgreSQL設計嗎?

  • 我看PHP,因爲它被廣泛使用,相當成熟,我可以在PHP界面設計中找到很多有技能的人。

  • 我看的Python因爲可讀的代碼的好處,因爲我聽說可以找到更多Python程序員也有主題的技能(在這種情況下,金融),它是一個開放源碼語言。另外,編碼似乎更容易。

  • 我正在查看PostgreSQL用於事務級別的功能。 MySQL也是一個選項,但我不需要辯論這方面的內容。

這不是一個web應用程序,雖然我想利用瀏覽器的用戶界面。這是更多的企業應用程序,但對於中等數量的用戶(可能5-10)和適度數量的日常交易的小企業而言。

重要的是,我們能夠在未來將數據庫或域邏輯或接口與其他層分開進行升級。

我不是在尋找購買與構建辯論,因爲這是一個不同的討論。

感謝您的任何洞察力

回答

11

Django

Python代碼。一種允許與PHP具有相同功能的模板語言 - 稍微不同的語法。

模型與視圖函數(「業務規則」)脫節並且與演示文稿脫節。這是在Django中實施的。

其中一個常見問題是「爲什麼我不能在Django模板中做一些瘋狂的類似於PHP的事情?」答案是演示文稿沒有處理。在Django視圖中執行處理功能。在模板中將結果呈現爲HTML。

此外,Django有一個ORM層,可以將您與小數SQL考慮因素分離。 MySQL或PostgreSQL在Django中或多或少是相同的。


編輯

「成熟」 意味着很多東西。你特別提到熟練的人是成熟的標誌。

Django是純Python。如果你能找到Python人員,他們可以在幾天內學習Django。他們只需要做教程。

  • Django支持的站點通常是Apache +一些粘貼+ Django。膠水可以是mod_wsgi或mod_python或mod_fastcgi。您必須小心管理此配置,因爲有幾個移動部件。然而,這與你使用PHP的Apache配置問題是相同的 - 這裏沒有什麼新東西。

  • Django站點有一個或多個Django服務器實例,每個實例都有一個設置文件,一個URL映射和任意數量的應用程序。純粹的Python在這一點上。

  • Django應用程序具有URL映射,模型和視圖。所有純Python。單元使用Django擴展來測試Python自己的內部單元測試框架。

  • 該模型使用ORM層。這也許可能是Django中最令人困惑的事情。人們有時會設計非常奇怪的模型,因爲他們認爲要麼太高級超級泛型,要麼他們在SQL中考慮太多。 Django是一個基於面向對象的中間地帶,有一些SQL考慮因素。得到這個,你是不可阻擋的。

  • Django應用程序可能有模板,這些模板使用它們自己的模板語言。這將是關於唯一非Python感興趣的非Python事物。你可能想要添加自定義標籤 - 純Python。

  • 您可能擁有JavaScript(對於PHP和其他所有Web應用程序框架也是如此)。這裏沒有新東西。

  • 由於Django的管理應用程序自動處理基本的CRUD處理,所以您不必編寫它。您可以自由撰寫所有您想要的交易內容。但你不必這樣做。這導致你一個非常非常強大的混合。

    • 您編寫了一些複雜的關鍵事務。純Python,BTW。

    • 您不寫任何啞表維護事務。沒有任何代碼優於Python或PHP。

    • 當你用模板引擎和CSS弄溼你的腳後,你可以定製管理界面,看起來像你想要的任何東西。這是HTML/CSS的東西,沒有Python或PHP。

底線。大部分技能是Python。 ORM是 - 語法上的--Python,但需要一些簡單幹淨的處理。模板是它自己的語言,但比PHP簡單得多。其餘的是SQL,Javascript,HTML,CSS,Apache和不是。


編輯

Django的成熟度

Django的博客延伸到'05,這意味着他們在'08年9月終於發佈1.0之前有多年的豐富經驗。顯然在'03開始了發展。

+0

感謝您的回答。我最關心的是Django框架的相對不成熟。我需要考慮能否找到我(或我的公司)可以聘請的將來進行更新的大量開發人員。在這方面你對Django有什麼想法? – wrburgess 2009-01-13 17:22:50

+0

偉大的編輯!感謝細節。 – wrburgess 2009-01-13 17:45:48

0

我個人同意您的文章中的第二和第三點。談到PHP,在我看來,你也可以使用Python進行演示,有很多基於Python的解決方案(Zope,Plone ......)。

0

只需跳過PHP並使用Python(使用Django,就像我在輸入時已經注意到的那樣)。正如你所提到的,Django已經將這些圖層分開了。

我從來沒有使用過PgSQL,但我認爲這主要是一個問題,不管你喜歡MySQL。它用來支持比MySQL更多的企業功能,但我不確定MySQL 5.0和5.1是否仍然如此。無論如何,MySQL支持事務處理(但是,您必須使用InnoDB表引擎)。

0

只是爲了解決MySQL與PgSQL的問題 - 它應該沒關係。他們不僅能勝任這項工作,而且任何合理的框架都應該使你與差異相對分離。我認爲這取決於你已經使用的東西,人們最有經驗的東西,並且如果你認爲你會從中受益,那麼其中一個或者另一個有一個功能。

如果你沒有任何偏好,你可能想單純使用MySQL,因爲它更適合web工作。這意味着更多的例子,更容易找到幫助,等等。我實際上更喜歡PgSQL的理念,但這不是一個足以讓人反感的理由。

1

我打算假設「商業應用程序」是指託管在Intranet環境中的Web應用程序,而不是互聯網上的某種SaaS應用程序。

在構建應用程序的過程中,您需要考慮僱主/客戶的現有基礎架構和基礎架構支持人員。另外,如果公司足夠大以擁有諸如「認可的軟件/硬件列表」之類的東西,則應該瞭解這些內容。請記住,列表中的某些元素可能會被徹底推遲。不要讓過去的錯誤決定了你的應用程序的體系結構,但是在他們合理合理的情況下,我會選擇我的戰鬥並堅持你的企業標準。當你選擇一個在Unix/Linux上效果最好的開發堆棧時,這可能是一個真正的痛苦,然後有人試圖強制到Windows服務器上,這個服務器是由一個從未觸摸過任何東西但除了ASP.NET應用程序之外的人所欣賞的。

除非有一個特定的PHP模塊,你打算使用,沒有Python的等價物,我會放棄PHP和使用Django。如果有一個令人信服的理由使用PHP,那麼我會放棄Python。我很難想象你想同時使用兩種方案。

至於PG與MySQL,可以使用。看看你的客戶已經部署了什麼,如果他們有一堆,另外一些,選擇它。如果他們有現有的Oracle基礎架構,則應考慮使用它。如果他們是一個SQL Server商店...重新考慮你的堆棧,並記得選擇你的戰鬥。

1

我只能重複其他人在這裏已經說過的話:如果你選擇Python作爲領域層,你將不會獲得任何東西(恰恰相反)使用PHP作爲表示層。其他人已經建議Django,這可能是一個不錯的選擇,但是並不缺少好的Python Web框架。

0

只是拋出它...有PHP框架利用MVC。

Codeigniter做簡單但功能強大的事情。您完全可以將模板層與邏輯層分開。

相關問題