2010-12-11 62 views
0

有什麼方法可以使用jQuery調用f#庫而不必將其包裝到Web服務方法中?jQuery Ajax調用F#?

+1

我很難想象一個替代方案,就是編寫一個FSharp編譯器或IL反編譯器,它會生成JavaScript作爲其目標語言。你到底在找什麼?有什麼問題會使您拒絕將您的功能作爲服務公開? – JasonTrue 2010-12-11 02:58:58

+0

您可以編寫自己的http服務器,基本上打開端口80並對相應的命令作出反應。 – 2010-12-11 03:05:15

+0

@Jason,這是嚴格的理論測試項目,我正在努力解決。 – dexter 2010-12-11 23:45:08

回答

6

正如評論中提到的,您可以將F#翻譯爲JavaScript。這實際上非常可行,因爲它可以使用引號(F#代碼的高級表示)。有兩個項目可以做到這一點。一個是相當複雜的commercial project named WebSharper(它也有其他功能),另一個是open source project FSharp.Javascript

如果你想避開網絡服務,你也可以編寫一個簡單的HTTP服務器。這將是一個獨立的應用程序,您可以在您的服務器上運行,它將直接處理請求。我在talk in London最近使用HttpListener類。你可以find the sample here

絕對有其他的方法 - 如果你在ASP.NET應用程序中工作,那麼你可以使用HttpHandler或者用F#編寫的頁面直接處理請求。將主要前端作爲C#項目可能更容易,但是您可以在F#中編寫頁面/處理程序,只需在C#中引用它或繼承它(例如using ASP.NET MVC is here)。

+0

+1:我的公司使用ASP.NET MVC + jquery來達到這個目的:jQuery對控制器方法進行Ajax調用,該方法返回一個JsonResult,jQuery可以將其解壓縮並顯示在屏幕上。我們在後端使用C#,但原則上沒有理由不使用F#。 – Juliet 2010-12-11 18:33:30

+0

近幾個月來,FSharp.Javascript項目的改進非常激烈,我很想聽到一些反饋意見。我還創建了用於ASP.NET MVC框架的FSharp.Javascript.Mvc(https://github.com/jgreene/FSharp.Javascript.Mvc)項目。作爲一個例子,我在F#中編寫了俄羅斯方塊,它在這裏的瀏覽器中運行:http://fscript.justsimplecode.com/canvas – justin 2010-12-11 19:27:18

+0

@謝謝你的全面回答和有用的鏈接! – dexter 2010-12-11 23:47:00

0

你可以寫一個HttpHandler作爲包裝器。