2011-05-09 3 views
1

Windsor-Castle WCFFacility를 WCF 4.0 REST 서비스와 함께 어떻게 사용합니까?WCFFacility 및 WVF 4.0 REST

.svc 파일이 더 이상 없으면 어떻게 공장에 대한 링크를 만드시겠습니까?

TIA

소렌

+0

내가 물어봐도 될까요? (아래) 귀하의 질문에 대답 했습니까? 내가 그랬다면 대답을 받아 들일 수 있을까요? (대답 옆의 진드기) – kmp

답변

1

(내가 제대로 질문을 이해 한 경우, 내 사과는 내가 뭔가를 놓친 경우)이 매우 간단 윈저 3.0을 사용.

  • Castle.Core
  • Castle.Windsor
  • Castle.Facilities.WcfIntegration
  • :

    을 보여 가장 간단한 것은 콘솔 응용 프로그램을 작성하고 당신이 참조하고 만드는 것입니다

  • System.ServiceModel
  • System.ServiceModel.Web
  • System.Runtime.Serialization
  • 당신이 윈저 컨테이너에 같은를 해당 서비스를 연결 할 수 있습니다 (그리고 콘솔 응용 프로그램이기 때문에, 난 그냥 당신을 보여줍니다 지금

    [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)); 
        } 
    } 
    

    : 6,

지금과 같은 편안한 서비스를 정의 주요 방법) :

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"는 모든 frobs를 가져오고 "http : // localhost/frobs/Doob"에서 브라우저를 가리키면 Doob이라는 frob을 얻을 수 있습니다. , 당신은 아이디어를 얻을 ...