私はAutofac
を使用して知っていますが、WCF
サービスをホストすることは可能です。方法を逆転するのはどうですか? Autofac
を使用してWCF
サービスを利用できますか?私はクライアント側を意味します。はいの場合、どのように行うことができますか?Autofacを使用してWCFサービスを使用するには?
4
A
答えて
5
http://code.google.com/p/autofac/wiki/WcfIntegration#Clientsをご覧ください。 ChannelFactory<IYourServiceContract>
を登録してバインディング設定を登録し、チャネル作成を登録するだけです。 UseWcfSafeRelease()を呼び出すことを忘れないでください。
2
WCF integration wiki pageの最初のセクションの手順に従うことをお勧めします。
サービスインスタンスのリリース時にUseWcfSafeRelease
がICommunicationObject.Close()
を呼び出すという唯一の注意点があります。私の見解では、Web呼び出しがすべてのバッファを完全に処理し、場合によっては(Silverlightの)UIスレッドをブロックするまでブロックするので、これは悪いことです。私はICommunicationObject.Abort()
に電話するほうがよいでしょう。なぜなら、コンポーネントインスタンスをリリースすれば、そのプロセスはもう必要ないからです。あなたはより多くのそれを好きならば、あなたはきっとAutofacの内蔵クライアント側の統合コードを使用することができますが
/// <summary>
/// Extend the registration syntax with WCF-specific helpers.
/// </summary>
public static class RegistrationExtensions
{
/// <summary>
/// Dispose the channel instance in such a way that exceptions
/// </summary>
/// <typeparam name="TLimit">Registration limit type.</typeparam>
/// <typeparam name="TActivatorData">Activator data type.</typeparam>
/// <typeparam name="TRegistrationStyle">Registration style.</typeparam>
/// <param name="registration">Registration to set release action for.</param>
/// <returns>Registration builder allowing the registration to be configured.</returns>
/// <remarks>This will eat exceptions generated in the closing of the channel.</remarks>
public static IRegistrationBuilder<TLimit, TActivatorData, TRegistrationStyle>
UseWcfSafeRelease<TLimit, TActivatorData, TRegistrationStyle>(
this IRegistrationBuilder<TLimit, TActivatorData, TRegistrationStyle> registration)
{
if (registration == null) throw new ArgumentNullException("registration");
return registration.OnRelease(CloseChannel);
}
static void CloseChannel<T>(T channel)
{
var disp = (IClientChannel) channel;
disp.Abort();
}
}
:それは言った、私はRegistrationExtensions classの次のバージョンを使用します。
0
@Pavel Gatilov 私は反射
private static void CloseChannel<T>(T channel)
{
IClientChannel channel2 = (IClientChannel) channel;
try
{
if (channel2.State == CommunicationState.Faulted)
{
channel2.Abort();
}
else
{
channel2.Close();
}
}
catch (TimeoutException)
{
channel2.Abort();
}
catch (CommunicationException)
{
channel2.Abort();
}
catch (Exception)
{
channel2.Abort();
throw;
}
}
関連する問題
- 1. Entity Frameworkを使用したWindowsサービス付きAutofac + WCF +自己ホスト
- 2. jqueryを使用してWCFサービスを使用するには?
- 3. jQueryを使用してWCFサービスを使用しています
- 4. Visual Basic 6を使用してWCFサービスを使用する
- 5. AndroidでSSLを使用してWCFサービスを使用する
- 6. WP7はWCFサービスを使用します
- 7. 使用して、複数のWCFサービスは
- 8. Autofacを使用したWCFサービスでの作業単位の実装
- 9. Javaで安心してwcfサービスを使用するには?
- 10. PHPのパラメータとしてdataContractを使用してWCFサービスを使用する
- 11. wcfサービスとカスタムコンフィグレーションパスを使用
- 12. WCFサービスを使用してMSMQにメッセージを送信する
- 13. WCFサービスにcurlを使用してパラメータをPOSTする方法
- 14. 入力オブジェクトとしてカスタムオブジェクトを使用したWCFサービスを使用する
- 15. WCF Autofac Containerをn-tierアーキテクチャの別のプロジェクトレベルで使用する
- 16. WCFサービスでFsrmQuotaManagerを使用する
- 17. WCFサービスを使用するWMI
- 18. IdentityPrincipalを使用するWCFサービスのテスト
- 19. NamedPipe WCFサービスを使用するとCommunicationObjectForted
- 20. WCFサービスでLoaderOptimizationAttributeを使用する
- 21. WCFサービスを使用するNinject Diバインディング
- 22. IronPythonを使用してWCFサービスに接続する方法
- 23. IISを使用し、WCFを使用しない基本HTTPサービス
- 24. C#ASP.NET MVCを使用してWCF Restサービス(JSON)を使用するMVC
- 25. JQueryを使用してWCFサービスを使用する場合のmaxJsonLength
- 26. JMeterを使用してWCFサービスを呼び出す方法は?
- 27. コンソールアプリケーションを使用したWCFサービス
- 28. WCFサービスを使用したFacebook C#SDK
- 29. .net SSLを使用したWebサービス。 wcf?
- 30. soap1.2を使用したWCFサービス
を経由して抽出し、あなたが本当に反射必要ですか? ;-) https://github.com/autofac/Autofac.Wcf/blob/master/src/Autofac.Integration.Wcf/RegistrationExtensions.cs –