【问题标题】:is it safe to use public static variables in WCF?在 WCF 中使用公共静态变量是否安全?
【发布时间】:2012-06-07 12:08:38
【问题描述】:

我正在我的 Silverlight 4 应用程序(VS2010,C#)中阅读电子邮件,我创建了一个处理电子邮件操作的 WCF(通过 IMAP),并在我的 Silverlight 应用程序中使用它的功能(实际上我的 Silverlight 应用程序是将成为另一个父 silverlight 应用程序中的用户控件)。我可以为用户名、密码、imap 服务器地址和其他项目声明公共静态变量吗?我的应用程序将有多个用户,那么在我的 WCF 中使用公共静态变量是否安全,或者我应该始终将用户名、密码、imap 地址、端口和其他内容传递给每个用户的 WCF 函数?我在这里有什么选择?

我应该使用会话等机制还是可以安全地使用静态变量?如果多个用户同时调用我的服务会怎样?

谢谢

【问题讨论】:

  • 也许今天这会按预期工作,但明天呢?不要关门。创建一个像“MailSession”这样的类,您可以根据需要对其进行实例化,并使用它是一个建议,像 MMVM 这样的模式(mvvmlight.codeplex.com 是我的首选)
  • 感谢您的警告,我会记住的,但您所说的 MailSession 是什么意思?应该在哪里声明?你的意思是在我的 WCF 中?所以我应该在新用户登录(并调用 WCF 登录)时创建这个对象的实例?
  • 您应该将您的 wcf 逻辑包装在“mailsession”类中。 SL 应用程序不会直接调用 wcf 方法,而是使用 MailSession。 mailsession 类可以有一个带有用户凭据的构造函数,以及“getemails”、“setread”等方法。在 MVVM 中,这将是模型层

标签: wcf silverlight static-variables


【解决方案1】:

如果所有用户的这些参数都相同,那么在简单的情况下,您可以从配置文件中读取它们,而不是将它们硬编码在静态变量中。这样,如果服务器或端口发生变化,您可以轻松更新 web.config 而无需重新编译。

如果这些参数因用户而异,那么更好的办法是在服务端创建一个包含所有这些参数的类。

当它们只是常量时,在 WCF 中使用静态变量没有任何问题。如果它们不是常量,您可能需要查看此thread

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-29
    • 1970-01-01
    • 2019-01-24
    • 2011-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多