[Frameworks] 什麼是軟件框架?


Answers

從技術上講,你不需要一個框架。 如果你正在製作一個非常簡單的網站(想想1992年的網絡),那麼你可以用硬編碼的HTML和一些CSS來完成。

如果你想製作一個現代的webapp,你實際上並不需要為此使用框架。

您可以選擇每次都寫自己需要的所有邏輯。 您可以編寫自己的數據持久性/存儲層,或者 - 如果您太忙 - 只需為每個數據庫訪問編寫自定義SQL。 您可以編寫自己的身份驗證和會話處理圖層。 和你自己的模板渲染邏輯。 還有你自己的異常處理邏輯。 和你自己的安全功能。 和你自己的單元測試框架,以確保一切正常。 而你自己... [持續很長時間]

再次,如果你確實使用了框架 ,那麼你可以從好幾十個其他開發者那裡得到好的,通常是同行評審和非常好的測試工作中受益,他們可能比你更好。 您可以快速構建自己想要的內容,而無需花費時間構建或擔心上面列出的基礎架構項目。

您可以在更短的時間內完成更多任務,並且知道您正在使用或擴展的框架代碼很可能比您自己做的更好。

這個成本呢? 投入一些時間學習框架。 但是 - 幾乎所有的Web開發人員都會證明 - 使用任何你選擇的框架來學習獲得巨大(真正的,巨大的)好處是絕對值得的。

Question

有人能解釋一下我的軟件框架是什麼嗎? 為什麼我們需要一個框架? 框架如何使編程更容易?




框架為特定問題領域提供功能/解決方案。
wiki定義:

計算機編程中的軟件框架是一種抽象,其中提供通用功能的通用代碼可以被選擇性地覆蓋或由提供特定功能的用戶代碼專門化。 框架是軟件庫的一個特例,它們是可重複使用的抽象代碼,包含在定義良好的應用程序編程接口(API)中,但它們包含一些將它們與常規庫分開的關鍵區別特徵。




一般來說,一個框架工作是真實的或概念性的結構,旨在作為支持或指導建設一些東西,將結構擴展成有用的東西......




一個簡單的解釋是:框架是一個腳手架,你可以建立應用程序。

框架通常提供一些基礎功能,您可以使用和擴展它們來製作更複雜的應用程序,還有各種各樣的框架。 微軟的MVC框架就是一個很好的例子。 它提供了使用MVC模式離開地面建築網站所需的一切,它處理Web請求,路由等。 你所要做的就是實現“控制器”並提供“視圖”,它是由MVC框架定義的兩個構造。 MVC框架然後處理調用您的控制器並呈現您的視圖。

也許不是最好的措辭,但我希望它有幫助




已經有很多好的答案,但讓我看看我能否給你另一個觀點。

通過相當簡單的事情,您可以將框架視為除實際功能之外完整的應用程序。 你插入功能和PRESTO! 你有一個應用程序。

考慮一下,比如說一個GUI框架。 該框架包含您製作應用程序所需的一切。 事實上,通常可以通過幾乎不做任何事情的源代碼來創建最小程度的應用程序 - 但它確實為您提供了窗口管理,子窗口管理,菜單,按鈕欄等。這就是框架的一部分。 通過添加您的應用程序功能並將其“插入”到框架中的正確位置,您可以將這個空白的應用程序變成一個真正的完整應用程序,該應用程序只是進行窗口管理等操作。

對於Web應用程序,服務器端應用程序等,有類似的框架類型。在每種情況下,當您提供實際的問題域功能時,框架都會提供大量冗長,重複的代碼(希望)。 (這是理想的,實際上,框架的成功當然是高度可變的。)

我再次強調,這是一個框架的簡化視圖。 雖然大多數框架都有內置的可怕概念,但我並沒有使用像“控制反轉”之類的可怕術語。 既然你是一個初學者,我想我會把你的行話放在一邊,然後用簡單明了的方式去做。




框架有一些你可能需要的功能。 你可能需要某種具有內置排序機制的數組。 或者,您可能需要一個窗口來放置一些控件,這些都可以在框架中找到。 這是一種圍繞自己的工作跨越框架的工作。

編輯:好吧,我正準備挖掘你們想要告訴我的東西;)你可能還沒有註意到“越過FRAME周圍的作品”之間的信息,在此之前,它越來越深入。 我試圖發表一個聲明,希望你能夠很有成就感:
我在這裡找到了關於“圖書館和框架之間的區別”這個問題的一個很好的解釋
http://ifacethoughts.net/2007/06/04/difference-between-a-library-and-a-framework/




Links