我有一个 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/