简体   繁体   English

WCF服务主机可以调用其服务吗?

[英]Can WCF Service Host call its service?

This is my project: 这是我的项目:

IWCFService.cs IWCFService.cs

[ServiceContract]
public interface IWCFService
{
    [OperationContract]
    void SetValue(string value);

    [OperationContract]
    bool SaveToDatabase();
}

WCFService.cs WCFService.cs

public class WCFService : IWCFService
{
    public void SetValue(string value);
    {
        //Code insert value
    }

    public bool SaveToDatabase);
    {
        //Code save values to database
    }
}

WindowsServiceHost.cs 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 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!");
    }
}

Where can I put shared memory (to set value from many clients)? 我可以在哪里放置共享内存(以设置许多客户端的价值)? (in WCF Service or Windows Service) (在WCF服务或Windows服务中)

Can I call SaveToDatabase() from Windows Service? 我可以从Windows Service调用SaveToDatabase()吗? (calling automatically after 5 seconds) (5秒后自动呼叫)

Thanks! 谢谢!

Web服务方法调用应视为完整操作,因此,如果需要存储传递的值,则应在WCFService.SetValue()内的某个地方调用SaveToDatabase并且无需将SaveDatabase公开为Web服务方法。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM