1

Windsor-Castle WCFFacility を WCF 4.0 REST サービスでどのように使用しますか?

.svc ファイルがなくなった場合、工場へのリンクをどのように作成しますか?

ティア

セーレン

4

1 に答える 1

1

Windsor 3.0 を使用すると、これは非常に簡単です (質問を正しく理解していれば、何か不足していたら申し訳ありません)。

表示する最も簡単な方法は、コンソール アプリケーションを作成し、参照していることを確認することです。

  • Castle.Core
  • Castle.ウィンザー
  • Castle.Facilities.WcfIntegration
  • System.ServiceModel
  • System.ServiceModel.Web
  • System.Runtime.Serialization

次のように 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));
    }
}

これで、そのサービスを次のようにウィンザー コンテナーに接続できるようになりました (これはコンソール アプリケーションであるため、主な方法のみを示します)。

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 サービスです。

ブラウザで "http://localhost/frobs" を指定すると、すべてのフロブが表示されます。たとえば、ブラウザで "http://localhost/frobs/Doob" を指定すると、Doob という名前のフロブが表示されます。考え...

于 2012-03-08T15:58:54.677 に答える