也许这是一个奇怪而琐碎的问题,但是
C#有没有做不到的事情,而 JavaScript 可以... 并且考虑 jQuery?
除了一个是客户端,另一个是服务器端之外? 或者我现在问了一个很愚蠢的问题吗?
编辑: 更具体地说:我的意思是 web 编程,确实一个更有用的问题是:
> 我可以在客户端做什么,而在服务器端做不了,反之亦然?
> 如果将“服务器/客户端”范围排除在外,还有其他使用两种语言的原因吗?
> 一些开发人员避免使用 JavaScript。为什么?
也许这是一个奇怪而琐碎的问题,但是
C#有没有做不到的事情,而 JavaScript 可以... 并且考虑 jQuery?
除了一个是客户端,另一个是服务器端之外? 或者我现在问了一个很愚蠢的问题吗?
编辑: 更具体地说:我的意思是 web 编程,确实一个更有用的问题是:
> 我可以在客户端做什么,而在服务器端做不了,反之亦然?
> 如果将“服务器/客户端”范围排除在外,还有其他使用两种语言的原因吗?
> 一些开发人员避免使用 JavaScript。为什么?
客户端能做哪些事情是服务器不能做的?反之亦然?
客户端:Javascript 在大多数浏览器中可以不使用插件而运行。C# 需要像 Silverlight 一样的浏览器插件。尽管它在客户端机器上运行,但 Javascript 不能读写那里的文件。依赖于 Silverlight 版本和客户端允许什么,Silverlight 中的 C# 可能能够读写文件。Javascript 和 C#/Silverlight 均可与远程服务器交互。
服务器端:由于您控制此计算机,因此可以做任何您想做的事情-读取文件、写入文件、直接与数据库通信等等。请记住,没有任何阻止您在服务器端运行Javascript。请查看 node.js。
如果将“服务器/客户端”范围之外保留,是否有更多使用两种语言的理由?
我不会忽略执行环境对您分析的影响。如果您绝对需要客户端交互并且无法保证 C# 将在客户端执行,则 C# 不实用。同样,如果您的公司运行 Windows 服务器并且不想安装 Javascript 运行时/编译器,则无法在服务器上使用 Javascript。
为什么有些开发人员避免使用Javascript?
浏览器中的Javascript问题非常难以调试。您正在运行一个不受您控制的计算机-用户可能正在运行一个模糊或过时的浏览器,他们可能正在使用破坏您Javascript的杀毒软件,他们的浏览器插件可能会破坏您Javascript。这很难。
然而,这是在别人的机器上做生意的代价。如果容易,美丽的客户端体验将意味着更少。解决困难的问题并不适合每个人,但当它被很好地完成时,它肯定是受到赞赏的。
我理解你的真正问题是,既然C#可以做到所有的事情,那么为什么还需要使用JavaScript呢?答案就在于性能,包括用户体验和实际性能。关键在于,如果要使用C#来完成通常由JavaScript完成的DOM操作,浏览器必须向服务器发送额外的HTTP请求,告诉C#代码该如何操作。让我们谈谈这些额外的请求。在大量用户分布的情况下,它们会快速累积并对服务器基础设施造成严重影响。 "真正"的性能问题在于现在需要在你的服务器上进行大量工作,而不是在用户的浏览器中。 "用户体验"的性能问题在于,即使你有足够的服务器资源轻松处理所有额外的HTTP请求,用户现在也必须花费额外的时间等待由这些HTTP往返引起的延迟。
我曾经看过一个C#项目,其中嵌入了JavaScript,并可以在C#代码中执行JavaScript。在CodeProject上查看如何实现此功能。
如果您愿意,甚至可以使用JavaScript作为服务器端(或通过不同的机制使用客户端C#)。
它们实际上只是完成相同工作的两种方式。