WCF之Windows宿主(可安装成服务自动并启动)

  • 创建解决方案WCFServiceDemo
  • 创建WCF服务库(类库或WCF服务库)WCFService  添加引用System.ServiceModel、System.Runtime.Serialization                                                    

图1:WCF之Windows宿主(可安装成服务自动并启动)图2: WCF之Windows宿主(可安装成服务自动并启动)

  • 创建实体模型Book
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.Text;
using System.Threading.Tasks;

namespace WCFService.Models
{
    [DataContract]
    [Serializable]
    public class Book
    {
        [DataMember]
        public string Name { get; set; }
        [DataMember]
        public double Price { get; set; }
    }
}
Book
  • 创建实现类BookService
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WCFService.Models;

namespace WCFService
{
    public class BookService : IBookService
    {
        List<Book> list = new List<Book>();
        public bool Add(string name, double price)
        {
            list.Add(new Book() { Name = name, Price = price });
            return true;
        }

        public List<Book> GetList()
        {
            return list;
        }
    }
}
BookService
  • 创建接口IBookService(接口必须加上ServiceContract特性,方法必须加上OperationContract特性)
using System;
using System.ServiceModel;
namespace WCFService
{
    [ServiceContract]
    public interface IBookService
    {
        [OperationContract]
        bool Add(string name, double price);

        [OperationContract]
        System.Collections.Generic.List<WCFService.Models.Book> GetList();
    }
}
IBookService
  • 如图:

 WCF之Windows宿主(可安装成服务自动并启动)

 

 

 

  • 创建Windows服务宿主WindowsServiceHost ,添加引用System.ServiceModel、System.Runtime.Serialization            

图3:WCF之Windows宿主(可安装成服务自动并启动)图4:WCF之Windows宿主(可安装成服务自动并启动)

 

  • 修改Service1的属性

    在Service1的设计界面中右击,选择“属性”,把其中的(Name)和ServiceName都改为BookServiceHost

  编写代码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Linq;
using System.ServiceModel;
using System.ServiceProcess;
using System.Text;
using System.Threading.Tasks;
using WCFService;

namespace WindowsServiceHost
{
    public partial class BookServiceHost : ServiceBase
    {
        ServiceHost _Host = new ServiceHost(typeof(BookService));
        public BookServiceHost()
        {
            InitializeComponent();
        }

        protected override void OnStart(string[] args)
        {
            _Host.Open();
        }

        protected override void OnStop()
        {
            _Host.Close();
        }
    }
}
BookServiceHost

相关文章: