3

この質問の前に、私は30時間ほど前にSignalRを使い始めたと言います。アマチュアの質問はご容赦ください。また、見逃したドキュメントをご存知の場合は、お気軽にご紹介ください。また、私はブログ投稿を書くつもりはありません-私が今いる場所にたどり着くために私が行ったステップを説明するだけです。

TLDR?最後の質問にスキップしてください...

SQL Serverバックプレーンを使用する必要があります(Redisを使用したいのですが、現在Redisを扱っておらず、1つの開発サイクルであまりにも多くの新しいテクノロジーを導入することに抵抗があります)。現在、利用可能なNuGetパッケージがないMicrosoft.AspNet.SignalR.SqlServerため、Githubソースを使用する必要があります。

そこで、ソースを取得してコンパイルし、Microsoft.AspNet.SignalR.SqlServer.dllへの参照を追加しましたが、コンパイルが失敗します(特にGlobalHost.DependencyResolver.UseSqlServer( ... )、コードで参照している場合、*.SqlServerコードがより新しいバージョンの*.SignalR.Core-Githubのバージョンには、NuGetパッケージがリリースされてから(間違いなく)いくつかの変更が加えられているため、それほど驚くことではありません)。:(

したがって、次のステップは、*.Coreでコンパイルしたを使用すること*.SqlServerです。次の問題-新しいSignalRバージョンは、ライブラリで動作しなくなった*.Hosting.Common*.Hosting.AspNet、ライブラリに置き換えられました*.Owin

そこで、追加しました*.Owin(そして、Owin-NuGetから)が、さらに別の問題が発生しました:拡張メソッドが機能しなくなりました-OwinでMapHubs( ... )呼び出された拡張メソッドがありますが、それらはもう機能しません-それらは機能します(したがって、 Owinを参照する必要があると思います)。MapHubs( IAppBuilder builder, ... )RouteTableOwin.IAppBuilder

だから、これは私がいるところです。私はOwinについて簡単に読みました(クールなコンセプトのようです)が、サーバー側でSignalRをセットアップできるようにするためだけに、頭を悩ませるのに何時間も費やすことは特に気にしません。だから、今質問のために:

  1. SignalRの古いNuGetパッケージでうまくプレイできるようにする必要が*.SqlServerありますか(言い換えると、の依存関係を変更すると、信頼性の*.SqlServer低い動作が発生する可能性があります)?または、*.SqlServerSignalRの現在のNuGetリリースバージョンで動作するバージョンがすでにオンラインで利用可能ですか?
  2. Owinホストアプローチを介してSignalRを実行するには、どのような特定の手順が必要ですか(たとえば、ナンシー統合がスローされない限り、これの例は見つかりません-またはそれは正しいアプローチですか)?
  3. MapHubsメソッドの代替アプローチは何ですか?IAppBuilderはどこから入手できますか?私もそうすることになっていますか?
  4. Googleグループの投稿で、David Fowlerは、Owinのサポートにより、AspNetの依存関係が不要になったことを示しています。それは問題ありませんが、ASP.Net MVCアプリでSignalRを使用する理由はありますか?
  5. SignalRのどの部分もサーバー上のIISを介してホストされていない場合、クライアント側のフォールバック(つまり、SSEまたはロングポーリング)はIISを経由しますか、それともOwinホストを独立して使用しますか?
  6. 最後に、別の既存のサイトの仮想ディレクトリとしてホストされているASP.NetMVC4プロジェクトからSignalRを実行することを計画していました。単一のドメイン内で作業したいと考えています。Owinのアプローチでは、サイトがIIS 7.5でホストされている場合でも、これを実行できますか?

更新:上記の1.のように、現在のNuGet実装*.SqlServerに依存させることで、コードをコンパイルすることができました。*.Coreだから今、私は開発を続けることができます。これを本番環境で使用したいとは思いませんが、オブジェクトの配置に関して小さな変更を加えるだけで済みましたが、それは良いアプローチではないと思います。したがって、Owinのアプローチに関する私の質問は、私が採用したアプローチが適切であると誰かが私に納得させることができない限り、依然として有効です。

ありがとう、ザック

4

1 に答える 1

1

簡潔な答え:

うまくいけば、これがこの問題を抱えている他の人の助けになるでしょう (少なくとも 1 人はいると思います!): 私が尋ねた質問は、投稿の数時間後に NuGet で SignalR が更新されたため、タイミングが非常に悪かったようです。バージョン 1.0.0-rc1。したがって、私と同じ問題を抱えている人には、パッケージをアップグレードしてください。

詳細:

インストール後、リファレンスを見ると、リファレンスがあることに気付くでしょうMicrosoft.AspNet.SignalR.SystemWeb。まだ掘り下げていないので、拡張メソッドを更新した後は正常に動作するため、これは*.Hosting.Commonandの代わりになると思います。*.Hosting.AspNetMapHubs( ... )

*.SystemWebまた、参照が依存していることにも注意しました*.Owin-したがって、Owin 参照は、SystemWeb ホスティングが基礎となる IIS/その他のサーバー実装から独立できるようにする抽象化レイヤーとして使用されていると思います。

参照に関しては、ローカルでコンパイルするために.SqlServer、NuGet バージョンに対してバージョンをコンパイルする必要があります。*.Core私は今のところそれで作業するつもりであり、近い将来、プロジェクト チームが NuGet で動作するバージョンをリリースすることを願っています。

現実的な代替手段は、Redis をミックスに投入する必要があることをチームに納得させることです。他のプロジェクトで Redis を使用したことがありますが、パフォーマンスを考慮すると、これは良いオプションだと思いますが、Linux が必要になるため、問題が発生する可能性があります。 .ネットチーム...

于 2012-12-14T10:55:37.853 に答える