代码之家  ›  专栏  ›  技术社区  ›  Ruben Bartelink

WCF服务代理名称/命名空间命名策略

  •  4
  • Ruben Bartelink  · 技术社区  · 16 年前

    有没有人有一个对服务代理类很好的命名策略?

    例如,如果在以下两个项目中为我提供了三个Web服务:

    XWs
      AService.asmx
    YWs
      BService.svc
      CService.svc
    

    将用作服务引用名称和命名空间的内容 AService , BService CService ?

    一般来说,我希望代理名称/命名空间中的某些内容表明正在使用的对象不是具体的类,而是代表一个代理-这两者都不会与具体类的使用冲突[并强制使用别名或命名空间限定的类名],因此我们不会隐藏发生跃点的事实(我猜是WCF SEservice proxy generator的默认后缀client覆盖了这个后缀)。同样重要的是,它处理这样的情况:编写一个包装器/填充器服务,将一组调用转发给另一个引用的服务。

    我使用了各种样式(添加 Ws , ServiceProxy , Ref Proxy 后缀?前缀与 ServiceName. 但从来没有完全满意过他们。

    什么对你很有效?是否有样式指南引用命名样式?

    编辑:尽管Cheeso的答案涵盖了我的大部分问题,但我仍然有兴趣听到以下问题的答案:

    1. 如上例所示的命名空间代理类策略
    2. 提到代理命名策略的样式指南
    2 回复  |  直到 15 年前
        1
  •  2
  •   Cheeso    16 年前

    我最初用的名字像servicename 代理 服务名 SVC代理 . 但是,像你一样,我对这些名字并不特别满意,因此我没有坚持使用它们。现在我只能求助于servicename 服务 或服务名 SVC .

    你想与该类的用户交流的关键是 类是代理 ?你在代理类和具体类之间所做的区分似乎适用于鳄鱼。混凝土的反面是抽象的,不是吗?而由svcutil.exe生成的代理类实际上是具体的。

    对于命名约定,我认为您试图指示代理类与远程服务通信。(当我们称之为“代理”时,我们的意思是指它站在某个东西前面,在本例中是指远程服务。)如果是这样,那么为什么不使用servicename呢? 服务 或服务名 连接 还是沿着类似的线?类似于system.data.oledb.oledbconnection或system.data.sqlclient.sqlconnection。

    我自己选择的命名约定与此一致。它表示类表示一个服务,该服务被假定为远程服务。我不太在乎强调它是一个代理服务的事实。实际上,它是一项服务是关键。

        2
  •  1
  •   Tone    15 年前

    我还在这里探索各种选择。我刚读 this article Miguel Castro和他建议将服务、服务主机、数据合同和服务合同分开,我主要是要决定是将所有服务合同保留在一个单独的合同名称空间中,还是让这些合同驻留在每个服务名称空间中。将它们分离到自己的名称空间的原因是,如果其他服务使用了它们,那么它们位于一个更中立的位置。

    例如:

    companyname.services.contracts.service1contract
    companyname.services.service1
    

    或者:

    companyname.services.service1
    companyname.services.service1contract