PCF和服务栈

时间:2018-02-01 02:18:35

标签: c# servicestack pivotal-cloud-foundry

我们公司正在使用Pivotal Cloud Foundry,目前我们正在使用WebApi作为我们的终端。

我过去曾使用过serviceStack(虽然已经是几年前了),并想知道是否有人在PCF中使用它。 我们还将在PCF中使用Redis和RabbitMQ服务,我想这些服务可以注入ServiceStack。

请告诉我您的经历。

1 个答案:

答案 0 :(得分:0)

我没有使用Pivotal Cloud Foundry,但我正在使用ServiceStack和Redis(缓存),它就像一个魅力。

AppHost.Configure方法中,您只需要像这样注册Redis

// ...
// Can be memory or redis
if (AppSettings.Get("CacheClient", "memory") == "redis")
{
    Container.Register<IRedisClientsManager>(c => new PooledRedisClientManager("localhost:6379"));
    Container.Register(c => c.Resolve<IRedisClientsManager>().GetCacheClient());
}
else
    Container.Register<ICacheClient>(new MemoryCacheClient());
// ...

然后你可以像这样设置/检索缓存值

public static List<SupplierDeliveryState> Get(this IDbConnection db, AllSupplierDeliveryStates request)
{
    var cache = HostContext.TryResolve<ICacheClient>();
    var cacheKey = UrnId.Create<AllSupplierDeliveryStates>(CultureInfo.CurrentUICulture.Name);
    lock (typeof(AllSupplierDeliveryStates))
    {
        var supplierDeliveryStates = 
cache.Get<List<SupplierDeliveryState>>(cacheKey);
        if (supplierDeliveryStates == null)
        {
            supplierDeliveryStates = db.Select<SupplierDeliveryState>().OrderBy(p => p.Label).ToList();
            cache.Set(cacheKey, supplierDeliveryStates, Settings.DefaultCacheDuration);
        }
        return supplierDeliveryStates;
    }
}

我对使用RabbitMQ很感兴趣,但目前我还没有花时间使用它。我有兴趣使用它来执行异步操作,如电子邮件发送,用户通知发送或标签打印。