WCF服务主机可以调用它的服务吗?
本文关键字:服务 主机 WCF 调用 | 更新日期: 2023-09-27 18:04:05
这是我的项目:
IWCFService.cs
[ServiceContract]
public interface IWCFService
{
[OperationContract]
void SetValue(string value);
[OperationContract]
bool SaveToDatabase();
}
WCFService.cs
public class WCFService : IWCFService
{
public void SetValue(string value);
{
//Code insert value
}
public bool SaveToDatabase);
{
//Code save values to database
}
}
WindowsServiceHost.cs
public partial class WindowsServiceHost : ServiceBase
{
private ServiceHost _host;
public WindowsServiceHost()
{
InitializeComponent();
}
protected override void OnStart(string[] args)
{
_host = new ServiceHost(typeof (WCFService.WCFService));
_host.Open();
}
protected override void OnStop()
{
_host.Close();
}
}
frmClient.cs
public partial class frmClient : Form
{
private WCFServiceClient _client = new WCFServiceClient();
public frmClient()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
_client.SetValue(39);
MessageBox.Show("Done!");
}
private void button2_Click(object sender, EventArgs e)
{
_client.SetValue(50);
MessageBox.Show("Done!");
}
private void button3_Click(object sender, EventArgs e)
{
_client.SaveToDatabase();
MessageBox.Show("Done!");
}
}
我可以在哪里放置共享内存(从许多客户端设置值)?(在WCF服务或Windows服务中)
我可以从Windows服务调用SaveToDatabase()吗?(5秒后自动呼叫)
谢谢!
Web服务方法调用应该被认为是一个完整的操作,所以如果你需要存储传递的值,你应该在WCFService.SetValue()
的某个地方调用SaveToDatabase
,而不需要将SaveDatabase
公开为Web服务方法