SignalR を使用する既存のデータベースと Web アプリケーション用の実行可能な CI/デプロイ プロセスを開発しようとしています。アプリケーション アーキテクチャは非常に複雑で、複数のコンポーネントがデータベースの変更を監視しています。
データ層アプリケーション フレームワーク (DACFx) を使用して DACPAC ファイルを展開し、登録プロセスを使用してデータベース スキーマへのプロセス外の変更を検出できるようにしたいと考えています。現時点では、SignalR がデータベースを変更するため、これは不可能です。
SignalR テーブルをスキーマに手動で追加することなく、データ層アプリケーションで SignalR を正常に使用できるかどうかを判断しようとしています。
次のようなSignalRコードを使用する各コンポーネントの Startup.cs があります。
[assembly: OwinStartup(typeof(MyNamespace.Startup))]
namespace MyNamespace
{
public partial class Startup
{
public void Configuration(IAppBuilder app)
{
var connectionStringName = ConfigurationManager.AppSettings["SignalR.DatabaseInstanceName"] ?? "MyApp";
var connectionstring = ConfigurationManager.ConnectionStrings[connectionStringName].ConnectionString;
var sqlScaleOutConfiguration = new SqlScaleoutConfiguration(connectionstring);
GlobalHost.DependencyResolver.UseSqlServer(sqlScaleOutConfiguration);
app.MapSignalR();
}
}
}
また、私の Web.config または app.config には、メイン アプリケーションとは別のデータベースを指す "SignalR" 接続文字列があります。たとえば、アプリケーション データの場合は "MyApp"、SignalR データの場合は "SignalR" です。
私の理解では、この方法で SignalR を構成すると、次のものが作成されます。
- 接続の追跡に使用されるデータベース テーブル。
- データベースおよび関連するクリーンアップ SP へのサービス サブスクリプション。
私が抱えている問題は、メイン アプリケーション データベースにデータベース テーブルが作成されており、SignalR がサービスの登録を解除するための API を提供していないように見えることです。
私はこれを正しく理解していますか - SignalR はサービス サブスクリプションを作成していますか、それとも別のものですか?
何が起こっているのですか - 構成が無視されるのはなぜですか?
これを洗練された方法でクリーンアップすることは可能ですか?それとも、展開中にサービス サブスクリプションを手動で削除する必要がありますか?