如何在wcf中为多个端点创建单个实例
场景:如何在wcf中为多个端点创建单个实例,wcf,in-memory,Wcf,In Memory,场景: 我有单实例类型的wcf服务。它们将数据保存在内存中。 客户端调用该服务并获取数据,而无需访问数据库。 Wcf服务是windows服务中的主机。 在windows服务中,我使用了计时器,wcf服务在此基础上命中数据库并刷新数据 现在的问题是,当发生刷新调用时,数据客户端的请求受到影响并超时 现在我尝试了两个端点。一个用于消费者,另一个用于刷新。 这两种方法都能很好地工作,但即使刷新端点也能刷新数据。使用者端点提供旧数据是否刷新显示正确数据的端点 代码示例 [ServiceBehavior(
我有单实例类型的wcf服务。它们将数据保存在内存中。 客户端调用该服务并获取数据,而无需访问数据库。 Wcf服务是windows服务中的主机。 在windows服务中,我使用了计时器,wcf服务在此基础上命中数据库并刷新数据 现在的问题是,当发生刷新调用时,数据客户端的请求受到影响并超时 现在我尝试了两个端点。一个用于消费者,另一个用于刷新。 这两种方法都能很好地工作,但即使刷新端点也能刷新数据。使用者端点提供旧数据是否刷新显示正确数据的端点 代码示例
[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)]
public class Service1 : IService1
{
List<string> Name;
public Service1()
{
Name = new List<string>();
CollectData1();
}
public List<string> CollectData()
{
CollectData1();
return Name;
}
public List<string> CollectData1()
{
List<string> _name = new List<string>();
string connectionString = ConfigurationManager.ConnectionStrings["DBConnectionString"].ConnectionString;
using (SqlConnection sqlConnection1 = new SqlConnection(connectionString))
{
using (SqlCommand cmd = new SqlCommand())
{
cmd.CommandText = "select name from test";
cmd.Connection = sqlConnection1;
sqlConnection1.Open();
using (SqlDataReader reader = cmd.ExecuteReader())
{
if (reader.HasRows)
{
while (reader.Read())
{
string a = Convert.ToString(reader[0]);
_name.Add(a);
}
}
}
}
}
Name = _name;
return Name;
}
public List<string> GetData()
{
return Name;
}
}
[ServiceBehavior(InstanceContextMode=InstanceContextMode.Single)]
公共类服务1:IService1
{
名单名称;
公共服务1()
{
Name=新列表();
收集数据1();
}
公共列表数据()
{
收集数据1();
返回名称;
}
公共列表收集数据1()
{
列表_name=新列表();
string connectionString=ConfigurationManager.connectionString[“DBConnectionString”].connectionString;
正在使用(SqlConnection sqlConnection1=新的SqlConnection(connectionString))
{
使用(SqlCommand cmd=new SqlCommand())
{
cmd.CommandText=“从测试中选择名称”;
cmd.Connection=sqlConnection1;
sqlConnection1.Open();
使用(SqlDataReader=cmd.ExecuteReader())
{
if(reader.HasRows)
{
while(reader.Read())
{
字符串a=Convert.ToString(读取器[0]);
_名称.添加(a);
}
}
}
}
}
名称=_名称;
返回名称;
}
公共列表GetData()
{
返回名称;
}
}
尝试使用静态变量:静态列表名称尝试使用静态变量:静态列表名称