An implementation of the Open Web Interface for .NET (OWIN), a .NET Web Server Gateway Interface, written in F#.
- Ryan Riley
An implementation of the Open Web Interface for .NET (OWIN), a .NET Web Server Gateway Interface, written in F#.
License: Other
An implementation of the Open Web Interface for .NET (OWIN), a .NET Web Server Gateway Interface, written in F#.
I cloned the frack repo, then executed "cd frack & build". The tests failed with the following error:
./tools/Nunit\nunit-console.exe "/nologo" "/noshadow" "/labels" ".\test\Cashel.dll" ".\test\FHPS.dll" ".\test\Frack.AspNet.dll" ".\test\Frack.Collections.dll" ".\test\frack.dll" ".\test\Frack.HttpListener.dll" ".\test\Frack.SystemWeb.dll" ".\test\Frack.Wcf.dll" ".\test\FSharp.Monad.dll" ".\test\HttpMachine.dll" ".\test\Microsoft.Contracts.dll" ".\test\Micros
oft.Net.Http.dll" ".\test\Microsoft.QueryComposition.dll" ".\test\Microsoft.Runtime.Serialization.Json.dll" ".\test\Microsoft.ServiceModel.Http.dll" ".\test\Microsoft.ServiceModel.Web.jQuery.dll" ".\test\Microsoft.ServiceModel.WebHttp.dll"
".\test\nunit.framework.dll" "/xml:"./test/TestResults.xml""
ProcessModel: Default DomainUsage: Multiple
Execution Runtime: net-2.0
Unhandled Exception:
System.BadImageFormatException: Could not load file or assembly '.\test\Cashel.dll' or one of its dependencies. This assembly is built by a runtime newer than the currently loaded runtime and cannot be loaded.
File name: '.\test\Cashel.dll'
Server stack trace:
at System.Reflection.AssemblyName.nGetFileInformation(String s)
at System.Reflection.AssemblyName.GetAssemblyName(String assemblyFile)
at NUnit.Core.Builders.TestAssemblyBuilder.Load(String path)
at NUnit.Core.Builders.TestAssemblyBuilder.Build(String assemblyName, Boolean autoSuites)
at NUnit.Core.Builders.TestAssemblyBuilder.Build(String assemblyName, String testName, Boolean autoSuites)
at NUnit.Core.TestSuiteBuilder.BuildSingleAssembly(TestPackage package)
at NUnit.Core.TestSuiteBuilder.Build(TestPackage package)
at NUnit.Core.SimpleTestRunner.Load(TestPackage package)
at NUnit.Core.ProxyTestRunner.Load(TestPackage package)
at NUnit.Core.ProxyTestRunner.Load(TestPackage package)
at NUnit.Core.RemoteTestRunner.Load(TestPackage package)
at System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr md, Object[] args, Object server, Int32 methodPtr, Boolean fExecuteInContext, Object[]& outArgs)
at System.Runtime.Remoting.Messaging.StackBuilderSink.SyncProcessMessage(IMessage msg, Int32 methodPtr, Boolean fExecuteInContext)
Exception rethrown at [0]:
at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
at NUnit.Core.TestRunner.Load(TestPackage package)
at NUnit.Util.TestDomain.Load(TestPackage package)
at NUnit.Util.AggregatingTestRunner.Load(TestPackage package)
at NUnit.ConsoleRunner.ConsoleUi.Execute(ConsoleOptions options)
at NUnit.ConsoleRunner.Runner.Main(String[] args)
WRN: Assembly binding logging is turned OFF.
To enable assembly bind failure logging, set the registry value HKLM\Software\Microsoft\Fusion!EnableLog to 1.
Note: There is some performance penalty associated with assembly bind failure logging.
To turn this feature off, remove the registry value [HKLM\Software\Microsoft\Fusion!EnableLog].
Running build failed.
Error:
NUnit test failed. Process finished with exit code -100.
My kayak bits are based on 0.5 before it moved back to googlecode. Also, I never completed the response adapter to write the response back into the kayak response.
At the moment, the FuncHost/OwinHost in Frack.Hosting.Wcf wraps a few components in a slightly more functional manner. Upcoming changes to the Web APIs may allow for better functional wrapping, and these should be wrapped to allow better function composition regardless. Think DSL, not imitate C#.
I deployed the ASP.NET MVC Sample from your samples folder into IIS Express using WebMatrix. I did not have ASP.NET MVC 2.0, so I changed the version of the assembly reference to 3.0. The first request fetches a response 200 OK with no content. When I send another request, IIS Express just crashes. I tried to resolve this issue on my own, but I couldn't figure it out.
Consider the path portion of the URL http://www.wolframalpha.com/input/?i=1%2b1
decodeUrl should return "/input/?i=1+1"
, but instead it returns "/input/?i=1 1"
.
https://github.com/panesofglass/frack/blob/master/src/Frack/Utility.fs#L23
An even bigger issue is that decoding the URL first (before breaking it into various components, e.g., in parseUrlEncodedString
) will fail if the URI contains encoded ampersands & equals signs. Decoding the URI components should be the last step, not the first.
The build currently produces XML docs, limited though they are. However, we have no wiki documentation to help new users get started.
Nothing is currently optimized. We need performance testing on the various pieces to determine where the pain points are and guage realistic performance. We should also identify where we might add mutable state for better performance optimization.
I've got what I think should work, but something is causing server to hang up when a socket is kept alive to receive more data.
I'm torn on whether to continue to use the discriminated union for allowing various types of values and responses or just using obj with dynamic casting. The latter allows a smoother api for those familiar with dynamic languages, but the former is more true to F#'s functional roots. This decision also impacts the Frank dsl.
See HttpMachine.
I have two options to finish this:
... or just run on top of the new WCF stack.
Everything is currently "Hello world." We need better, more real-world samples.
OWIN is 1.0 now completed and it would be awesome if frack was updated. Plus I wanna try running it with SignalR ๐
Flack is a fast socket server implementation written in F#.
I am able to build and use the sample projects in visual studio, but not the SimpleServer.fsx. I looks like it needs owin.dll...so I copied over knack's owin.dll ? (is this the right way to do it?). That got me to compile errors because of Response and Application. Where are these types supposed to be defined? Is there something else I need to do to get this to work? Thanks!
Need to finish building the HttpParser state machine.
A uri isn't a simple string or list of bytes but a set of parts that should be returned as either a discriminated union or in parts as a state machine.
The HttpListener, on the other hand, appears to operate correctly. Reproduced this issue by running this test more than once.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.