【问题标题】:How to host a worker role and web role in a single cloud service with just one instance?如何通过一个实例在单个云服务中托管工作角色和 Web 角色?
【发布时间】:2012-11-06 11:12:15
【问题描述】:

我们有一个项目,它有一个 Web 角色(WCF 服务)和一个工作者角色。辅助角色平均使用 0.34% 的资源。我们希望在具有单个实例的单个云服务中同时托管 WCF 和辅助角色。如何才能做到这一点?目前,辅助角色和 WCF 服务各使用一个实例。

【问题讨论】:

    标签: azure cloud cloud-hosting


    【解决方案1】:

    Sandrino 的回答没有错,但从问题来看,似乎不需要任何线程。我的答案是将所有内容从工作角色的WorkerRole.cs 转移到网络角色的WebRole.cs

    【讨论】:

    • 确实——您需要做的就是在 Run 方法中添加一个覆盖,请参阅blog.liamcavanagh.com/2011/12/…
    • 有趣,会尝试让你知道。
    • 一个疑问,每次WCF请求都会调用run方法吗?
    • Run() 被调用一次,并且通常只是休眠、注入监控/日志记录等。一旦退出此方法,实例就会开始其关闭序列。有关角色实例生命周期的更多信息,请参阅 Cory Fowler 的 this article
    【解决方案2】:

    您可以为此使用ThreadedRoleEntryPoint

    public class WebRole : ThreadedRoleEntryPoint
    {
        ...
    
        public override void Run()
        {
            List<WorkerEntryPoint> workers = new List<WorkerEntryPoint>();
            workers.Add(new MyWorkerRole());
            base.Run(workers.ToArray());
        }
    }
    

    您可以使用ThreadedRoleEntryPoint,而不是从默认的RoleEntryPoint 继承,它允许您传递应该作为后台线程启动的工作人员列表。这样,您可以通过将一个或多个 WorkerRoles 作为线程托管在 WebRole 中来节省资源。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多