Ответ 1
Если вы создаете промежуточное программное обеспечение с базовым типом OwinMiddleware, по умолчанию оно не будет работать с серверами Owin Microsoft Owin. Но его можно заставить работать с серверами не Microsoft (SignalR отлично работает с Nowin в качестве примера).
Стандартная реализация IAppBuilder (https://github.com/owin/owin-hosting/blob/master/src/main/Owin.Builder/AppBuilder.cs) имеет встроенную функцию преобразования подписи. Это позволяет любому зарегистрировать преобразование из T → AppFunc и AppFunc → T. Это означает, что вы можете смешивать и сопоставлять промежуточное программное обеспечение с разными сигнатурами в одном конвейере. (см. https://katanaproject.codeplex.com/SourceControl/latest#src/Microsoft.Owin/Infrastructure/SignatureConversions.cs для примера того, как работает OwinMiddleware). Пока это преобразование существует, вы можете сделать "сырое" промежуточное ПО (например, nancy) работать с OwinMiddleware без проблем. Чтобы увидеть, как это выглядит, смотрите здесь:
https://github.com/owin/owin-hosting/blob/master/src/main/Owin.Builder/AppBuilder.cs#L182 (Теперь, когда ваш мозг взорвался... далее)
В случае SignalR мы автоматически добавляем конверсию от вашего имени (https://github.com/SignalR/SignalR/blob/dev/src/Microsoft.AspNet.SignalR.Core/Owin/OwinExtensions.cs#L168), но это может быть сделано в любом коде, который зависит от OwinMiddleware и убедитесь, что переход работает.
Если вы используете какой-либо из Microsoft.Owin.Hosting для загрузки вашего приложения, но вы используете веб-сервер не Microsoft, вы также получите бесплатное преобразование (см. текущее чтение для примера https://github.com/Bobris/Nowin/blob/master/README.md).
Надеюсь, что это поможет.