WCF服务合同设计

时间:2012-08-10 21:03:05

标签: wcf

我想制作我的第一个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 ...

1 个答案:

答案 0 :(得分:1)

我会完成所有合同的单一实施。类似的东西:

public interface IUserService{}
public interface IYourModuleService{}
public interface IYourProductService{}
    public class YourService : IUserService, IYourModuleService, IYourProductService{}

这样你也可以控制你的客户只使用他们需要的合同,而且(除非你期望大量的)你的实施设计应该是任何瓶颈的第一个停靠点,而不是合同设计。

此外,您可以使用开箱即用的所有WCF工具来控制音量和实例等,以简化您的流程。

简而言之 - 单一实施,多项服务合同。