【问题标题】:Can WCF Service Host call its service?WCF 服务主机可以调用它的服务吗?
【发布时间】:2015-07-23 06:32:26
【问题描述】:

这是我的项目:

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秒后自动调用)

谢谢!

【问题讨论】:

    标签: c# winforms wcf windows-services


    【解决方案1】:

    Web服务方法调用应该被认为是完整的操作,所以如果你需要存储传递的值,你应该在WCFService.SetValue()内部的某个地方调用SaveToDatabase,并且没有必要将SaveDatabase暴露为Web服务方法。

    【讨论】:

      猜你喜欢
      • 2011-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-15
      相关资源
      最近更新 更多