[WCF] Restful 自定义宿主

IPersonRetriever:

/*
 * 由SharpDevelop创建。
 * 用户: Administrator
 * 日期: 2017/6/2
 * 时间: 22:13
 *
 * 要改变这种模板请点击 工具|选项|代码编写|编辑标准头文件
 */
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Web;
using System.Text;

namespace WcfRESTful
{
	/// <summary>
	/// Description of IPersonRetriever.
	/// </summary>
	[ServiceContract]
	public interface IPersonRetriever
	{
		[OperationContract]
		[WebInvokeAttribute(UriTemplate = "Persons",Method="POST", ResponseFormat = WebMessageFormat.Json)]
		Person GetPerson();
	}

	[DataContract]
	public class Person
	{
		[DataMember]
		public string Name { get; set; }
		[DataMember]
		public int Age { get; set; }
		[DataMember]
		public string Birthday { get; set; }
	}
}

PersonRetriever:

/*
 * 由SharpDevelop创建。
 * 用户: Administrator
 * 日期: 2017/6/2
 * 时间: 22:15
 *
 * 要改变这种模板请点击 工具|选项|代码编写|编辑标准头文件
 */
using System;
using System.ServiceModel.Web;

namespace WcfRESTful
{
	/// <summary>
	/// Description of PersonRetriever.
	/// </summary>
	public class PersonRetriever: IPersonRetriever
	{
		public Person GetPerson()
        {
            WebOperationContext.Current.OutgoingResponse.ContentType = "text/plain";
            return new Person { Name = "Test", Age = 22, Birthday = DateTime.Now.ToString("yyyy-mm-dd HH:MM:ss:ffff") };
        }
    }
}

Program :

/*
 * 由SharpDevelop创建。
 * 用户: Administrator
 * 日期: 2017/6/2
 * 时间: 22:19
 *
 * 要改变这种模板请点击 工具|选项|代码编写|编辑标准头文件
 */
using System;
using System.ServiceModel;
using System.ServiceModel.Description;

namespace WcfRESTful
{
	class Program
	{
		public static void Main(string[] args)
		{
			Console.WriteLine("Hello World!");

			// TODO: Implement Functionality Here

			Uri baseAddress = new Uri("http://127.0.0.1:9998/PersonRetriever");
			using (ServiceHost host = new ServiceHost(typeof(PersonRetriever), baseAddress)) {
				WebHttpBinding binding = new WebHttpBinding();
				ServiceEndpoint endpoint = host.AddServiceEndpoint(typeof(IPersonRetriever), binding, baseAddress);
				WebHttpBehavior httpBehavior = new WebHttpBehavior();
				endpoint.Behaviors.Add(httpBehavior);
				host.Opened += delegate {
					Console.WriteLine("Hosted successfully.");
				};
				host.Open();
				Console.ReadLine();
			}

			Console.Write("Press any key to continue . . . ");
			Console.ReadKey(true);
		}
	}
}

截图 :

源码: http://files.cnblogs.com/files/Areas/WcfRESTful.zip

时间: 2024-11-18 07:53:33

[WCF] Restful 自定义宿主的相关文章

WCF之Host宿主

Self_hosting自托管宿主. 过程:手动创建Host实例,把服务端点添加到Host实例上,把服务接口与Host关联. 一个Host只能指定一个服务类型,但是可以添加多个服务端点,也可以打开多个Host.其中,Typeof(..)就是配置中的<Service Name=..>. 在通常的企业应用中,我们很少会采用自宿主方式托管服务,这是因为这种方式必须要在应用程序运行下,客户端才能够调用服务,且并不便于随时启动和停止服务.除了不具有易用性与易管理性之外,在可靠性.性能等诸多方面受到很多限

IOS调用WCF提供的服务方法,但是方法的参数是WCF那边自定义的对象,这样有办法调用么,如果可以IOS应该怎么传参呢?请问有了解的么,

最近做一个项目后端使用WCF接收Android手机拍照并带其它参数保存到服务器里:刚好把最近学习的WCF利用上,本以为是个比较简单的功能应该很好实现,没想到其中碰到不少问题,在网上搜索很久一直没有想到的解决方案,最后实现对数据流的分段写入然后后端再来解析流实现的此功能:后端运用WCF中的REST来接收数据:REST还是比较简单的知识,若是不懂可以简单网上了解一下:下面我们先了解一些本次运用到的理论知识: 一:理论知识 由于低层协议特性限制,WCF的流模式只支持如下四种:1:BasicHttpBi

wcf Rest 服务宿主在windows服务及客户端访问

首先写好服务,代码如下: 1 using System; 2 using System.Collections.Generic; 3 using System.Runtime.Serialization; 4 using System.ServiceModel.Web; 5 using System.ServiceModel; 6 7 8 namespace Artech.WcfServices.Service 9 { 10 [ServiceContract(Namespace = "Artec

Linux学习日记-WCF RestFul的部署(三)

一.关于WCF 的部署 默认的wshttp风格的wcf是很容易部署上去的,但是这里给个建议尽量不要使用WCF的配置文件去部署尽管 我们都已经很熟悉了,在使用配置文件你会发现各种蛋疼的问题. 二.WCF Restful的部署 以下是简单的目录: 最主要的是主机的代码: 注: 一定要用代码,而不用配置文件 否则帮助页.默认返回格式什么的以配置就报异常 接口IService 类 using System; using System.Runtime.Serialization; using System

WCF RestFul例子

这里没有理论上的东西,仅仅是做下记录.我这个例子偷懒下了,直接在VS2008里面建了个WCF服务应用程序 一.接口,用WebGet的时候需要添加命名空间:System.ServiceModel;System.ServiceModel.Web; [ServiceContract] public interface IEmployeeService { [WebGet(UriTemplate = "employees", ResponseFormat = WebMessageFormat.

【WCF】自定义错误处理(IErrorHandler接口的用法)

当被调用的服务操作发生异常时,可以直接把异常的原始内容传回给客户端.在WCF中,服务器传回客户端的异常,通常会使用 FaultException,该异常由这么几个东东组成: 1.Action:在服务调用中,action标头比较重要,它是塞在SOAP消息的Headers元素下面的,是消息头的一部分,action用来对服务操作进行定义的.用小学生能听懂的话说,就是某个服务操作的“学号”,通道层在消息调度时,会根据它来寻找要调用的Operation.记得老周举过例子,就好比你去王老板家里,你得知道王老

Wcf Restful Service服务搭建

目的 使用Wcf(C#)搭建一个Restful Service 背景 最近接到一个项目,客户要求使用Restful 方式接收到数据,并对数据提供对数据的统计显示功能,简单是简单,但必须要使用Restful方式,客户端传递数据就必须使用Rest ful的格式的url,提交方式为Post. 其实在之前的公司里边就开发过一个restful服务,但只记得自己使用的wcf,而今已经忘记的差不多了,还以为只是简单的搭建一个wcf就可以,今天起初就创建了一个wcf项目,发现wcf项目http://localh

wcf Restful编程五

Wcf rest编程 Restful 一种软件架构风格,设计风格而不是标准,只是提供了一组设计原则和约束条件.它主要用于客户端和服务器交互类的软件.基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制.(关于这种编程风格大家可以百度下) Wcf 前面已经讲过,但自己书中不会创建一个restful风格的服务,最近看到一份外文博客分享给大家,这里这是创建,具体原理,我能懂了再分享个大家. Step1 新建wcf服务应用程序 Step2 添加新建项 Step3修改 修改接口 [Servic

[转]WCF RESTful service and WebGrid in ASP.NET MVC 5

使用WebClient调用WCF服务 流程:从View获取实体类-->序列化-->写入内存流中-->传给远端的WCF服务 Get.POST.PUT.DELETE using (WebClient wc = new WebClient()) { MemoryStream ms = new MemoryStream(); DataContractJsonSerializer serializerToUplaod = new DataContractJsonSerializer(typeof(