c#高性能服务器源代码,其中包括mvc api服务,http服务,ftp服务,sokect服务,websocket服务,大文件传输服务。 这些服务均抛开iis及第三支持,可写成服务或随软件启动而启动。

在当今的互联网世界,服务器端应用的性能至关重要。今天咱就来聊聊如何用C#打造一个高性能服务器,涵盖MVC API服务、HTTP服务、FTP服务、Socket服务、WebSocket服务以及大文件传输服务,而且还不依赖IIS和第三方支持,能以服务形式或者随软件启动而启动。
MVC API服务
MVC(Model - View - Controller)架构在Web开发中相当流行,对于API服务而言,它能很好地分离业务逻辑、数据和展示层。在C#里,我们可以借助ASP.NET Core来轻松构建MVC API服务。
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
namespace MyMvcApiServer
{
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
// 此方法由运行时调用。使用此方法向容器添加服务。
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
}
// 此方法由运行时调用。使用此方法配置HTTP请求管道。
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseMvc();
}
}
}
代码分析:Startup类是ASP.NET Core应用的核心。ConfigureServices方法用于向服务容器添加服务,这里我们添加了MVC服务并设置了兼容性版本。Configure方法则配置了HTTP请求管道,在开发环境下开启了开发者异常页面,生产环境使用HSTS等安全措施,最后启用了MVC来处理请求。
HTTP服务
C#里可以用HttpListener来构建一个简单的HTTP服务。
using System;
using System.Net;
using System.Text;
class HttpServer
{
private HttpListener _httpListener;
public HttpServer()
{
_httpListener = new HttpListener();
_httpListener.Prefixes.Add("http://localhost:8080/");
}
public void Start()
{
_httpListener.Start();
Console.WriteLine("HTTP server started. Listening on http://localhost:8080/");
while (true)
{
var context = _httpListener.GetContext();
var response = context.Response;
var buffer = Encoding.UTF8.GetBytes("Hello, this is a custom HTTP server!");
response.ContentLength64 = buffer.Length;
var output = response.OutputStream;
output.Write(buffer, 0, buffer.Length);
output.Close();
}
}
}
代码分析:首先创建了HttpListener实例并添加了监听前缀。在Start方法中,启动监听后进入一个无限循环,每次获取到HTTP上下文后,构造简单的响应内容并返回给客户端。
FTP服务
构建FTP服务相对复杂一些,不过我们可以借助一些开源库,比如FluentFTP。
using FluentFTP;
using System;
class FtpServer
{
public void Start()
{
using (var ftp = new FtpClient("127.0.0.1", "user", "pass"))
{
ftp.Connect();
Console.WriteLine("FTP server connected.");
// 可以在这里进行上传、下载等操作
ftp.Disconnect();
}
}
}
代码分析:使用FluentFTP库,创建FtpClient实例并连接到指定的FTP服务器地址,认证通过后就可以执行各种FTP操作,这里只是简单示例了连接和断开。
Socket服务
Socket服务是网络编程的基础,C#的System.Net.Sockets命名空间提供了丰富的功能。
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
class SocketServer
{
private const int BufferSize = 1024;
private TcpListener _tcpListener;
public SocketServer()
{
_tcpListener = new TcpListener(IPAddress.Any, 13000);
}
public void Start()
{
_tcpListener.Start();
Console.WriteLine("Socket server started. Listening on port 13000");
while (true)
{
var client = _tcpListener.AcceptTcpClient();
var stream = client.GetStream();
var buffer = new byte[BufferSize];
var bytesRead = stream.Read(buffer, 0, BufferSize);
var message = Encoding.UTF8.GetString(buffer, 0, bytesRead);
Console.WriteLine($"Received: {message}");
var responseMessage = "Message received successfully!";
var responseBuffer = Encoding.UTF8.GetBytes(responseMessage);
stream.Write(responseBuffer, 0, responseBuffer.Length);
client.Close();
}
}
}
代码分析:创建TcpListener监听指定端口,当有客户端连接时,接收客户端发送的数据,打印出来后再返回一个确认消息,最后关闭客户端连接。
WebSocket服务
在C#中,可以使用System.Net.WebSockets命名空间来实现WebSocket服务。
using System;
using System.Net;
using System.Net.WebSockets;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
class WebSocketServer
{
private HttpListener _httpListener;
private CancellationTokenSource _cancellationTokenSource;
public WebSocketServer()
{
_httpListener = new HttpListener();
_httpListener.Prefixes.Add("http://localhost:8081/");
_cancellationTokenSource = new CancellationTokenSource();
}
public async Task Start()
{
_httpListener.Start();
Console.WriteLine("WebSocket server started. Listening on http://localhost:8081/");
while (!_cancellationTokenSource.Token.IsCancellationRequested)
{
var context = await _httpListener.GetContextAsync();
if (context.Request.IsWebSocketRequest)
{
var webSocketContext = await context.AcceptWebSocketAsync(null);
var buffer = new byte[1024];
var receiveResult = await webSocketContext.WebSocket.ReceiveAsync(new ArraySegment<byte>(buffer), CancellationToken.None);
var message = Encoding.UTF8.GetString(buffer, 0, receiveResult.Count);
Console.WriteLine($"Received: {message}");
var responseMessage = "Message received successfully via WebSocket!";
var responseBuffer = Encoding.UTF8.GetBytes(responseMessage);
await webSocketContext.WebSocket.SendAsync(new ArraySegment<byte>(responseBuffer), WebSocketMessageType.Text, true, CancellationToken.None);
webSocketContext.WebSocket.CloseAsync(WebSocketCloseStatus.NormalClosure, string.Empty, CancellationToken.None).Wait();
}
else
{
context.Response.StatusCode = 400;
context.Response.Close();
}
}
_httpListener.Close();
}
}
代码分析:通过HttpListener监听HTTP请求,当检测到WebSocket请求时,接受WebSocket连接,接收客户端消息并返回确认消息,最后关闭WebSocket连接。如果不是WebSocket请求则返回400错误。
大文件传输服务
对于大文件传输服务,我们可以在Socket或者HTTP等基础服务上进行优化。以Socket为例,我们可以采用分段读取和写入的方式。
using System;
using System.IO;
using System.Net.Sockets;
class LargeFileTransferServer
{
private const int BufferSize = 8192;
private TcpListener _tcpListener;
public LargeFileTransferServer()
{
_tcpListener = new TcpListener(IPAddress.Any, 13001);
}
public void Start()
{
_tcpListener.Start();
Console.WriteLine("Large file transfer server started. Listening on port 13001");
while (true)
{
var client = _tcpListener.AcceptTcpClient();
var stream = client.GetStream();
using (var fileStream = new FileStream("largeFileToSend.bin", FileMode.Open, FileAccess.Read))
{
var buffer = new byte[BufferSize];
int bytesRead;
while ((bytesRead = fileStream.Read(buffer, 0, BufferSize)) > 0)
{
stream.Write(buffer, 0, bytesRead);
}
}
client.Close();
}
}
}
代码分析:监听指定端口,当客户端连接后,以指定的缓冲区大小从文件中读取数据并通过Socket发送给客户端,直到整个大文件发送完毕。

通过上述各种服务的实现,我们就可以打造一个功能强大的C#高性能服务器,根据实际需求选择和组合这些服务,满足不同的业务场景。无论是Web API接口提供,还是文件传输、实时通信等,都能应对自如。
转自https://blog.csdn.net/2508_94202947/article/details/156768183
该文章在 2026/4/7 15:37:29 编辑过