使用WCF Webservice进行引用

时间:2016-02-27 20:20:28

标签: c# .net web-services wcf

我以前使用过Web服务并理解这个概念。但是现在我已经建立了一个WCF Web服务,但我对它的使用有疑问。 (在如何设置教程中。)

我设置了以下内容:

  • WCF服务库(称为CalculatorService)
  • 服务主机(称为CalculatorServiceHost)
  • 服务代理(称为CalculatorServiceProxy,正在使用ClientBase)
  • 服务客户端(称为CalculatorServiceClient)

我如何理解如下;

  1. 服务库包含可在Web服务中使用的服务/对象。让我们说这是一个添加方法的计算器。
  2. 主机使该类的功能可供客户端使用。
  3. 代理从客户端向配置的端点发送和接收消息。
  4. 客户端可以通过代理从服务中调用函数。
  5. 本教程按如下方式设置代理:

    public class MyCalculatorServiceProxy : ClientBase<ICalculator>, ICalculator {
        public int Add(int num1, int num2){
            return base.Channel.Add(num1, num2);
        }
    }
    

    这意味着在Proxy中我必须至少引用包含ICalculator的程序集。如果缺少对同一程序集的引用,客户端也会抱怨没有引用该接口。

    在本教程中,继承接口的接口和类/服务位于同一个程序集中。因此,在客户端引用接口的程序集意味着您还可以创建“Calculator”类的实例,甚至不需要WCF服务来调用这些函数。

    这是否意味着您始终需要两个具有WCF服务的程序集。一个有接口,一个有类/服务?

    如果我错了或者有人有其他信息/评论,请纠正我。

1 个答案:

答案 0 :(得分:0)

  

@Tim但我想知道的是,如果你引用一个程序集   服务合同和实施。为什么要使用服务   web服务通过代理。如果你可以立即调用这些功能   通过另一个集会的参考?

如果您这样做,那么您可以让该服务的每个可能客户端与您的数据库进行通信,而不是让一个服务与您的数据库通信(例如)。你到处都有连接字符串。如果需要修改服务代码,则必须将更新部署到更多应用程序。您将失去安全性,可伸缩性和可维护性。

但这对于编写单元和集成测试非常有用。