REST下的WCF的寄宿方式

来源:网络 责任编辑:栏目编辑 发表时间:2013-07-01 09:39 点击:

 

如同SOA下的WCF,REST架构下的WCF也有多种多样的寄宿方式,如IIS寄宿,自寄宿等等,即使它只有一种协议。
由于REST基于HTTP协议的特点,所以这种架构下的WCF寄宿时,需要有Web服务器的支持。那么很显然,微软肯定会使用
自己的Web服务器IIS了。
本节目录:
1、IIS寄宿
2、控制台程序寄宿(暂且将它称为自寄宿)
当然,REST WCF还有其他的寄宿方式,我这里只挑出典型的两种给大家介绍。有兴趣的朋友不妨试试其他的寄宿方式。
本节中所使用的实例还是上节所使用的例子。Demo结构图如下:

\

结构说明:Client为服务消费者,Contracts定义服务契约、数据契约,Services定义服务的实现,SelfHost、WebHost:自寄宿、IIS寄宿程序宿主程序
在IIS或者自寄宿中使用同样的服务契约。服务契约的定义如下:

	[ServiceContract]
public interface ILog
{
[OperationContract]
[WebGet(UriTemplate = "/")]
List<LogEntity> GetAll();

[OperationContract]
[WebGet(UriTemplate = "/Log/{year}/{month}")]
List<LogEntity> GetMonthLog(string year, string month);

}

  

数据契约定义:

	[DataContract]
public class LogEntity
{
[DataMember]
public int ID { get; set; }

[DataMember]
public string EventName { get; set; }

[DataMember]
public string Level { get; set; }

[DataMember]
public DateTime Time { get; set; }

}

  

服务的实现代码:

	#region ILog 成员

public List<LogEntity> GetAll()
{
return GetLogEntityList();
}

public List<LogEntity> GetMonthLog(string year, string month)
{
List<LogEntity> logEntities = GetLogEntityList();
List<LogEntity> logList = new List<LogEntity>();
logEntities.ForEach(log =>
{
if (log.Time.Year.ToString() == year && log.Time.Month.ToString() == month)
{
logList.Add(log);
}
});
return logList;

}

#endregion

  


1、IIS寄宿。
众所周知Web程序基于HTTP协议,REST也基于HTTP。REST架构认为:WEB很成功、很简洁,不用那么复杂。所以基于
IIS的寄宿就很容易理解了。在IIS的寄宿中,我直接建了一个Web项目,然后在WCF 服务文件里面里提供对服务的调用。
代码如下:

	public List<LogEntity> GetAll()
{
LogServices services = new LogServices();
return services.GetAll();
}

public List<LogEntity> GetMonthLog(string year, string month)
{
LogServices services = new LogServices();
return services.GetMonthLog(year, month);
}

  

这样就实现了接口规范中定义的对外提供服务。
2、控制台程序寄宿。
2.1通过编码实现REST WCF 寄宿。
寄宿代码如下:

	static void HostViaCode()
{
using (WebServiceHost host = new WebServiceHost(typeof(LogServices)))
{
ServiceEndpoint endpoint = host.AddServiceEndpoint(typeof(ILog), new WebHttpBinding(),
"http://127.0.0.1:6688/LogService");
endpoint.Behaviors.Add(new WebHttpBehavior());
Console.WriteLine("服务开启...");
host.Open();
Console.ReadLine();
}
}

  


2.2、通配置的方式实现REST WCF 寄宿。
首先在配置文件中进行相关的终结点等等配置。配置文件如下:

	<system.serviceModel>
<behaviors>
<serviceBehaviors >
<behavior name="RESTServiceBehavior"></behavior>
</serviceBehaviors>
<endpointBehaviors>
<behavior name="servierBehavior"></behavior>
</endpointBehaviors>
</behaviors>

<services>
<service name="Services.LogServices" behaviorConfiguration="RESTServiceBehavior">
<endpoint address="Http://127.0.0.1:8866/LogService" contract=&
	

    相关新闻>>

      发表评论
      请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
      用户名: 验证码:点击我更换图片
      最新评论 更多>>

      推荐热点

      • 浅析.NET下XML数据访问新机制
      • asp.net 面试+笔试题目第1/2页
      • C# 邮件地址是否合法的验证
      • C#高级编程:数据库连接[1]
      • asp.net 设置GridView的选中行的实现代码
      • 经典C++程序1
      • IIS 自动回收导致后台定时器失效的问题解决
      • ASP.NET&#160;GridView列表代码示例
      • 微软ASP.NET站点部署指南(3):使用Web.Config文件的Transforma
      网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
      Copyright © 2008-2015 计算机技术学习交流网. 版权所有

      豫ICP备11007008号-1