【发布时间】:2014-06-06 16:56:55
【问题描述】:
目前我的 UI 代码依赖于业务逻辑(二进制 dll)接口,其中实例是使用统一容器注入的。
未来的计划是,业务逻辑可能托管为具有相同接口的 WCF 服务。由于客户端代码取决于接口,因此不应进行任何更改。应从 WCF 注入实例。以下方法是正确的做法,还是有任何最佳做法可用?
public interface MyServiceContract
{
string GetData(int value);
}
public class Service1 : MyServiceContract
{
public string GetData(int value)
{
return string.Format("You entered: {0}", value);
}
}
public class ServiceFactory
{
//Get instance from WCF
public T GetWCFService<T>()
{
ChannelFactory<T> factory = null;
var binding = new BasicHttpBinding();
var address = new EndpointAddress("uri");
factory = new ChannelFactory<T>(binding, address);
var channel = factory.CreateChannel();
return channel;
}
//Get instance from Binary Reference
public T GetService<T>()
{
return UnityContainer.Resolve<T>();
}
}
public class Test
{
//calls binary reference method
private void Test()
{
var mysvc = new ServiceFactory().GetService<MyServiceContract>();
var resturnmessage = mysvc.GetData(9);
Console.WriteLine(resturnmessage);
}
//calls wcf method
private void Test2()
{
var mysvc = new ServiceFactory().GetWCFService<MyServiceContract>();
var resturnmessage = mysvc.GetData(9);
Console.WriteLine(resturnmessage);
}
}
【问题讨论】: