【问题标题】:Best practice for accessing global Silverlight application data访问全局 Silverlight 应用程序数据的最佳实践
【发布时间】:2015-03-16 12:59:08
【问题描述】:

我在一个网站上托管了一堆 Silverlight 5 应用程序,这些应用程序设置了一些特定于应用程序的数据。这些数据之一是 CurrentUser 对象。

在应用程序(每个)启动时,它会与网络服务对话以获取当前用户信息。但是,这需要从 SL 应用程序中的各种位置进行访问。

我认为将它放在 Application 对象本身上是有意义的,但我不确定这是否是一个好习惯。

我将一个包含用户的简单属性放在一个接口中,并在主应用程序类上实现它。

然后,应用程序的其余代码通过静态类访问它:

Public Module ApplicationUtils

    Public Property CurrentUser() As ConnectEntities.WebUser
        Get
            Dim app As ICommonAppData = TryCast(Application.Current, ICommonAppData)
            If (app IsNot Nothing) Then
                Return app.CurrentUser
            End If
            Return Nothing
        End Get
        Set(value As ConnectEntities.WebUser)
            Dim app As ICommonAppData = TryCast(Application.Current, ICommonAppData)
            If (app IsNot Nothing) Then
                app.CurrentUser = value
            End If

            Throw New NotImplementedException("Current application does not implement required interface")
        End Set
    End Property

End Module

我对 Silverlight 不是很熟悉,所以我想知道这是否是一种公认​​的访问全局数据的做法,或者是否存在我在这里没有意识到的复杂情况(线程安全问题等)。 )。

【问题讨论】:

  • @chris for Application.Current 要工作,您需要以提升的 SL 权限工作。
  • @user2526236,很有趣。现在超出​​我的知识深度。谷歌搜索表明我们需要一个签名的 XAP 和一个注册表设置。签署 xap 很容易,但是如果有的话,如何通过 SL5 应用程序在其他人的计算机上设置注册表设置?另外,我如何判断它是否已经运行受信任? (它是一个遗留应用程序)我相信选中项目属性上的复选框只能使其用于本地测试。
  • @chris 请参考这个 MSDN 文档。我们有一个 exe 供客户端安装以更改 reg 值 ..msdn.microsoft.com/en-us/library/…
  • @user2526236 谢谢,我会看看,但我不认为单独的 exe 是一个选项。回到最初的问题,这真的是在 Silverlight 中访问/存储这些信息的正确方法,还是有更合适和更简单的方法来处理它?
  • @user2526236 哪里提到我需要提升权限才能使用 Application.Current?我可以在我拥有的这个现有应用程序中看到一堆访问 Application.Current 属性(如 Resources 和 RootVisual)的地方,但我不相信它具有提升的权限。只是想找到关于这个的权威词。

标签: vb.net silverlight


【解决方案1】:

我无法找到任何提到需要提升权限才能访问 Application.Current 属性的任何详细信息。同样,在我的所有测试中,我似乎能够根据需要访问此属性,而无需提升权限(本地测试以及部署在其他机器上的应用程序)。

我已经推进了我的原始设计,一切似乎都运行良好。

这是否是最佳做法,我不知道。但是,访问此类数据似乎是一个相当干净的解决方案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-12
    • 2011-02-21
    • 1970-01-01
    • 1970-01-01
    • 2022-08-13
    • 2014-03-18
    相关资源
    最近更新 更多