如何在WCF4.0REST服务中使用Windsor-Castle WCFFacility?
当您不再拥有.svc文件时,您如何创建到工厂的链接?
提亚
Søren
发布于 2012-03-08 23:58:55
使用Windsor 3.0,这是非常简单的(如果我正确理解了你的问题,如果我错过了什么,我很抱歉)。
向您展示的最简单的事情是创建一个控制台应用程序,并确保您引用的是:
现在像这样定义一个RESTful服务:
[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方法):
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,您明白了……
https://stackoverflow.com/questions/5935121
复制相似问题