WCF简介(四)--DEMO
1新建一个ConsoleApplication工程Named Service 添加一个Config文件。
2添加 System.ServiceModel 命名空间,程序中添加 using System.ServiceModel:
3定义一个Service Contract
{
[ServiceContract]
public interface IHello
{
[OperationContract]
void Hello();
}
.
为IHello类标记了[ServiceContract]属性,这就使得该类成为了一个WCF Service,而其中的方法void Hello()则因为标记了[OperationContract],而成为该Service的一个Operation。
4.定义一个HelloWorld类实现IHello
…….
public class HelloWorld : IHello
{
public void Hello()
{
Console.WriteLine("Hello World!");
}
……
在实现IHello类和方法中不需要ServiceContract和OperationContract属性
5配置App.config文件
右键App.config选择 Edit WCF Configuration 或者在Tools 选择 WCF Service
(1)Configuration Editor
(2)Create a New Service
Set Name = service.HelloWorld
(3)Configuration Endpoints
<endpoint address=""
binding="wsHttpBinding"
contract="service.IHello" />
(4)Configuration BaseAddress
<host>
<baseAddresses>
<add baseAddress="http://localhost:8000/HelloWorld/service"/>
</baseAddresses>
</host>
(5)Configuration Service Medtadata
Select-Advanced-Service Behavior(右键)- New ServiceBehaviorConfiguration
(6)Set Name=HelloWorldServiceBehavior
Select –serviceMetadata 设置HttpGetEnbled=true
(7)Select service.HelloWorld 设置
App.config 文件如下:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.serviceModel>
<services>
<service behaviorConfiguration="HelloWorldServiceBehavior" name="service.HelloWorld">
<endpoint binding="wsHttpBinding" bindingConfiguration="" contract="service.IHello" />
<host>
<baseAddresses>
<add baseAddress="http://localhost:8080/HelloWorld/service" />
</baseAddresses>
</host>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="HelloWorldServiceBehavior">
<serviceMetadata httpGetEnabled="true" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
</configuration>
6.实现Host
……
public static void
{
using (ServiceHost serviceHost = new ServiceHost(typeof(HelloWorld)))
{
serviceHost.Open();
Console.WriteLine("The service is ready.");
Console.WriteLine("Press <ENTER> to terminate service.");
Console.WriteLine();
Console.ReadLine();
}
if (serviceHost.State != CommunicationState.Closed)
{
serviceHost.Close();
}
}
}
7. Run Service
在IE中输入 http://localhost:8000/HelloWorld/service 如下:
8. 实现Client(下面我们用SvcUtil 工具)
在Solution 添加一个Project Named Client 把Program.cs 改为Client.cs
在命令行 输入(已经启动Service):
这样就在D盘生成2个文件 HelloWorld.cs 和 out.config 把这2个文件导入Client 修改out.config 为app.config
修改Client.CS 代码如下:
……
using System.ServiceModel;
class ClientHello
{
static void
{
HelloClient Client = new HelloClient();
Console.WriteLine("Client is Ready" + Environment.NewLine +"Press <ENTER> to terminate client." +);
try
{
Client.Hello();
Console.WriteLine("Hello World!");
Console.ReadLine();
}
catch (TimeoutException timeout)
{
Console.WriteLine(timeout.Message);
Console.ReadLine();
Client.Abort();
}
catch (CommunicationException commProblem)
{
Console.WriteLine(commProblem.Message);
Console.ReadLine();
Client.Abort();
}
finally
{
if(Client.State !=CommunicationState.Closed)
Client.Close();
}
9 Run Solution
Client: Server:
以上就是构建一个HelloWorld代码下载:HelloWorld。