2008-10-20 44 views

回答

3

這取決於。是否有適合您需求的第三方庫,最重要的是您使用的語言和/或API。然後去做。

如果你有理由做自己的版本,確保它不只是「不在這裏發明」。另外,如果您沒有深入瞭解市場上五大主流產品,無論您需要什麼,都沒有完全做好您的工作。很有可能你會發現你正在尋找的東西,即使你不能使用它,你仍然可以從圖書館的描述中學到一些東西。至少你會知道你需要哪些功能,哪些不需要。如果您還將源代碼提供給其中一個庫,那麼這應該是您的優先選擇,而不是使用源代碼但可能具有更多功能的競爭庫。

3

我完全同意加密只能由專家儘可能完成。它也應該是開源的,並且經歷了很多同行評審。

+0

不幸的是,美國政府已經建立了一個不鼓勵開源加密的進程。 FIPS 140下的加密模塊的認證非常昂貴,並不適用於分散的贊助商。儘管NSA在開源方面做了一些不錯的事情。 – erickson 2008-10-20 23:06:32

2

,我一直使用第三方控件是圖表的區域。必須繪製一批數據並且第三方控制是成熟和可靠的是一個相當普遍的問題。

4

我的經驗法則是使用(或至少考慮)第三方的任何東西這是你業務的核心目的之外。

加密一直都是這樣的典型例子。但它也延伸到其他領域。

發展過程中的故障排除編寫日誌代碼比編寫用於監控生產系統的日誌代碼完全不同。

這是所有關於選擇哪些領域發展實際增加價值,您的項目。使用第三方的東西消除了該組件不完整/馬車/等的風險。但帶來的風險可能不像您需要的那樣靈活。

另一個例子是開發一個網站的整個網絡論壇,當你可以購買更便宜的解決方案。

15

大多數情況下,加密應該是第三方,除非您是銷售加密系統的業務。

,這是相當多的阿特伍德先生自己的觀點,我的理解是,你的核心業務內容不應該是第三方,所以也許有什麼話要始終是第三方...

2

我猜答案取決於使用情況。如果您正在爲盈利而開發,如果使用組件的成本與開發組件的成本會帶來更多利潤,那麼您可能會購買組件。當您沒有內部專業知識來製作它們時,大型組件尤其如此。

一對夫婦的,我已經使用很好的例子是Infragistics的控制和登打士圖表。雖然我們可以在內部創建這些內容,但與購買幾個許可證相比,時間和失去機會的成本會很高。

當然,有時候我們做這種類型的事情,甚至沒有考慮它作爲一個組件購買。稍微擴大想象空間,可以包括.NET框架,SQL Server,Windows API等。

0

不要忘記,時間是用手寫所有東西的大問題,並不是說你不能這樣做,而是問題來自你的客戶或公司,他們總是希望找到最快的方式來構建他們的系統。但是,如果你有一個非盈利的項目,你可以嘗試自己創建的東西。例如,如果你正在編寫web應用程序,並且你想設置一些ajax功能,那麼你可以使用JQuery或Dojo作爲你的ajax工具包,這將需要一些時間來構建這些東西:)

但是你也必須小心當使用第三方庫時,您必須信任它們,因爲它們可能包含惡意代碼,或者它們寫得很差,並且會導致您頭痛。

0

您自己的加密功能?甚至不考慮它,但我認爲你可能意味着某種現有功能的包裝。

第三方組件的優勢: 潤通的功能
全面測試(希望如此)
犯規需要時間來發展這樣可以便宜(但..)

缺點
是不是真的足夠靈活的那下一個尷尬的客戶要求
分銷可能很昂貴
將你帶入第三方公司,當他們發佈新的發行版來修復錯誤時,你會很痛苦
你不學t自己做任務

無論你使用的是第三方組件,都將取決於你的應用和需求。像圖表這樣的東西會花費很長時間才能正確使用,所以這將是一個很好的第三方組件。

1

這個問題沒有明確的答案,因爲就像軟件開發中的其他任何東西一樣,它取決於情況。我會說,如果以下3項是真的,你不應該考慮自己做...

  1. 如果它不是您的業務或專業知識的核心。
  2. 如果有人爲你寫了它,它正在廣泛的社區中使用。
  3. 如果它滿足您的需求和要求,或者可以很容易地擴展以滿足您的要求。
4

「哪些功能應始終是第三方?」

無。在討論基本的工程決策時總會有一個例外或特殊情況來否定對「總是」的過分使用。

此外,決定去第三方應該幾乎從來不會根據給定的「功能。「有沒有這樣的事情,你永遠不需要別的地方去的那種類型的功能,如此完美的圖書館。

去第三方是應該的基礎上持續第三

  • 成本做出決策第三方與在內部做它的成本
  • 開發時間要求在最後期限內(即它可能是更便宜的內部,但你的開發時間表可能不允許它)
  • 易於集成,調試,維護,升級路徑 - 也許你可以開發一些能夠「做好工作,但幾乎沒有」的東西使用VS沒有更多的錢的東西,會照顧你幾年來測試和驗證的
  • 易於/成本 - 安全包是出了名的難以測試以及

不過。有些事情確實很難相信進入內部會更好。例如,你可以在編寫OpenGL和DirectX的競爭對手,並且在某些應用程序(科學計算等)中,有很好的理由考慮這樣的路徑。但總的來說,你不會夢見它。即使它是「免費的」,它仍然是第三方的依賴,並且由於隻影響你如何使用這些圖形語言的錯誤,最終可能會導致滑行。

換句話說,一些難以置信的複雜或難以證明/測試的東西存在,應該幾乎總是去第三方。安全是另一個。不要編寫自己的散列算法,除非你的認證是瘋狂的,並且至少有3個出色的商業理由。

但是「什麼功能應該始終是第三方?」沒有。總是有一個例外。

- 亞當

0

凡是是你的核心業務之外的是第三方解決方案一個很好的候選人。您希望花費您的開發時間創建獨特(ish)的核心功能,並且無法以具有成本效益的方式購買和使用。

例如,讓我們看看web gridview控件。你能自己開發和擴展一個gridview嗎?當然你可以,但開發,編碼和測試你的網格視圖需要花費大量的時間和資源,你可以把它轉換成美元。現在,您需要重新發生支持,維護和錯誤修復的成本。

現在讓我們使用我記得在一些mag中讀到的任意數量關於美國開發者每小時賺40美元的好處。整個網絡控制套件可用於每個開發者許可約800美元。如果您的開發人員花費的時間總計超過25小時,您可以購買整套套件,並花費5個小時進行集成和測試。

現在希望我沒有太困惑,但一般的要點是,如果你可以從自己購買它,它可能會節省時間和金錢,而是專注於你不能擺脫自我通常是你的賺錢者。

2

如果你可以購買它比你可以建立它便宜,購買功能滿足您的業務需求,然後購買它。

0

我想說寫鍋爐板代碼,或幾乎每次都複製和粘貼的冗餘代碼應該通過一個庫來完成。對我來說,驗證代碼幾乎總是讓我犯了愚蠢的錯誤,因爲它很無聊。 Spring.NET對此非常驚人。我很高興我的老闆鼓勵我去嘗試。

1

這個問題是問題的反面:你應該創建什麼軟件?

這顯然很愚蠢。

對於這兩者都沒有答案,這取決於您的業務需求。你需要爲整個互聯網建立一個更好的搜索引擎嗎?幾乎肯定不是。但是如果你是90年代後期的Google,那你就是。第三對第一方只是你在哪個辦公室工作的問題,每個第三方都是自己的第一方。

  • 如果你所需要的只是足夠好的話:使用現成的東西。

要麼你會創造出更低質量的東西,要麼就會浪費金錢和精力去做一些無關緊要的事情,或者兩者兼而有之。

  • 如果它是您業務的基礎:自己構建。

如果你可以更好地構建一些東西,並且你可以用這個更好的東西來建立一個企業,那麼做!

0

似乎你有所有你需要的答案,但我只想把我的意見和其他人一起扔在這裏。客戶會向您支付專門爲他們工作的應用程序,這通常是他們爲什麼要找你的原因;他們需要的東西在市場上的任何其他產品中都找不到。因此,您的重點應放在開發他們所需的特定部分。

毫無疑問,您的應用程序也需要做其他事情。也許它需要連接到數據庫,或者加密某些行。這是第三方庫發揮作用的地方。你不想浪費時間爲數據庫寫一個新的驅動程序,或者一個新的加密方案可能有漏洞,你沒有時間去測試。你想使用那些已經存在的,並且經過了廣泛的測試和優化。

請記住,您完成的速度越快,他們將不得不付費。這讓他們開心,想回到你身邊。這也意味着你做更多的事情,因爲即使他們支付得少,你也可以參與更多的項目,這意味着更多的錢。

總之,您應該依賴雜項模塊中的第三方庫。

相關問題