現在、SQL Server Service Brokerでメッセージを待つC#で書かれたWindowsサービスがあり、受信時にメッセージで渡された詳細を持つWebサービスメソッドが呼び出されます。SQLCLRストアドプロシージャにWebサービス参照インスタンスを保持する方法は?
私は、私は非常に簡単であることがわかってきた直接Webサービスを呼び出すSQLCLRストアドプロシージャ、でこれを置き換えたいです。私は内部の活性化を使用してこれを呼び出すことができます。
しかし、それはそれぞれの方法のためのWebサービスの新しいインスタンスを作成する必要がある、との経験から、私は、これはある程度の時間がかかることがわかりました。 Windowsサービスでは静的クラスで遅延インスタンス化を使用して作成しますが、静的フィールドを使用してSQLCLRに情報を格納することはできません。
このWebサービスリファレンスを維持する方法はありますか?編集
:ここには私が存続したいシングルトンを参照怠惰instantationコードです:
static class WsSingleton
{
static MWs.MWS mWS = null;
public static MWs.MWS GetMWS()
{
if (mWS == null)
{
mWS = new MWs.MWS();
mWS.Credentials = new System.Net.NetworkCredential("user", "password", "domain");
}
return mWS;
}
}
それはそれぞれの方法のためにWebサービスの新しいインスタンスを作成する必要がある
この情報は役に立ちましたか? http://sqlblog.com/blogs/adam_machanic/archive/2006/07/12/using-static-properties-in-sqlclr-udts.aspx –
@AdamHouldsworth投稿する前にその記事を見ましたが、それはその制限を明らかにしましたが、溶液を与えなかった。 –
解決策は、参照を静的な読み取り専用にすることです。初期化後に書き込み可能ではないため、SQLの問題は満たされます。 –