写一个简单控制台启动的mcv服务

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来调用服务中的函数了。

posted @ 2014-11-30 19:50  lxdonge  阅读(179)  评论(0)    收藏  举报