私はWindowsサービスでホストされているwcfサービスライブラリを持っています。 サービスメソッドへの呼び出しを傍受する必要があります。このような場合のために、このリンクで見ることができるようユニティ容器にWCFを登録することが示唆された私はどこまで理解できなかったCodeplex.IからUnity.WCFアセンブリによって、同様のアプローチを実装しようとしていますUnityコンテナでのWCFサービスの登録
http://weblogs.asp.net/fabio/archive/2009/03/24/inversion-of-control-with-wcf-and-unity.aspx
私のコンテナの設定やブートストラップをwcfサービスライブラリ(またはWindowsサービス)に入れてください。固体サンプル(溶液対)は提供されていません。
私のWindowsサービスのホスト
プライベートUnityServiceHost _serviceHost = NULL; プライベートreadonly UnityContainer _container;この場合
public Service() {
InitializeComponent();
_container = new UnityContainer();
_container.AddNewExtension<Interception>();
_container.RegisterType<ISecurityRepository, SecurityRepository>();
_container.Configure<Interception>().SetDefaultInterceptorFor<ISecurityRepository>(new TransparentProxyInterceptor());
}
protected override void OnStart(string[] args) {
//SecurityService
if (_serviceHost != null) {
_serviceHost.Close();
} else {
_serviceHost = new UnityServiceHost(_container, typeof(SecurityRepository));
_serviceHost.Open();
}
}
protected override void OnStop() {
//SecurityService
if (_serviceHost != null) {
_serviceHost.Close();
_serviceHost = null;
}
}
マイサービス契約
【のServiceContract(SessionMode = SessionMode.Required)] パブリックインターフェースISecurityRepository {
[OperationContract(IsInitiating = true)]
IList<vNavigationTree> GetNavigationTree(string ticket);
[OperationContract(IsInitiating = true)]
string GetSessionGuid(string userName, string IP, string machineName);
}
そのインターセプタは何をwork.Brieflyないと思われますWCFサービスがDIコンテナに登録され、サービスメソッドがインターセプトされるサンプルプロジェクトが必要です。