在WCF中使用公共静态变量安全吗?

在WCF中使用公共静态变量安全吗?,wcf,silverlight,static-variables,Wcf,Silverlight,Static Variables,我在我的Silverlight 4应用程序VS2010,C中阅读电子邮件,我创建了一个通过IMAP处理电子邮件操作的WCF,我在我的Silverlight应用程序中使用它的功能事实上,我的Silverlight应用程序将成为另一个父Silverlight应用程序中的用户控件。我可以为用户名、密码、imap服务器地址和其他项目声明公共静态变量吗?我的应用程序将有多个用户,所以在我的WCF中使用公共静态变量安全吗?还是我应该始终为每个用户向我的WCF函数传递用户名、密码、imap地址、端口和其他内容

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

我应该使用诸如会话之类的机制,还是可以安全地使用静态变量?如果几个用户同时调用我的服务,会发生什么情况


谢谢

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

如果这些参数随着用户的不同而变化,那么更好的办法是在服务端创建一个包含所有这些参数的类


当静态变量只是常量时,在WCF中使用它们没有任何问题。当它们不是常数时,您可能必须对此进行研究。

也许今天这将如预期的那样起作用,但明天呢?不要关门。创建一个像MailSession这样的类,您可以根据需要实例化,并使用它,这是一个建议,像MMVM这样的模式是我的首选谢谢您的警告,我会记住它,但是您所说的MailSession是什么意思?应该在哪里申报?在我的WCF里你是说?因此,当新用户登录并调用WCF login时,我应该创建此对象的一个实例?您应该将WCF逻辑包装在mailsession类中。SL应用程序不会直接调用wcf方法,而是使用MailSession。mailsession类可以有一个具有用户凭据的构造函数,以及getemails、setread等方法。在MVVM中,这将是模型层