首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WCFFacility和WVF4.0 REST

WCFFacility和WVF4.0 REST
EN

Stack Overflow用户
提问于 2011-05-09 17:43:12
回答 1查看 281关注 0票数 1

如何在WCF4.0REST服务中使用Windsor-Castle WCFFacility?

当您不再拥有.svc文件时,您如何创建到工厂的链接?

提亚

Søren

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-03-08 23:58:55

使用Windsor 3.0,这是非常简单的(如果我正确理解了你的问题,如果我错过了什么,我很抱歉)。

向您展示的最简单的事情是创建一个控制台应用程序,并确保您引用的是:

  • Castle.Core
  • Castle.Windsor
  • Castle.Facilities.WcfIntegration
  • System.ServiceModel
  • System.ServiceModel.Web
  • System.Runtime.Serialization

现在像这样定义一个RESTful服务:

代码语言:javascript
复制
[DataContract]
public class Frob
{
    [DataMember]
    public string Name { get; set; }

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

[ServiceContract]
public interface IFrobService
{
    [OperationContract]
    [WebGet(UriTemplate = "/")]
    IEnumerable<Frob> GetAllFrobs();

    [OperationContract]
    [WebGet(UriTemplate = "/{name}")]
    Frob GetFrobByName(string name);
}

public class FrobService : IFrobService
{
    private readonly List<Frob> _frobs
        = new List<Frob>
              {
                  new Frob {Name = "Foob", Fribble = "Soop"},
                  new Frob {Name = "Hoob", Fribble = "Soop"},
                  new Frob {Name = "Doob", Fribble = "Noop"}
              };

    public IEnumerable<Frob> GetAllFrobs()
    {
        return _frobs;
    }

    public Frob GetFrobByName(string name)
    {
        return _frobs
            .FirstOrDefault(f =>
                            f.Name.Equals(name,
                                          StringComparison.OrdinalIgnoreCase));
    }
}

现在,您可以像这样将该服务挂接到windsor容器中(因为它是一个控制台应用程序,所以我将向您展示main方法):

代码语言:javascript
复制
public static class Program
{
    static void Main()
    {            
        var container = new WindsorContainer();

        container
            .AddFacility<WcfFacility>(f => f.CloseTimeout = TimeSpan.Zero)
            .Register(Component.For<IFrobService>()
                          .ImplementedBy<FrobService>()
                          .AsWcfService(new RestServiceModel("http://localhost/frobs")));

        Console.ReadKey();
    }
}

这是一个由Castle Windsor托管的WCF REST服务。

将浏览器指向:“Doob”将为您提供所有的frob,而将浏览器指向"http://localhost/frobs/Doob“将为您提供名为Doob的frob,您明白了……

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5935121

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档