首先我们用VS(我用的是VS2008)创建一个空解决方案。
并且在此解决方案中添加三个项目(如下)
1.建一个C#类库,定名为WCF.MyServerContract;(此项目用于向外提供方法,里面就是一个接口文件,大家都说他是服务契约)
2.再建一个C#类库,定名为WCF.MyServer主要是实现WCF.MyServerContract中的那个接口(可以理解为业务层吧);
3.还是建一个C#类库,定名为WCF.MyDataContract(里面放的的是我们要用到的一些数据实体)(大家称他为数据契约)
4.另外我们还要建上个控制台程序,定名为Host(他呢,就只有一个用处,用来启动我们的WCF服务)
好啦,上面的四个项目就形成啦我们的WCF服务端啦。
哦,忘记说他们之间的依赖关系:4要引用2 ; 2要引用3; 1 要引用2各3;(怎么这么麻烦.)
另外,我们都要在这4 个项目中引入WCF中的系统类库。(System.ServiceModel; System.Runtime.Serialization;)
准备工作做好啦,下面把代码贴上来。
WCF.MyServerContract:里面就一个IServer.cs文件
Code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ServiceModel;
using System.Runtime.Serialization;
using WCF.MyDataContract;
namespace WCF.MyServerContract
{
[ServiceContract]
public interface IServer
{
[OperationContract]
List< MyData.Order> getOrder(int id);
}
}
WCF.MyServerContract:实现上面的IServer。也只有一个文件。。呵呵~~
Code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using WCF.MyDataContract;
namespace WCF.MyServer
{
public class Server:WCF.MyServerContract.IServer
{
IServer 成员#region IServer 成员
List<MyData.Order> WCF.MyServerContract.IServer.getOrder(int id)
{
MyData.Order od1 = new MyData.Order { ID = 1, Money = 200, Des = "描述", Name = "乐乐" };
MyData.Order od2 = new MyData.Order { ID = 2, Money = 300, Des = "描述", Name = "罗勇" };
MyData.Order od3 = new MyData.Order { ID = 3, Money = 100, Des = "描述", Name = "lele" };
List<MyData.Order> ods = new List<MyData.Order>();
ods.Add(od1);
ods.Add(od2);
ods.Add(od3);
return ods;
}
#endregion
}
}
WCF.MyDataContract:数据契约,给业务提供实体。大家看代码就懂啦。
Code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ServiceModel;
using System.Runtime.Serialization;
namespace WCF.MyDataContract
{
public class MyData
{
[DataContract]
public class Order
{
[DataMember]
public int ID { get; set; }
[DataMember]
public string Name { get; set; }
[DataMember]
public float Money { get; set; }
public string Des { get; set; }
}
}
}
还有一个Host项目
Program.cs文件的内容如下
Code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ServiceModel;
namespace Host
{
class Program
{
static void Main(string[] args)
{
初始化主机,并用Console作为宿主运行服务#region 初始化主机,并用Console作为宿主运行服务
using (ServiceHost host = new ServiceHost(typeof(WCF.MyServer.Server)))
{
host.Open();
Console.WriteLine("服务已启动,按任意键结束服务!");
Console.ReadLine();
}
#endregion
}
}
}
Host还有一个配制文件(App.config)。也贴出来。
Code
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.serviceModel>
<services>
<service name="WCF.MyServer.Server" behaviorConfiguration="orderBehav">
<host>
<baseAddresses>
<add baseAddress="http://localhost:8090"/>
<add baseAddress="net.tcp://localhost:8010"/>
</baseAddresses>
</host>
<endpoint address="Server1" binding="netTcpBinding" contract="WCF.MyServerContract.IServer"/>
<endpoint address="Server2" binding="wsHttpBinding" contract="WCF.MyServerContract.IServer"/>
<endpoint contract="IMetadataExchange" binding="mexHttpBinding" address="mex" />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="orderBehav">
<serviceMetadata httpGetEnabled="true" httpGetUrl="http://localhost:8400"/>
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
</configuration>
以上就是一个简单WCF的服务端啦。其实内容不多。我只是把他分的细点。(可能有点杀鸡用牛刀的感觉。呵呵)
WCF程序与一般的程序也没什么区别,主要是在接口,方法,类,属性上加了WCF用到的属性标签(如:DataCtract)
下一篇我将说说如何在客户端调用WCF服务。