servicestack,Vb.net,Web Services,servicestack" /> servicestack,Vb.net,Web Services,servicestack" />

VB.net中的ServiceStack缓存

VB.net中的ServiceStack缓存,vb.net,web-services,servicestack,Vb.net,Web Services,servicestack,如何在VB.net中实现ServiceStack缓存?我看过很多C#示例,但我无法将其转换到vb.net 我在ServiceStack.ServiceHost.RequestContextExtensions.ToOptimizedResultUsingCache的第一个和第二个参数中获得堆栈的点 第一个应该是:ServiceStack.ServiceHost.IRequestContext-不确定 IRequestContext是什么 第二个应该是: ServiceStack.CacheAc

如何在VB.net中实现ServiceStack缓存?我看过很多C#示例,但我无法将其转换到vb.net

我在
ServiceStack.ServiceHost.RequestContextExtensions.ToOptimizedResultUsingCache的第一个和第二个参数中获得堆栈的点

  • 第一个应该是:
    ServiceStack.ServiceHost.IRequestContext
    -不确定 IRequestContext是什么
  • 第二个应该是:
    ServiceStack.CacheAccess.Providers.MemoryCacheClient
    -如何设置 此选项在配置中不缓存默认值,即MemoryCacheClient
代码如下,任何建议都非常感谢

Global.asax.vb

WS.vb

使用

ToOptimizedResultUsingCache
是服务继承/公开的
RequestContext
的扩展方法,与缓存相同(通过IOC自动解析)

下面的示例从C#转换而来,缓存/包装现有服务(AppConfig和Repository通过IOC解析,在AppHost configure方法中注册)

导入System.Collections.Generic
导入ServiceStack.Common
导入ServiceStack.ServiceHost
导入ServiceStack.ServiceInterface.ServiceModel
导入ServiceStack.Common.Web
公共类搜索术语
公共财产纬度()为双
得到
返回m_纬度
结束
设置
m_纬度=值
端集
端属性
私人m_纬度为双
公共属性经度()为双精度
得到
返回经度
结束
设置
m_经度=值
端集
端属性
私人m_经度为双
公共属性项()作为字符串
得到
返回m_项
结束
设置
m_项=值
端集
端属性
私有m_项作为字符串
末级
_
公共类SearchTermRequest
实施IReturn(对SearchTermResponse)
公共属性项()作为字符串
得到
返回m_项
结束
设置
m_项=值
端集
端属性
私有m_项作为字符串
末级
公共类SearchTermResponse
实现IHasResponseStatus
公共财产ResponseStatus()作为ResponseStatus
得到
返回m_ResponseStatus
结束
设置
m_ResponseStatus=值
端集
端属性
私人m_ResponseStatus作为ResponseStatus
公共属性结果()作为(SearchTerm的)列表
得到
返回m_结果
结束
设置
m_结果=值
端集
端属性
私有m_结果作为列表(搜索术语)
末级
_
公共类CachedSearchTermRequest
实现(CachedSearchTermResponse的)IReturn
作为字符串的公共只读属性CacheKey()
得到
返回(CachedSearchTermRequest的)UrnId.Create(String.Format(“{0}”,Me.Term))
结束
端属性
公共属性项()作为字符串
得到
返回m_项
结束
设置
m_项=值
端集
端属性
私有m_项作为字符串
末级
公共类CachedSearchTermResponse
实现IHasResponseStatus
公共财产ResponseStatus()作为ResponseStatus
得到
返回m_ResponseStatus
结束
设置
m_ResponseStatus=值
端集
端属性
私人m_ResponseStatus作为ResponseStatus
公共属性结果()作为(SearchTerm的)列表
得到
返回m_结果
结束
设置
m_结果=值
端集
端属性
私有m_结果作为列表(搜索术语)
末级
公共类搜索服务
继承服务
公共属性存储库()作为IRepository
得到
返回m_存储库
结束
设置
m_Repository=值
端集
端属性
作为IRepository的专用m_存储库
公共函数[Get](请求作为SearchTermRequest)作为SearchTermResponse
返回带有{_
Key.Results=Me.Repository.SearchTermGet(请求)_
}
端函数
末级
公共类CachedSearchTermService
继承服务
公共属性AppConfig()作为AppConfig
得到
返回m_AppConfig
结束
设置
m_AppConfig=Value
端集
端属性
私有m_AppConfig作为AppConfig
公共函数[Get](请求为CachedSearchTermRequest)作为对象
Dim cacheKey作为字符串=request.cacheKey
Return Me.RequestContext.ToOptimizedResultUsingCache(
MyBase.Cache,cacheKey,新时间跨度(0,Me.AppConfig.CacheTimeMinutes,0),
函数()
使用service=Me.ResolveService(属于SearchTermService)()
返回服务。[Get](request.TranslateTo(属于SearchTermRequest)().TranslateTo(属于CachedSearchTermResponse)()
终端使用
端函数
)
端函数
末级
Public Class Global_asax
     Inherits System.Web.HttpApplication

     Public Class HelloAppHost
          Inherits AppHostBase

          Public Sub New()
               MyBase.New("Web Services", GetType(Wrapper).Assembly)
          End Sub

          Public Overrides Sub Configure(ByVal container As Container)

               Routes.Add(Of GetProduct)("/GetProduct").Add(Of GetProduct)("/GetProduct/{*}")

               Plugins.Add(New Cors.CorsFeature(allowedHeaders:="Content-Type, Authorization"))
               container.Register(Of ICacheClient)(New MemoryCacheClient())

          End Sub

     End Class


     Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs)

          Dim apphost = New HelloAppHost()
          apphost.Init()

     End Sub

End Class
Public Class Wrapper

    Public Class WrapperGetProduct
        Implements IService(Of GetProduct)
        Public Function Execute(ByVal request As GetProduct) As Object Implements ServiceStack.ServiceHost.IService(Of GetProduct).Execute

            Dim cachekey As String = "some_key"
            Dim expireInTimespan = New TimeSpan(1, 0, 0)

            Return ServiceStack.ServiceHost.RequestContextExtensions.ToOptimizedResultUsingCache(
                ServiceStack.ServiceHost.IRequestContext,  // not sure what this should be
                ServiceStack.CacheAccess.Providers.MemoryCacheClient,  // not sure what this should be - how do I set this to cache setted in configuration (in memory cache)?
                cachekey, expireInTimespan, 
                Function() request.HandleRequest()
            )


        End Function
    End Class

End Class
Imports System.Collections.Generic
Imports ServiceStack.Common
Imports ServiceStack.ServiceHost
Imports ServiceStack.ServiceInterface.ServiceModel
Imports ServiceStack.Common.Web

Public Class SearchTerm

    Public Property Latitude() As Double
        Get
            Return m_Latitude
        End Get
        Set
            m_Latitude = Value
        End Set
    End Property
    Private m_Latitude As Double

    Public Property Longitude() As Double
        Get
            Return m_Longitude
        End Get
        Set
            m_Longitude = Value
        End Set
    End Property
    Private m_Longitude As Double

    Public Property Term() As String
        Get
            Return m_Term
        End Get
        Set
            m_Term = Value
        End Set
    End Property
    Private m_Term As String

End Class

<Route("/lookup/searchterm", "GET")> _
Public Class SearchTermRequest
    Implements IReturn(Of SearchTermResponse)

    Public Property Term() As String
        Get
            Return m_Term
        End Get
        Set
            m_Term = Value
        End Set
    End Property
    Private m_Term As String

End Class

Public Class SearchTermResponse
    Implements IHasResponseStatus

    Public Property ResponseStatus() As ResponseStatus
        Get
            Return m_ResponseStatus
        End Get
        Set
            m_ResponseStatus = Value
        End Set
    End Property
    Private m_ResponseStatus As ResponseStatus

    Public Property Results() As List(Of SearchTerm)
        Get
            Return m_Results
        End Get
        Set
            m_Results = Value
        End Set
    End Property
    Private m_Results As List(Of SearchTerm)

End Class

<Route("/cached/lookup/searchterm")> _
Public Class CachedSearchTermRequest
    Implements IReturn(Of CachedSearchTermResponse)

    Public ReadOnly Property CacheKey() As String
        Get
            Return UrnId.Create(Of CachedSearchTermRequest)(String.Format("{0}", Me.Term))
        End Get
    End Property

    Public Property Term() As String
        Get
            Return m_Term
        End Get
        Set
            m_Term = Value
        End Set
    End Property
    Private m_Term As String

End Class

Public Class CachedSearchTermResponse
    Implements IHasResponseStatus

    Public Property ResponseStatus() As ResponseStatus
        Get
            Return m_ResponseStatus
        End Get
        Set
            m_ResponseStatus = Value
        End Set
    End Property
    Private m_ResponseStatus As ResponseStatus

    Public Property Results() As List(Of SearchTerm)
        Get
            Return m_Results
        End Get
        Set
            m_Results = Value
        End Set
    End Property
    Private m_Results As List(Of SearchTerm)

End Class

Public Class SearchTermService
    Inherits Service

    Public Property Repository() As IRepository
        Get
            Return m_Repository
        End Get
        Set
            m_Repository = Value
        End Set
    End Property
    Private m_Repository As IRepository

    Public Function [Get](request As SearchTermRequest) As SearchTermResponse
            Return New SearchTermResponse() With { _
                Key .Results = Me.Repository.SearchTermGet(request) _
            }
    End Function

End Class

Public Class CachedSearchTermService
    Inherits Service

    Public Property AppConfig() As AppConfig
        Get
            Return m_AppConfig
        End Get
        Set
            m_AppConfig = Value
        End Set
    End Property
    Private m_AppConfig As AppConfig

    Public Function [Get](request As CachedSearchTermRequest) As Object
        Dim cacheKey As String = request.CacheKey
        Return Me.RequestContext.ToOptimizedResultUsingCache(
            MyBase.Cache, cacheKey, New TimeSpan(0, Me.AppConfig.CacheTimeMinutes, 0),
                Function() 
                    Using service = Me.ResolveService(Of SearchTermService)()
                        Return service.[Get](request.TranslateTo(Of SearchTermRequest)()).TranslateTo(Of CachedSearchTermResponse)()
                    End Using
               End Function
            )
    End Function

End Class