我应该在C#或Delphi中启动我的新共享软件项目吗?

时间:2009-11-26 04:46:50

标签: c# delphi security

我希望我的代码尽可能安全。

10 个答案:

答案 0 :(得分:15)

我认为源代码的安全性不是在C#和Delphi之间进行选择的好理由。如果您创建一个.Net可执行文件,您可以使用.Net Reactor之类的工具来保护它。另外,根据定义,win32可执行文件非常难以反汇编(获取原始源代码),除非您在其中包含调试信息。

您应该比较其他功能,在我看来,您应该使用您感觉更舒适并且您拥有更多技能的语言

在我的情况下,它总是选择delphi,因为它具有优秀且快速的编译器和数千个第三方组件,并且除了生成没有依赖项的可执行文件之外。 ;)

您可以查看此问题

What language or RAD IDE do you recommend for building shareware?

您也可以查看使用Delphi构建的应用程序列表

Good Quality Applications Built With Delphi

其中包括SkypeTOADFL Studio

答案 1 :(得分:8)

这取决于您的需求。但是在没有其他信息的情况下:如果它是一个共享软件程序,我会选择 Delphi ,主要是因为它编译成相对较小和快速的本机代码可执行文件。

您是否应该关注现代(Delphi 2010)应用程序的安全性低于旧版本,因为新的增强型RTTI可以通过编译器开关关闭。

答案 2 :(得分:5)

Delphi是您共享软件的最佳选择:您可以在单个exe文件中分发您的应用程序,您可以嵌入您想要的任何资源:html页面,图像,甚至您的dbserver(查找firebird嵌入式)。 很多共享软件是用delphi开发的:EMS产品(MySQL,IB,Oracle的EMS SQL管理器......),Skype,7zip ...

与DELPHI玩得开心 最诚挚的问候

答案 3 :(得分:2)

删除这一点是因为每个人都只是因为他们的意见与我的不同而向我的回答。这是他的问题的答案,但不受欢迎,所以人们决定开始取消我的观点。

这不是向下箭头的目的,用于从不同意你的人那里删除分数。您的幼稚和无知的行为将减少本网站的质量。

答案 4 :(得分:2)

在Delphi中,您可以使用指针(例如,对于API调用,有时它们是必需的) - 因此您比使用C#更接近C。 Java和C#没有指针是有原因的:安全性。

  

“大多数研究都认为指针是   其中一个主要特征   使程序员能够注入错误   他们的代码。“

http://java.sun.com/docs/white/langenv/Simple.doc2.html

  

在C#编程语言中,   只支持指针   某些条件:任何代码块   包括指针必须标有   不安全的关键字。

http://en.wikipedia.org/wiki/Pointer_%28computing%29#C.23

  

“指针就像跳跃,领先   来自数据的一部分   结构到另一个。其   引入高级语言   已经向后退了一步   我们可能永远无法恢复。“

- C.A.R.Hoare "Hints on Programming Language Design", 1973, Prentice-Hall collection of essays and papers by Tony Hoare

答案 5 :(得分:1)

使用C#只是因为它有更多的主流支持。此外,它肯定会得到微软的支持。这会不时地为语言添加增量功能。

此外,微软C#的主要架构师是Anders Heilsberg,他是Turland Pascal和Borland的Delphi的共同创造者,之后他被微软盗版。

答案 6 :(得分:1)

只要您知道要继续工作直到获得结果,您创建“安全”应用程序的编程语言并不重要。 例如,如果您使用python或任何其他脚本语言构建应用程序,您仍然可以获得良好的安全性。 正如我的好朋友告诉我几次“这就是你!编程语言只是你思想的延伸!”

答案 7 :(得分:1)

两者都很好。两者都很安全。很多人都在和他们两个人一起工作。

使用.NET Framework可以更好地支持重型Web服务,分布式应用程序和组件化应用程序等“企业”功能。类似地,没有直接等同于WPF可能的基于矢量的形式。

但如果您的应用程序永远不需要它们 - 那么请选择您认为最舒适的应用程序。

答案 8 :(得分:0)

与此处的大多数帖子一样,我同意安全性是您编写程序的方式。不是你使用的语言。

我使用几种不同的语言,具体取决于项目。

除了问自己哪个更适合自己之外,如果你想支持多个平台,你应该问问自己。

我的公司进行了大量的跨平台开发,因此我们不会在这些项目上使用C#。

有一个单项目旨在允许.net代码在mac和Linux上运行,但在两者之间,Delphi,pascal更具可移植性。

(在我们的跨平台项目中,我们使用C或C ++)

答案 9 :(得分:0)

使用您最熟悉的语言。这样你就可以避免使用不熟悉的语言陷入陷阱和陷阱。