.NET 用于 运行 非常 "big" 异步任务的方法是什么?
What is .NET's approach for running very "big" async tasks?
我不知道 .NET 程序员如何处理“大”任务。
例如,网站用户上传视频文件,我们的服务应为其添加一些视觉效果。
在 Python 中,我会使用 Celery(或者可能只是 crontab)或 RabbitMQ 和一些微服务来 运行 与网站的执行线程分开的任务。
但是 .NET 的方法是什么?
我确实建议在网络服务器进程之外这样做。您可以使用 Worker Service for that. Worker Services are actually meant to do this kind of heavy lifting. In combination with a rugged scheduling system like Quartz 定期扫描新视频文件并处理它们。我已经(在生产中)将两者结合使用 运行 相当多的网络服务器进程外作业并取得了巨大成功。
如果包含以下需求,微服务是这些场景的一个很好的解决方案否则,建议使用https://docs.microsoft.com/en-us/dotnet/core/extensions/workers
何时使用微服务:
1- 当您希望单体式应用程序适应可扩展性、敏捷性、可管理性和交付速度时。
2- 当您必须使用当今的编程语言或技术堆栈重写遗留应用程序以跟上现代业务需求和解决方案时。
3- 当您有必须重复使用的独立业务应用程序或模块时。
跨越不同的渠道——一些很好的例子是登录服务、搜索选项验证工具等等。
4- 如果您正在构建需要 swift 交付速度、创新等的高度敏捷的应用程序(产品或服务)。
我不知道 .NET 程序员如何处理“大”任务。
例如,网站用户上传视频文件,我们的服务应为其添加一些视觉效果。
在 Python 中,我会使用 Celery(或者可能只是 crontab)或 RabbitMQ 和一些微服务来 运行 与网站的执行线程分开的任务。
但是 .NET 的方法是什么?
我确实建议在网络服务器进程之外这样做。您可以使用 Worker Service for that. Worker Services are actually meant to do this kind of heavy lifting. In combination with a rugged scheduling system like Quartz 定期扫描新视频文件并处理它们。我已经(在生产中)将两者结合使用 运行 相当多的网络服务器进程外作业并取得了巨大成功。
如果包含以下需求,微服务是这些场景的一个很好的解决方案否则,建议使用https://docs.microsoft.com/en-us/dotnet/core/extensions/workers
何时使用微服务:
1- 当您希望单体式应用程序适应可扩展性、敏捷性、可管理性和交付速度时。
2- 当您必须使用当今的编程语言或技术堆栈重写遗留应用程序以跟上现代业务需求和解决方案时。
3- 当您有必须重复使用的独立业务应用程序或模块时。 跨越不同的渠道——一些很好的例子是登录服务、搜索选项验证工具等等。
4- 如果您正在构建需要 swift 交付速度、创新等的高度敏捷的应用程序(产品或服务)。