C# 创业公司:成功故事与代码示例

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

为什么 C# 是创业公司的理想语言?(以及这和 PythonLib 有什么关系?)

\n\n

当我们听到“创业公司”时,首先想到的是 Python、JavaScript 或 Ruby。但让我们面对现实:C# 是一个巨头,它不仅支撑着企业,还发射火箭(字面意思——SpaceX 就使用 C#)。在 PythonLib 网站上,我们习惯于谈论 Python,但今天我将向您展示为什么 C# 可能是您的秘密武器。您将了解 C# 创业公司如何征服市场,并获得可以直接应用的现成代码片段。

\n\n

这篇文章不是枯燥的教科书。这是一个关于 C# 创业开发 如何带来数十亿美元交易的真实故事,以及您如何借助现代框架复制这条道路。我们开始吧!

\n\n

故事 1:Stack Overflow —— 建立在 C# 上的论坛

\n\n

C# 如何拯救了网络交流

\n\n

最著名的例子是 Stack Overflow。是的,就是那个每个开发者都在上面寻找答案的网站。创始人 Jeff Atwood 和 Joel Spolsky 选择 C# 和 ASP.NET 并非偶然。他们需要 性能 和 可扩展性。在 2008 年,当这家创业公司刚刚起步时,C# 已经能够做到其他语言仍在摸索的事情——异步 和 类型安全。

\n\n

关键点:Stack Overflow 每天处理数百万次请求。如果他们选择了某种不那么严谨的语言,bug 会在创业初期就毁掉它。以下是他们使用 async/await 处理请求的实际代码:

\n\n
public async Task<IActionResult> GetQuestion(int id)\n{\n    var question = await _context.Questions\n        .Include(q => q.Answers)\n        .FirstOrDefaultAsync(q => q.Id == id);\n    \n    if (question == null)\n        return NotFound();\n    \n    return Ok(question);\n}
\n\n

这个简单但强大的模式允许在访问数据库时不阻塞线程。正是由于这种方法,创业公司中的 C# 在响应速度上比 Node.js 和 Ruby on Rails 更具优势。

\n\n

从 Stack Overflow 为您创业公司带来的经验

\n
    \n
  • 不要害怕重量级框架——ASP.NET Core 比看起来更轻量。
  • \n
  • 使用强类型——它能在编译阶段捕获 70% 的错误。
  • \n
  • Entity Framework——是您快速原型开发的好帮手。
  • \n
\n\n

故事 2:JetBrains Rider —— 用 C# 编写的 IDE

\n\n

创业公司如何挑战 Visual Studio

\n\n

JetBrains 公司最初是布拉格的一家小型创业公司。他们创建了 ReSharper(一个基于 C# 的 Visual Studio 插件),后来又开发了完整的 IDE——Rider。为什么选择 C#?因为他们想要 跨平台 和 高性能。借助 .NET Core,他们成功在 Mac 和 Linux 上运行了 C#,这堪称一场革命。

\n\n

他们成功的秘诀是使用 Roslyn(C# 编译器)进行实时代码分析。以下是一个创业公司可能编写的最简单的分析器:

\n\n
public class MyAnalyzer : DiagnosticAnalyzer\n{\n    public override void Initialize(AnalysisContext context)\n    {\n        context.RegisterSyntaxNodeAction(AnalyzeMethod, SyntaxKind.MethodDeclaration);\n    }\n\n    private void AnalyzeMethod(SyntaxNodeAnalysisContext context)\n    {\n        var method = (MethodDeclarationSyntax)context.Node;\n        if (method.ParameterList.Parameters.Count > 5)\n        {\n            var diagnostic = Diagnostic.Create(\n                Rule, method.Identifier.GetLocation());\n            context.ReportDiagnostic(diagnostic);\n        }\n    }\n}
\n\n

这段代码检查方法是否参数过多。对于代码编写速度快的创业公司来说,这类分析器

博客

书籍推荐