c# - .net 服务作为 Azure 程序?

标签 c# .net azure

我有一个 Windows 服务,它有效地允许客户端通过 TCP 套接字连接到它,并向它发送/接收数据。它必须能够相当快地做到这一点。

该服务当前在 Windows 服务器上运行,并为它所知道的每个“房间”生成一个线程。通过 TCP 套接字传入的每个请求都会被解析以了解它所在的房间,并且所有请求都会转发到运行该房间的线程。

服务器端处理请求,然后通过相同的 TCP 套接字发回响应。

出于可扩展性和可管理性的简单原因,我很好奇将其迁移到 Azure。但我不太确定我应该寻找哪些服务来做到这一点。有人有什么建议吗?

目前它在 Amazon EC2 实例中运行,具有 RDS 数据库后端和一些利用 S3 的位片段。

由于与一些几乎可以无限制地以很少甚至免费的方式访问 Azure 的人建立了一些新的合作伙伴关系,因此正在寻求迁移到 Azure。

最佳答案

一般来说,Azure 上有两种服务可供选择(如果将虚拟机算在内,则为三种服务,但与其他两种服务相比,它们更难扩展)。第一个是Azure Worker Roles ,它们是云服务的一部分。它们自 Azure 早期就存在,并且构建方式与 Windows 服务类似。较新的是 Azure WebJobs ,它允许您在网站服务内运行多种类型的脚本,例如 PowerShell 或 Windows CMD。该服务允许您按需、连续(这应该是您场景中的首选)或按计划运行您的程序。

对于您的场景,我会选择 worker 角色。它与 Windows 服务非常相似(这意味着您理想情况下不必对代码库进行大量重写)并且可以轻松扩展到大量实例。尽管如此,您应该牢记一些良好的云模式,尤其是在扩展服务时。存在一些障碍,云服务和辅助角色的行为方式可能与您想象的不同。

关于c# - .net 服务作为 Azure 程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27660253/

相关文章:

c# - 在 C# 中使用 TryParse 遇到数据类型问题

.net - 在 SSH.NET 中检查 SFTP/SSH 指纹

c# - 如何使用 Microsoft.Web.Administration 命名空间在 IIS7 中干净地操作处理程序映射?

azure - windows azure 中是否有强制标志来更改角色大小?

c# - Azure 服务总线 - 删除特定消息

c# - 如何在按钮悬停时在面板周围绘制边框?

c# - 嵌套的 LINQ 查询,错误信息

c# - 取消 postAsync 时出现 ObjectDisposedException

c# - 我如何解决 'Timeout period elapsed prior to obtaining a connection from the pool' ?

azure - Azure Functions 应用程序上的增量内存消耗