码迷,mamicode.com
首页 > 其他好文 > 详细

通过代码的方式完成WCF服务的寄宿工作

时间:2016-07-24 00:18:17      阅读:238      评论:0      收藏:0      [点我收藏+]

标签:

使用纯代码的方式进行服务寄宿

服务寄宿的目的是为了开启一个进程,为WCF服务提供一个运行的环境。通过为服务添加一个或者多个终结点,使之暴露给潜在的服务消费,服务消费者通过匹配的终结点对该服务进行调用,除去上面的两种寄宿方式,还可以以纯代码的方式实现服务的寄宿工作。

新建立一个控制台应用程序,添加System.ServiceModel库文件的引用。

添加WCF服务接口:ISchool使用ServiceContract进行接口约束,OperationContract进行行为约束

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.ServiceModel;
 6 using System.ServiceModel.Activation;
 7 
 8 
 9 namespace WcfTest.Demo3
10 {
11     [ServiceContract]
12     public interface ISchool
13     {
14         [OperationContract]
15         string ShowName(string Name);
16     }
17 }

添加School类,实现Ishool接口:

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 
 6 namespace WcfTest.Demo3
 7 {
 8     public class School:ISchool
 9     {
10         public string ShowName(string name)
11         {
12             return "Show Name " + name;
13         }
14     }
15 }

通过代码将ISchool接口寄宿到控制台应用程序之中:

技术分享
 1 class Program
 2     {
 3         static void Main(string[] args)
 4         {
 5             CoreCodeOpen();
 6         }
 7 
 8         /// <summary>
 9         /// 通过代码的方式完成服务的寄宿工作
10         /// </summary>
11         static void CoreCodeOpen()
12         {
13             try
14             {
15                 using (ServiceHost host = new ServiceHost(typeof(School)))
16                 {
17                     host.AddServiceEndpoint(typeof(ISchool), new WSHttpBinding(), "http://10.0.0.217:20004/School");
18                     if (host.Description.Behaviors.Find<ServiceMetadataBehavior>() == null)
19                     {
20                         ServiceMetadataBehavior behavior = new ServiceMetadataBehavior();
21                         behavior.HttpGetEnabled = true;
22                         behavior.HttpGetUrl = new Uri("http://10.0.0.217:20004/School/wcfapi");
23                         host.Description.Behaviors.Add(behavior);
24                     }
25                     host.Open();
26                     Console.WriteLine("寄宿到控制台应用程序,通过代码开启WCF服务");
27                     Console.ReadKey();
28                 }
29             }
30             catch (Exception ex)
31             {
32                 Console.WriteLine("CoreCodeOpen Error:" + ex.Message);
33             }
34         }
35     }
View Code


技术分享

以管理员身份运行程序>在浏览器输入http://10.0.0.217:20004/School/wcfapi>我们会得到以WSDL(网络服务描述语言-Web Services Description Language)形式体现的服务元数据

技术分享

在解决方案中新建控制台客户端,添加服务引用,输入http://10.0.0.217:20004/School/wcfapi

技术分享

找到了我们的Ischool服务接口,添加引用后进行服务的调用

通过代码的方式完成WCF服务的寄宿工作

标签:

原文地址:http://www.cnblogs.com/heyangyi/p/5699802.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!