WCF第一个例子
Service(实现服务契约接口的服务类)
namespace Service
{
public class PersonService:IPersonService
{
List<Person> list = new List<Person>();
#region IPersonService 成员
public List<Person> GetAllPerson()
{
return list;
}
public void Add(Person person)
{
list.Add(person);
}
#endregion
}
}
Contract(服务契约和数据契约)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ServiceModel;
using System.Runtime.Serialization;
namespace Contract
{
[ServiceContract]
public interface IPersonService
{
[OperationContract]
List<Person> GetAllPerson();
[OperationContract]
void Add(Person person);
}
[DataContract]
public class Person
{
[DataMember]
public string Name { get; set; }
[DataMember]
public int Age { get; set; }
}
}
Host(寄宿程序)
ServiceHost host = new ServiceHost(typeof(PersonService));
host.Open();
this.Text = "服务已经启动";
Config(配置文件)
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.serviceModel>
<services>
<!--这里的名称必须是实现接口的服务类 ,行为配置使用下面的配置-->
<service name="Service.PersonService" behaviorConfiguration="test">
<!--这个节点主要是配置基地址-->
<host>
<baseAddresses>
<add baseAddress="http://localhost:8888"/>
</baseAddresses>
</host>
<!--终结点,一个服务可以指定多个终结点 指定 A address-地址 B binding-绑定的协议 C contract--契约-->
<endpoint address="" binding="wsHttpBinding" contract="Contract.IPersonService"></endpoint>
</service>
</services>
<!--配置 服务对应的行为-->
<behaviors>
<serviceBehaviors>
<!--这里的名称可以随便起-->
<behavior name="test">
<!--配置是否通过基地址获取到元数据 true :可以-->
<serviceMetadata httpGetEnabled="true"/>
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
</configuration>