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

时间:2012-04-24 14:15:24

标签: wcf wcf-binding

我的服务层,实体和DTOS在一个名为CCL.Data的分区程序集中

问题:

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

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

所以我创建了一个WCF项目....在这个项目中引用了CCL.Data ....

我创建了一个新服务,但在下面这个案例中,我需要更改我的应用程序中调用ICUSTomerService到WCFCustomerServiceClient的所有点,是否存在更好的方法而不会对我的项目产生很大影响?


    [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);
        }

    }


韩国社交协会, 威廉

1 个答案:

答案 0 :(得分:0)

您是否需要重新定义IWCFCustomerService来代替ICustomerService?是不是只能将ServiceContract属性添加到原始ICustomerService接口(它们将被非WCF代码忽略)? (确实,这确实让你对ServiceModel有所依赖 - 但我看不出这种方法)。

另请注意,如果使用ServiceRefernce生成代理代码,则生成的代码将在不同的命名空间中包含您的服务接口以供客户端使用。值得注意的是,你不要轻易使用该版本的接口(如果你有代理而不是代理实现可能会很烦人),但仍然可以使用dll或编译到客户端的org接口定义。