在生产中使用第三方库/组件
在生产项目中使用第三方库/组件时,我们是否仅严格使用所述库的发行版?
我们何时考虑使用库的预发行版或者Beta版(在某些情况下,处于生产环境中的dev?)?
如果遇到库的错误或者缺点,并且已经承诺要使用它,是否要对库应用补丁或者在代码中创建解决方法?
解决方案
回答
- 是的。除非存在我们在Beta版本中真正需要的功能。
- 如果不确定要在生产环境中使用Beta版本,则在开发人员中使用Beta版本毫无意义。这似乎是一种浪费的运动
- 我将使用补丁。为什么要为已付款的商品编写代码?
回答
我曾在商业项目中使用过Beta库,但大多数情况下是在开发过程中使用的,而且在我完成产品之前,供应商可能会发布最终版本。
例如,我使用Visual Studio 2005 Beta 2开发了一个小型桌面应用程序,因为我知道RTM版本将在应用程序最终发行之前可用。另外,在另一个项目的开发过程中,我还使用了Beta版本的FirebirdSQL ADO.NET驱动程序。
对于错误,我会尽可能地重现完整的错误报告,但大多数情况下,我们必须找到一种变通方法以尽快发布应用程序。
回答
There's no point using a beta version in dev if you aren't certain you'll use it in production. That just seems like a wasted exercise
好一点,我也在考虑对开发中的预发行版本进行评估的方案,但我认为这会污染开发-> test / qa->产品路径。
I'll use the patch. Why write code for something you've paid for?
如果它不是商业图书馆,而是开放源码的图书馆怎么办?如果要应用的补丁不是来自发布实体(例如我们自己的补丁),该怎么办?
回答
我用:
- 基础设施(.NET WinForms控件)
- LeadTools(视频捕获)
- Xtreme ToolkitPro(MFC控件)
- National Instruments Measurement Studio(计算库,绘图和DAQ)
我发现了每一个中的重大错误,因此我尝试尽可能地限制它们的使用。 Infragisitcs的功能相当不错,尽管非常有限,National Instruments仍然是最好的。我会不惜一切代价避免使用LeadTools。
回答
我非常喜欢在别人的版本无法在合理的时间内编写代码或者需要我成为从长远来看无关紧要的专家的情况下不编写代码。
我在生产环境中使用了几个开源组件和库,例如Quartz.NET,Log4Net,nLog,SharpFTPLibrary(已大量修改)等等。当我第一次发布使用Quartz.NET的应用程序进入生产阶段时,它就处于beta版本。这是一个非常稳定的测试版,并且我有源代码,因此我可以调试一个问题,并且有一些问题。当我遇到错误或者错误时,我将对其进行修复并将其发布到错误跟踪器或者作者。如果可以使用Beta产品调试任何问题,或者有大量的开发人员来解决任何问题,那么使用Beta产品会让我感到很自在。