尝试将我的服务层公开为WCF

尝试将我的服务层公开为WCF,wcf,wcf-binding,Wcf,Wcf Binding,我的服务层、实体和DTO位于一个称为CCL.Data的分离程序集中 问题是: 我的所有应用程序都直接使用接口和IoC引用服务层 例如,我的CCL.Data程序集中有一个名为ICCustomerService的接口,它依赖于依赖于MyContext的ICCustomerRepository。我的所有应用程序都引用ICCustomerService来调用其方法。。。。。。。到目前为止没有问题 所以我创建了一个WCF项目。。。。正在引用此项目中的CCL.数据 我创建了一个新的服务,但在下面的例子中,我

我的服务层、实体和DTO位于一个称为CCL.Data的分离程序集中

问题是:

我的所有应用程序都直接使用接口和IoC引用服务层

例如,我的CCL.Data程序集中有一个名为ICCustomerService的接口,它依赖于依赖于MyContext的ICCustomerRepository。我的所有应用程序都引用ICCustomerService来调用其方法。。。。。。。到目前为止没有问题

所以我创建了一个WCF项目。。。。正在引用此项目中的CCL.数据

我创建了一个新的服务,但在下面的例子中,我需要将应用程序中调用ICCustomerService的所有点更改为WCFCCustomerServiceClient,是否存在一种更好的方式而不会对我的项目造成重大影响

[ServiceContract] public interface IWCFCustomerService { [OperationContract] CustomerDTO GetCustomerById(int id); } public class WCFCustomerService : IWCFCustomerService { ICustomerService _customerService; public WCFCustomerService() { MyContext context = new MyContext(); ICustomerRepository customerRep = new CustomerRepository(context); _customerService = new CustomerService(customerRep); } public CustomerDTO GetCustomerById(int id) { return _customerService.GetCustomerById(id); } } Tks,
William

您需要重新定义IWCFCustomerService而不是ICustomerService吗?不可能只向原始ICCustomerService接口添加ServiceContract属性吗?它们将被非WCF代码忽略?这确实让您对ServiceModel产生了依赖性,但我看不到解决方法


还要注意,如果您使用ServiceReference生成代理代码,那么生成的代码将在不同的命名空间中包含一个your服务接口,以便在客户端使用。值得注意的是,如果您有一个代理而不是代理实现,但仍然可以从dll或编译到您的客户机中使用组织接口定义,那么您可能无法使用该版本的接口,这可能会很烦人。

我会这样做。我不希望我的程序集依赖于System.ServiceModel。。。。但我别无选择……谢谢你我转载了这条评论作为回答,因为它似乎有帮助!