我想制作我的第一个WCF服务,但我不确定如何构建它。
serivce将接受从我的数据库中检索不同类型项目的请求:
List<Product> getProducts()
List<Module> getModules(Product)
List<Releases> getReleases(Product)
List<Feature> getFeatures(Product,Module)
//many more types of items to get etc...
//and then the equivalent functions to update those item types back in the database...
那么我应该将所有这些作为单一服务合同实施吗?
[ServiceContract]
public interface IMyService{}
public class MyService : IMyService{}
我理解这种方式我只需要托管一项服务,但是这会因为交通繁忙而陷入困境,试图为很多人提供所有可能的请求吗?
或者我应该为每种类型的项目制定不同的服务合同,并且每个项目都是单独实施的,这样我就可以在不同的机器上托管它们,以减少交通繁忙时间的不良性能?
[ServiceContract]
public interface IMyProductService{}
public class MyProductService : IMyProductService{}
[ServiceContract]
public interface IMyModuleService{}
public class MyModuleService : IMyModuleService{}
[ServiceContract]
public interface IMyUserService{}
public class MyUserService : IMyUserService{}
... etc etc ...
答案 0 :(得分:1)
我会完成所有合同的单一实施。类似的东西:
public interface IUserService{}
public interface IYourModuleService{}
public interface IYourProductService{}
public class YourService : IUserService, IYourModuleService, IYourProductService{}
这样你也可以控制你的客户只使用他们需要的合同,而且(除非你期望大量的)你的实施设计应该是任何瓶颈的第一个停靠点,而不是合同设计。
此外,您可以使用开箱即用的所有WCF工具来控制音量和实例等,以简化您的流程。
简而言之 - 单一实施,多项服务合同。