【发布时间】:2014-01-15 17:01:12
【问题描述】:
我有十几个为 WCF 构建的服务类,例如:
public class BookingService : IBookingService
{
public void BookTheThing(int ThingID) { .. }
}
我们的目标是将这些类作为直接库(而不是 WCF)重用,并创建一个单独的服务库,以便我们保留和公开这些现有方法并添加新方法。以下是我根据有限的经验提出的两种可能性:
*Option#1 - 注入原始类并创建相同的方法来公开它的功能:
public class BookingServiceNew : IBookingServiceNew
{
public BookingServiceNew(IBookingService service) { _baseService = service; }
public void BookTheThing(int ThingId) { _baseService.BookTheThing(ThingId); }
public bool OurNewMethod1(int ThingId) { return true; }
public int OurNewMethod2(int ThingId) { return 1; }
}
*Option#2 - 继承原始服务类,它会自动将其方法公开为类的一部分,然后添加我们自己的东西
public class BookingServiceNew : BookingService, IBookingServiceNew
{
public bool OurNewMethod1(int ThingId) { return true; }
public int OurNewMethod2(int ThingId) { return 1; }
}
选项#1 似乎会有更多的代码和重复,必须为实现和接口中的每个方法创建一个存根。选项#2 似乎在客户端的依赖注入方面可能存在一些问题,其中针对 IBookingServiceNew 只会提供对 OurNewMethod1 和 OurNewMethod2 的访问。 同样,我提供的这些选项是基于我非常有限的经验,我希望您能就更好的方法/实践/模式提出想法和建议。
谢谢
【问题讨论】:
-
您介意评论一下为什么“与
IBookingServiceNew合作只会提供对OurNewMethod1的访问权限...”吗? (假设interface IBookingServiceNew : IBookingService)?
标签: c# wcf design-patterns