connect-owin v0.4.0
connect-owin 
Implement node.js connect middleware in .NET using OWIN.
Versions are incremented according to semver.
This is a fork of Tomasz Janczuk's original code; thanks go to him for getting this thing started!
Introduction
OWIN itself is not a technology, just a specification to decouple Web applications from the Web server.
The goal of connect-owin is to implement this specification to use node.js, through connect framework, as the Web Server.
The connect-owin exports a function that returns a connect middleware.
The function takes the path of the OWIN .NET assembly file as a parameter.
The following code shows how to use connect-owin with express.js,
a Web framework built on connect:
var owin = require('connect-owin'),
express = require('express');
var app = express();
app.all('/net', owin('MyAssembly.dll'));
// ...
app.listen(3000);.NET OWIN middlewares can be implemented in two ways with connect-owin:
- By implementing the OWIN primary interface
Func<IDictionary<string, object>, Task>:
public class Startup
{
public Task Invoke(IDictionary<string, object> env)
{
// ...
}
}- By using the
IAppBuilderinterface that acts as the glue for any .NET OWIN middleware, exactly how connect in node.js works:
public class Startup
{
public void Configuration(IAppBuilder builder)
{
// ...
}
}The connect-owin function uses <assembly name>.Startup as default type name, and Configuration as default method name.
Custom type and method name can be provided via an options object:
owin({
assemblyFile: 'MyAssembly.dll',
typeName: 'MyNamespace.MyType',
methodName: 'MyMethodName'
});Requirements
- Windows, Linux or MacOS
- node.js 0.8.x or later
- .NET Framework 4.5 or Mono 3.4
Building
Grunt is used to build, test and preview the sample on all platforms.
First, install connect-owin dependencies:
$ npm installThen, you'll need to install Grunt's command line interface (CLI) globally:
$ npm install -g grunt-cliYou can build sources, run tests and preview the sample by using the default Grunt task:
$ gruntBuilding sources
$ grunt buildThe build creates the lib\clr\Connect.Owin.dll file required by the lib\connect-owin.js library.
Running the sample
Using Grunt
The following command uses the grunt-contrib-connect task to start a connect web server
with the .NET OWIN application plugged in as a middleware and open the page in your default browser:
$ grunt helloUsing express.js
An express.js sample is also provided to run the .NET OWIN application:
$ cd examples\hello
$ npm install express
$ node server.jsThen go to http://localhost:3000/node. This should display a message from an express middleware in node.js.
If you go to http://localhost:3000/net, you should see a similar message from the .NET OWIN application
in Owin.Connect.Examples.Hello.dll plugged in as a middleware to the express pipeline.
More samples available @ connect-owin-samples
Running tests
$ grunt testmocha is used to run tests.