为新项目提供有关平台/框架/语言/等的建议

时间:2009-03-17 14:32:48

标签: database version-control programming-languages frameworks

我知道这本身并不是一个编程问题,但我希望从SO社区获得关于我希望开始的新项目的尽可能多的意见。该项目是从头开始的,因此每个决策都是编程语言,数据库,框架,平台和什么都没有在空中。我希望得到你对此事的看法,你认为每种选择的优点和缺点。

数据库: 目前我可以选择使用MSSQL或MySQL。虽然我倾向于使用MySQL,因为它是免费的,并且很可能具有我需要的所有功能。但是,有可能存在大量分层数据,并且MSSQL中的新分层数据类型非常吸引人。它真的简化了那么多事情吗?此外,MSSQL支持许多更高级的SQL函数,从长远来看,这些函数可能有用,也可能没用。在开发过程中,我可以访问Server 2008,随着开发团队的发展和生产需要多个许可证,成本是否合理?

编程语言: 该项目将有一个基于Web的前端UI和一个基于服务器的组件,将做一些繁重的工作。

对于基于Web的UI,我想到的可能是使用PHP或IIS在ASP中使用ASP.Net在C#中进行。我想使用一个好的框架来正确地利用应该构建应用程序的代码和开发的良好设计模式。以及从长远来看做出修改易于实施。我还希望GUI看起来不错,并且不喜欢从组件供应商处购买.Net控件的想法。相反,我更喜欢使用优秀的CSS,以及像YUI和javascript这样的开源来使UI更加流畅。

对于基于服务器的组件,我正在考虑使用C#。我没有真正的C ++开发经验,我喜欢好的库,而且速度足够快。然而,虽然基于Web的UI和基于服务器的组件是松散耦合的,但是可能存在UI需要与基于服务器的组件进行通信(调用方法和什么不是)的实例,并且我想选择将与之配合的语言/框架彼此。

欢迎所有有关框架的建议。

版本控制: 我有很好的SVN经验和TFS非常糟糕的经历。我从未与GIT合作过。您认为哪些功能以及一般开发人员熟悉程度更高。我想选择其他开发人员会知道并且没有问题的东西。

如果问题有点多余或我没有提供足够的信息或使用不好的术语,我道歉。我计划在收到反馈时编辑和改进问题。谢谢!

修改 谁:这很可能是一个由大学生或初级开发人员组成的创业公司。我希望该项目能够利用大多数人熟悉或易于掌握的技术。

什么:我需要数小时和数天来解释解决方案。但最终当你将其分解时,它是一个基于Web的UI(认为标准的Web应用程序,只管理数据库数据),可用于知识渊博的客户端。基于服务器的组件将是非常独立的,除了它应该能够与Web应用程序通信。

我可以根据需要提供更多信息,但我希望有机会在您匆忙结束问题之前回答并提供他们的想法。

4 个答案:

答案 0 :(得分:1)

显然这很大程度上取决于具体的要求,但是,即使是那些我可能也无法确定的那些!

我自己一直在从事一个从头开始的项目几个月,并且一般都找到了:

  • 为所有图层选择Microsoft只会更容易(我的主观意见)。例如,我将使用C#作为UI,后端,并使用MSSQL作为数据库。对于非微软供应商来说,没有什么不对,我不是微软的粉丝,我只是很难用不熟悉的工具来提高工作效率。取决于你的经历所在。
  • 数据库:特别是我发现.NET和MSSQL很容易在一起。当我开始这个项目时,我使用的是PostgreSQL(因为它是免费的,功能齐全且具有开源温暖的模糊)。然而,我放弃它而转向MSSQL只是因为用不熟悉的工具以不熟悉的语言完成数据库工作需要花费太长时间。此外,我不确定MSSQL是否已经如此昂贵了,例如对于Web应用程序,我认为MSSQL 2008网络版每个处理器都非常便宜(尽管仅限于SPLA许可)。如果你担心免费实现中的数据库功能,我个人认为PostgreSQL有一个非常完整的功能集,很好地标准化,并且快速增长。
  • 用户界面:我很缺乏经验,但ASP.NET MVC对我来说远不如ASP.NET Web Forms那么痛苦。我也喜欢PHP,但我再次将UI语言与后端语言相匹配,因此建议使用.NET。
  • 框架上,我现在沉浸在DAL中。我喜欢Subsonic用于轻量级数据,NHibernate用于重量级。

我的项目还有很长的路要走,所以也许我现在只能看到短期利弊。但总的来说,我会说:使用你最熟悉的技术,因为你会提高效率,最终结果可能大致相同。如果你想学习新技术,谁不想学习? - 继续,只是期望它需要更长的时间。

答案 1 :(得分:1)

不想回答'因为它如此开放。但有几点:

货币

首先,查看BizSpark。这应该照顾3年的任何金钱方面。对于服务公司来说,这不仅意味着免费的VS Team Suite和Office等,而且还包括免费的Windows,SQL等。如果您的创业公司在3年内无法承担MS Tech的费用,那么它可能 糟糕的事情。这样就可以获得许可。

  • 在类似的说明中,Sun有Startup Essentials。可能在硬件方面很有趣,但我实际上并没有比戴尔/惠普更具竞争力的价格。

软件

这听起来并不像你有足够的要求说“哦,这个稍微不那么受欢迎的软件X对我的域名Y来说是完美的,并且会给我一个非常大的推动力”。事实上,你的项目可能根本不是那样的。从技术上讲,它可能是一个相对简单的应用程序,只是推动数据或其他任何东西。你没有指定。

对于一家小型创业公司来说,个人生产力可能胜过任何其他论点。如果你的员工在X方面表现优秀,那么这就是你最重要的一个论点。

如果你真的没有任何特别的系统,那么你应该保守。坚持使用.NET或Java,因为它们将为您提供最广泛的有用可能性。

就操作系统和数据库这样的东西而言,我有偏见,但我认为微软将为您提供比其他地方更容易利用的平台。例如,设置负载平衡,群集,集中身份验证,管理服务器(更新,事件等)在Windows上比在其他平台上更容易上手,假设您不是任何一个专家。配置SQL Server,即使是高级功能,也是小菜一碟。 (去那些既不知道的人:在MSSQL和MySQL中设置一个数据库镜像 - 这将需要更多的工作?)同样,这完全取决于你没有特定技术的专家。

不要混用 - 无论你做什么,坚持使用平台。如果你使用.NET,MSSQL将更好地与数据提供程序(或Linq-to-SQL之类的东西)一起工作。如果您决定使用PHP,那么在其他人使用它时使用MySQL,您将遇到更少的阻力。如果你不是在技术方面发明东西,不要成为一个边缘案例。

答案 2 :(得分:1)

您应首先选择平台,然后选择最适合该平台的语言(如果有任何选择)。

您应该考虑的一件事是针对特定平台和语言的人工池和人工池成本。如果您还没有想法,人力资源部门通常可以获得成本指标。

例如,在我的城镇,每个软件工程师的.NET平台比开源更昂贵,因为.NET开发人员的费率更高(大约40%)。 C#比VB.NET略高,但也往往带来更多的候选人。

答案 3 :(得分:0)

只是抛出完全不同的东西:weblocks作为一个Web框架怎么样?它使用Hunchentoot作为服务器,可以独立运行,也可以与Apache一起运行。这一切都在Common Lisp中完成。 Weblocks可以使用cl-sql作为后端存储,可以连接到许多不同的RDBM(MySQL,PostgreSQL,Oracle,ODBC,SQLite)。