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秒后自动呼叫)

谢谢!

WCF服务主机可以调用它的服务吗?

Web服务方法调用应该被认为是一个完整的操作,所以如果你需要存储传递的值,你应该在WCFService.SetValue()的某个地方调用SaveToDatabase,而不需要将SaveDatabase公开为Web服务方法