1.在项目工程里添加wcf服务,工程中会出现两个文件IService.cs和Service.cs.
IService.cs中定义服务中的接口,接口必须加特性[OperationContract]才能在客户端添加服务后,实例化对象中发现该函数。
namespace ConsoleApplication1 { [ServiceContract] public interface IMyService { [OperationContract] void DoWork();[OperationContract] void MyFunction(); } }
Service.cs中实现接口
2.添加一个服务后,app.config配置服务信息。配置文件信息可以通过vs 提供的wcf服务配置编辑器来生成,具体可以在网上查到。添加service和contract几个关键节点。
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name=""><!--在部署前将以下值设置为 false 避免泄漏元数据信息--><!- --这个信息在用户添加服务时使用,不然客户端无法通过添加服务引用找到服务 -->
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" /> <!-- 要接收故障异常详细信息以进行调试,请将以下值设置为 true。在部署前设置为 false 以避免泄漏异常信息 --><serviceDebug includeExceptionDetailInFaults="false" /></behavior>
</serviceBehaviors>
</behaviors>
<services>
<service name="ConsoleApplication1.MyService">
<endpoint address="" binding="basicHttpBinding" contract="ConsoleApplication1.IMyService">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
<host>
<baseAddresses><!-用户客户端添加服务引用的地址- -->
<add baseAddress="http://192.168.1.109:8733//MyService/" />
</baseAddresses>
</host>
</service>
</services>
</system.serviceModel>
</configuration>
3.启动服务。
在main中添加如下代码
ServiceHost host = new ServiceHost(typeof(MyService)); //把WCF的service宿主在这里 host.Open(); Console.WriteLine("服务已经启动"); Console.Read();
这样这个服务就已经启动了。
3-1.不编写配置文件也可以启动服务,需要在代码里对配置信息进行确定。
using (ServiceHost host = new ServiceHost(typeof(MyWcfService.Service))){host.AddServiceEndpoint(typeof(MyWcfService.IService), new WSHttpBinding(), "http://localhost:9999/Service.svc");if (host.Description.Behaviors.Find<ServiceMetadataBehavior>() == null){ServiceMetadataBehavior behavior = new ServiceMetadataBehavior();behavior.HttpGetEnabled = true;behavior.HttpGetUrl = new Uri("http://localhost:9999/Service1/hi");host.Description.Behaviors.Add(behavior);}host.Opened += delegate{Console.WriteLine("服务已经启动,按任意键终止服务!");};host.Open();Console.Read();
这样也可以启动服务。
4.引用服务
在任意工程中添加服务引用,在地址栏中添加http://192.168.1.109:8733//MyService/,就能找到该服务进行添加了。
5.使用服务
在引用了服务的工程代码中加入如下语句。
MyServiceReference.MyServiceClient mc = new MyServiceReference.MyServiceClient();
就可用mc来调用服务中的函数了。