使用.NETCore和Windows构建C客户端和服务器
立即解锁
发布时间: 2025-08-19 02:31:34 阅读量: 14 订阅数: 16 


Apache Thrift程序员指南:从入门到精通
### 使用 .NET Core 和 Windows 构建 C# 客户端和服务器
#### 1. .NET 相关背景知识
在企业应用开发中,.NET Core 框架和 CLR 虚拟机为 Java/JVM 生态系统提供了一个独特且并行的替代方案。然而,这两个环境中的应用程序常常需要协作,而 Apache Thrift 可以在这种多语言环境中发挥重要作用,它提供了一个统一的通信框架,能与 C# 及其他 .NET 开发语言,以及包括 Java 在内的 20 多种非 .NET 语言有效协作。
下面简单介绍一下 .NET 的发展历程:
- 2000 年,微软推出了 C# 和 .NET Framework,当时 .NET 虚拟机(即 CLR 或公共语言运行时)仅在 Windows 上运行,不过它设计为可跨平台。.NET Framework 因其丰富的 GUI 工具包和其他 Windows 特定功能,常用于桌面开发。
- 2001 年,Ximian(后被 Novell 收购)开源了 Mono 项目,这是一个基于 Linux 的 CLR,允许基于 .NET 的应用程序在 Linux、Android 等系统上运行。
- 2010 年,Apache Thrift 0.1.0 发布,为 Linux 用户的 Mono 1.2.6 和 Windows 用户的 .NET Framework 3.5 提供了对 C# 的内置支持。
- 2011 年,Mono 的创始人离开 Novell 后成立了一家公司来支持和扩展 Mono,名为 Xamarin。2016 年,Xamarin 被微软收购,其许多工作成果变成了 Visual Studio 中支持 iOS 和 Android 移动设备的 Xamarin Mono 环境的工具。
- 2014 年,微软宣布推出 .NET Core,直接为 .NET 提供跨平台支持,并在 .NET 基金会的框架下采用开源模式。.NET Core 是 .NET 的重新设计版本,具有简化的类库和对基于 NuGet 包的更新的全面支持,非常适合构建现代跨平台微服务。2017 年末,Apache Thrift 0.11 增加了对 .NET Core 2.0 的支持。
- 2016 年,微软引入了 .NET Standard,定义了所有 .NET 产品必须支持的一组单一要求。这使得开发人员可以按照 .NET Standard 进行编码,然后在任何 .NET 平台上运行。现代 .NET Framework(4.6.1+)、.NET Core(2.0+)、Mono(5.4)和最新的 Xamarin 环境都支持 2017 年的 .NET Standard 2.0。
#### 2. 在 Windows 上设置 Apache Thrift 开发环境
要在 Windows 上为 Apache Thrift 设置基本的 C# 开发环境,开发人员需要具备以下资源:
1. 要使用的语言的构建工具(编译器、链接器、解释器等)。
2. Apache Thrift IDL 编译器。
3. 要使用的编程语言的 Apache Thrift 库。
可以使用微软的 Visual Studio IDE 这个强大的开发平台,Windows Desktop 的 Visual Studio Community(以前的 Express)版本可从微软网站免费下载。这里使用 “Visual Studio Community 2017 版本;.NET 桌面开发” 系统来构建 C# RPC 客户端和服务器(较旧版本的 Visual Studio 也应该可以正常工作)。可以选择下载并安装 Visual Studio Community,也可以使用喜欢的 IDE/编辑器。
Apache Thrift 从 0.11.0 版本开始需要 .NET Framework v3.5+ 或 .NET Core 2.0,以下示例使用 .NET Framework 4.5。
Apache Thrift 网站提供了预编译的 thrift.exe IDL 编译器供下载,这使得在 Windows 上从源代码构建编译器变得不必要。可以在 Apache Thrift 下载页面(http://thrift.apache.org/download)找到该编译器。将编译器放在系统路径中可以方便访问(例如,通常将 thrift.exe 放到 C:\Windows 目录):
```plaintext
C:\Users\Randy>dir C:\Windows\thrift.exe
Volume in drive C is OS
Volume Serial Number is D023-5174
Directory of C:\Windows
2017-03-12 09:30 PM 5,642,240 thrift.exe
1 File(s) 5,642,240 bytes
0 Dir(s) 317,772,148,736 bytes free
```
准备 Apache Thrift C# 开发环境的最后一步是获取 Apache Thrift C# 库。和 Java 类似,C# 程序会被编译成字节码,然后由特定平台的虚拟机或运行时环境解释执行。Visual Studio 平台会安装包含微软公共语言运行时(CLR)的 .NET Framework。运行时环境的一个优点是,程序和库可以在任何平台上编译成字节码一次,然后在支持该运行时的任何其他系统上使用。
这使得我们可以下载 Apache Thrift C# 库的预编译版本,并在任何支持 CLR 的系统上使用它。后续会使用以 Windows 为中心的 NuGet 包管理器来安装预构建的 Apache Thrift 库。
运行时平台的另一个常见优点是,无论使用哪种语言,字节码格式都是相同的,因此用一种语言编写的库可以很容易地被用另一种语言编写的程序使用。在 .NET 世界中,这意味着 F#、VisualBasic 和 Visual C++ 应用程序可以像 C# 程序一样轻松地使用 Apache Thrift C# 库进行 RPC。
对于初始的 C# 开发环境,我们将从源代码构建 Apache Thrift C# 库。即使之后选择使用预打包的库,也值得从源代码构建一两次库,以便了解这个过程,以防需要进行源代码调试问题或使用尚未发布的补丁。
要构建 Apache Thrift C# 库,需要一份 Apache Thrift 源代码。可以在与 IDL 编译器相同的下载页面上找到压缩版的源代码树,如果安装了 Git,也可以从 GitHub 克隆源代码仓库。在这些示例中,Thrift 源代码安装在目录 C:\dev\thriftsrc 中。对 .NET Framework 的支持在 thriftsrc/lib/csharp 中,对 .NET Core 的支持在 thriftsrc/lib/netcore 中。
一旦有了 Apache Thrift 源代码副本,就可以使用 Visual Studio 构建 C# 支持库。要构建 Apache Thrift .NET Framework C# 库,请按照以下步骤操作:
1. 运行 Visual Studio。
2. 选择 [文件] > [打开项目],打开 C# 库的 Visual Studio 解决方案文件:C:\dev\thriftsrc\lib\csharp\src\Thrift.sln(如果提示,安装 .NET Framework 3.5 支持)。
3. 当解决方案加载完成后,在解决方案资源管理器面板中右键单击 Thrift 项目,然后选择 [生成]。
这将构建 Apache Thrift C# 库的调试版本。在示例中,运行时库将在 C:\dev\thriftsrc\lib\csharp\src\bin\Debug\Thrift.dll 处创建。
要构建库的发布版本,可以在 Visual Studio 工具栏的解决方案配置组合框中将解决方案配置从 “调试” 更改为 “发布”,然后重新构建 Thrift 项目。
现在,我们有了 IDL 编译器和 Apache Thrift C# 库,就可以开始构建 .NET RPC 应用程序了。
此外,也可以使用 Mono 框架在 Linux 平台上构建 Thrift.dll。例如,在 Ubuntu Linux 上,可以使用以下命令构建 Thrift.dll 的发布版本:
```bash
~/thrift/lib/csharp/src$ xbuild /p:Configuration=Release /p:TargetFrameworkVersion="v4.5" Thrift.csproj
```
要使此命令生效,必须安装支持 v4.5 的 Mono 框架和工具。例如,在 Ubuntu 上,可以使用以下命令安装最新的 Mono 平台:
```bash
$ sudo apt-get install mono-complete
```
可能需要调整 TargetFrameworkVersion 构建参数以匹配自己的框架版本。类似的说明在 OSX 上也适用,可以使用 “brew install mono” 来添加 Mono 支持。
#### 3. 简单的客户端和服务器示例
接下来将通过一个简单的 C# RPC 客户端和服务器示例,也就是 Hello World 示例,来详细介绍 Apache Thrift C# 应用程序的构建过程。
0
0
复制全文
相关推荐










