WCF服务寄宿WindowService + WPF 客户调用的解决方案

本文详细介绍了如何创建一个WCF服务并将其寄宿在Window Service中,以及使用WPF应用程序作为客户端进行访问的步骤。包括创建WCF服务接口和服务实现,设置Windows服务安装程序,配置服务账号,以及客户端添加服务引用并调用服务的方法。
摘要由CSDN通过智能技术生成

创建一个简单WCF,寄宿于Window Service,客户机用wpf application访问

直接看步骤,本次步骤操作代码,编译执行完好于本人机器上。


第一步 创建一个简单的WCF服务



IService1.cs 如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
<strong>using System.ServiceModel; //记得项目加这个引用</strong>
using System.Text;

namespace WcfServiceLibrary1
{
    // 注意: 使用“重构”菜单上的“重命名”命令,可以同时更改代码和配置文件中的接口名“IService1”。
    [ServiceContract]
    public interface IService1
    {
        [OperationContract]
        string GetData(int value);

        [OperationContract]
        CompositeType GetDataUsingDataContract(CompositeType composite);

        // TODO: 在此添加您的服务操作
        [OperationContract]
        string GetHostName();

        [OperationContract]
        bool ClearData();
    }

    // 使用下面示例中说明的数据协定将复合类型添加到服务操作
    [DataContract]
    public class CompositeType
    {
        bool boolValue = true;
        string stringValue = "Hello ";

        [DataMember]
        public bool BoolValue
        {
            get { return boolValue; }
            set { boolValue = value; }
        }

        [DataMember]
        public string StringValue
        {
            get { return stringValue; }
            set { stringValue = value; }
        }
    }
}

Service1.cs 文件内容如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;

namespace WcfServiceLibrary1
{
    public delegate string AddData(int value);

    // 注意: 使用“重构”菜单上的“重命名”命令,可以同时更改代码和配置文件中的类名“Service1”。
    [ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)] // Single 单例运行
    public class Service1 : IService1
    {
         int nCount = 0;

         //自定义一个delegate
        public AddData GettingData = null;

        public string GetData(int value)
        {
            nCount++;
            if (GettingData != null)
            {
                string strData = GettingData(nCount);
                return string.Format("You Get Data From Host: {0}", strData);
            }
            return string.Format("You entered: {0},nCount={1}", value, nCount);
        }

        public CompositeType GetDataUsingDataContract(CompositeType composite)
        {
            if (composite == null)
            {
                throw new ArgumentNullException("composite");
            }
            if (composite.BoolValue)
            {
                composite.StringValue += "Suffix";
            }
            composite.StringValue += "Hello WCF, it is so amazing.";
            return composite;
        }

        public string GetHostName()
        {
            return "what is this?";
        }

        public bool ClearData()
        {
            nCount = 0;
            return true;

        }
    }
}

app.config

<?xml version="1.0" encoding="
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值