我创建了wcf服务,我想为所有功能创建单一服务。
所以我使用了部分类并试图像这样实现它。
文件名:-IMainService.cs
[ServiceContract]
public interface IMainService
{
[OperationContract]
void DoWork();
}
文件名:-MainService.svc
public partial class MainService : IMainService
{
public void DoWork()
{
throw new NotImplementedException();
}
}
文件名:-IProductService.cs
[ServiceContract]
public interface IProductService
{
[OperationContract]
void GetProducts();
}
文件名:-ProductService.svc
public partial class MainService : IProductService
{
public void GetProducts()
{
throw new NotImplementedException();
}
}
当我在应用程序中引用该服务时,我可以看到两个客户端,MainServiceClient& ProductServiceClient。我猜这些名称基于文件名,并且都包含属于那些文件的方法,例如:MainServiceClient有Dowork& ProductServiceClient有GetProducts。
我相信自己错了,有人可以建议我如何实现单一服务理念。
编辑:
答案 0 :(得分:4)
我只想创建一个包含其他服务接口的新服务接口。然后服务类实现连接接口。
类似的东西:
public interface IJoinedService : IProductService, IMainService
{
}
public class JoinedService : IJoinedService
{
private ProductService _productService;
public void GetProducts()
{
_productService.GetProducts();
}
}
答案 1 :(得分:0)
为什么不是这样的:
public class MainService : IProductService, IMainService
{
MainService mMain = new MainService();
ProductService mProduct = new ProductService();
public void ImplementedMainServiceFunction()
{
mMain.DoSomething();
}
public void ImplementedProductServiceFunction(string s)
{
if (!string.IsNullOrEmpty(s))
mProduct.DoSomething();
}
}
像这样,有一个实现类负责参数检查,实际的逻辑可以假设参数已被检查,已经给你更清晰/更短的代码。逻辑也分为多个文件。