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

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

服务寄宿的目的是为了开启一个进程,为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     }

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

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

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

时间: 2024-08-06 03:18:48

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

Post方式调用wcf服务

我们平常在PC端调用WCF服务,只要知道WCF服务的地址,客户端直接添加引用服务就可以使用了,殊不知还有其他方式,其实,我们也可以 通过HTTP POST的方式调用WCF服务,这样就不用添加引用了,在手机移动端开发后台服务,都是通过Post的形式调用WCF服务,当然,这种方式在PC也可以使用. 我们来看下面的一个简单示例.下面的示例演示了服务器端和客户端的简单通讯 服务器端返回一个JSON字符串,代码如下 契约定义 [csharp] view plaincopy [OperationContra

WCF技术剖析之二十九:换种不同的方式调用WCF服务[提供源代码下载]

原文:WCF技术剖析之二十九:换种不同的方式调用WCF服务[提供源代码下载] 我们有两种典型的WCF调用方式:通过SvcUtil.exe(或者添加Web引用)导入发布的服务元数据生成服务代理相关的代码和配置:通过ChannelFactory<TChannel>创建服务代理对象.在这篇文章中,我们采用一种独特的方式进行服务的调用.从本质上讲,我们只要能够创建于服务端相匹配的终结点,就能够实现正常的服务调用.在WCF客户端元数据架构体系中,利用MetadataExchangeClient可以获取服

创建WCF服务自我寄宿

WCF服务的寄宿方式 WCF寄宿方式是一种非常灵活的操作,可以寄宿在各种进程之中,常见的寄宿有: IIS服务.Windows服务.Winform程序.控制台程序中进行寄宿,从而实现WCF服务的运行,为调用者方便.高效提供服务调用. 签名 前面介绍过了WCF常用的一种寄宿方式,IIS服务寄宿.这种寄宿方式是最为方便的方式,而且由于服务只需要IIS运行就能自动运行起来,因此广为使用. 创建这种方式IIS寄宿方式的,只需要在解决方案里面,添加WCF服务应用程序,就可以生成这种的服务模块了. 将WCF服

通过纯代码方式发布WCF服务

网络上搜索WCF服务,一般是寄宿在IIS,通过WebConfig方式配服务地址,接口类型等信息,但是对于我这样的懒人,目前项目在开发阶段,实在不愿意每次添加新服务就更新配置文件,于是使用了反射来加载服务接口,并用控制台程序发布服务,贴上代码如下. using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.ServiceModel; using System.

关于WCF引用方式之WCF服务寄宿控制台

1.创建解决方案WCFService 依次添加四个项目,如上图,Client和Hosting为控制台应用程序,Service和Service.Interface均为类库. 2.引用关系 Service.Interface:定义服务契约(Service Contract)接口,引用WCF核心库System.ServiceModel.dll; Service:定义服务的项目,由于需要实现具体的服务,而服务契约在Service.Interface中,所以要引用Service.Interface项目;

WCF服务二:创建一个简单的WCF服务程序

在本例中,我们将实现一个简单的计算服务,提供基本的加.减.乘.除运算,通过客户端和服务端运行在同一台机器上的不同进程实现. 一.新建WCF服务 1.新建一个空白解决方案,解决方案名称为"WCFSolution". 2.解决方案右键->添加->类库项目,类库名称为CalculateWcfService. 3.创建服务契约 WCF采用基于契约的交互方式实现了服务的自制.服务契约:是相关操作的集合.契约就是双方或多方就某个关注点达成的一种共识,是一方向另一方的一种承诺.签署了某个

三十、【C#.Net开发框架】WCFHosting服务主机的利用WCF服务通讯和实现思路

回<[开源]EFW框架系列文章索引>        EFW框架源代码下载V1.3:http://pan.baidu.com/s/1c0dADO0 EFW框架实例源代码下载:http://pan.baidu.com/s/1eQCc69G        前言:以前的系统都是直接客户端直连数据库服务器,后来考虑到服务器的安全性.数据库连接数的限制.分布能力差等问题,特别是那几年中间件.SOA.ESB等炒得比较火,为了跟上时代脚本有必要开发一个中间件,把后台逻辑业务在中间件中运行.刚开始考虑过WebS

WCF--建立简单的WCF服务

在VS2010里建立一个最简单的WCF服务,基本流程如下: 一:新建WCF应用 首先,新建一个WCF服务的应用,如下图所示 建立完成之后,VS将自动生成一个最简单的WCF工程,在这个应用中,包含了最基本Contract.Service. 工程如下: 不需要编辑任何文件,直接编译生成,得到一个WcfService1.dll文件 二.WCF应用中的契约(Contract) 在生成的WCF工程中,IService1.cs中为Contract(本例中契约和服务放在同一个工程下了,实际上也可以分为两个工程

实现jquery.ajax及原生的XMLHttpRequest调用WCF服务的方法

废话不多说,直接讲解实现步骤 一.首先我们需定义支持WEB HTTP方法调用的WCF服务契约及实现服务契约类(重点关注各attribute),代码如下: //IAddService.cs namespace WcfService1 { [ServiceContract] public interface IAddService { [OperationContract] [WebInvoke(Method="POST",RequestFormat=WebMessageFormat.Js