2010-09-22 13 views
7

क्या पाइथन में SimpleHTTPServer के समान F # के लिए कोई वेब सर्वर लाइब्रेरी है?एफ # वेब सर्वर लाइब्रेरी

आईआईएस जैसे पूर्ण सर्वर को स्थापित करना मेरे इच्छित चीज़ों के लिए अधिक है, जो कि एक साधारण एप्लिकेशन है जिसे एक वेब ब्राउज़र का उपयोग करके पूछताछ की जा सकती है, प्रभावी ढंग से निगरानी पद्धति के रूप में HTTP का उपयोग कर। आदर्श रूप से, पते /engines/id/state का अनुरोध एक फ़ंक्शन get_state(engine_id) पर मैप करेगा जो मैं प्रदान करता हूं।

उत्तर

12

एक स्वयं-होस्टेड डब्ल्यूसीएफ सेवा खराब शुरुआत नहीं है;

open System 
open System.IO 
// add reference to these two guys, need .NET full (not client profile) 
open System.ServiceModel 
open System.ServiceModel.Web 

[<ServiceContract>] 
type MyContract() = 
    [<OperationContract>] 
    [<WebGet(UriTemplate="{s}/{t}")>] 
    member this.Get(s:string, t:string) : Stream = 
     let html = sprintf @" 
<!DOCTYPE HTML PUBLIC ""-//W3C//DTD HTML 4.0 Transitional//EN""> 
<html><head></head><body>Called with '%s' and '%s'</body></html>" s t 
     upcast new MemoryStream(System.Text.Encoding.UTF8.GetBytes(html)) 

let Main() = 
    let address = "http://localhost:64385/" 
    let host = new WebServiceHost(typeof<MyContract>, new Uri(address)) 
    host.AddServiceEndpoint(typeof<MyContract>, new WebHttpBinding(), "") 
     |> ignore 
    host.Open() 
    printfn "Server running at %s" address 
    printfn "Press a key to close server" 
    System.Console.ReadKey() |> ignore 
    host.Close() 

Main() 
// now go hit 
// http://localhost:64385/foo/42 
// in your browser 
+0

निष्पादन के बाद मुझे अनुबंध के लिए 'अपवाद डिस्पैचऑपरेशन' * 'मिलता है' MyContract 'को Invoker की आवश्यकता होती है। System.ServiceModel.Dispatcher.OperationInvokerHandler.EnsureValid (System.ServiceModel.Dispatcher.DispatchOperation ऑपरेशन) [0x00000] : 0' सर्वर पर और ब्राउज़र पर "falsetrue1310 .." से शुरू होने वाला पाठ। मैं ओएस एक्स पर मोनो के साथ एफ # का उपयोग कर रहा हूं, इसलिए वहां एक बग हो सकता है। क्या देखने के लिए कोई संकेत? –

+0

नहीं। मुझे यह भी पता नहीं था कि डब्ल्यूसीएफ मोनो पर चल रहा था, वाह। – Brian

+0

आपको शायद अपने प्रश्न – BlackTigerX

4

मैंने इसकी जांच सब पर देखा नहीं किया है, लेकिन शायद ही नज़र

https://github.com/SuaveIO/suave/blob/master/README.md

शिष्ट पर एक सरल वेब विकास एफ # एक हल्के उपलब्ध कराने के पुस्तकालय है: यहाँ शुरुआत के लिए एक छोटे से एक है वेब सर्वर और पर संयोजकों का एक सेट मार्ग प्रवाह और कार्य संरचना में हेरफेर करें।

+0

बहुत रोचक लग रहा है । धन्यवाद। –

1

frack (एक रैक की तरह इंटरफेस) पर एक नजर डालें, और आप एक अच्छे वाक्य रचना, frank (frack के शीर्ष पर बनाता है) की आवश्यकता है।

Kayak भी है, यह सी # पर लिखा गया है लेकिन आप आसानी से इसे F # से उपयोग कर सकते हैं।

+0

मुझे लगता है कि कयाक का सही लिंक अब कम से कम https://github.com/kayak/kayak/ है यदि आप स्रोत कोड की परवाह करते हैं। – jocull

संबंधित मुद्दे