任何人都有适用于服务代理类的命名策略?
例如,如果我在两个项目中获得三个 Web 服务,如下所示:
XWs
AService.asmx
YWs
BService.svc
CService.svc
什么将用作
AService
的服务引用名称和命名空间, BService
和 CService
?一般来说,我希望代理名称/命名空间中的某些内容表明正在使用的东西不是具体的类,而是代表一个代理 - 两者都不会与具体类的使用发生冲突[并强制使用别名或命名空间-qualified class names],因此我们不会隐藏发生跳跃的事实(我猜 Wcf 服务代理生成器的默认后缀 Client 涵盖了这一点)。同样重要的是,它处理的情况是,一个人正在编写一个包装器/垫片服务,该服务将一组 [子] 调用转发到另一个引用的服务。
我使用过各种样式(添加
Ws
、 ServiceProxy
、 Ref
或 Proxy
后缀?以 ServiceName.
为前缀),但从未对它们感到满意。什么对你有用?任何风格指南都引用了命名风格?
编辑:虽然 Cheeso 的回答涵盖了我的大部分问题,但我仍然有兴趣听到以下问题的答案:
最佳答案
我最初使用的名称是 ServiceName 代理和服务名称 SvcProxy .但是,和你一样,我对这些名字也不是特别满意,所以我没有坚持。现在我只是求助于 ServiceName 服务或服务名称 Svc .
您想向类的用户传达的关键是该类是代理吗?您所做的区分 - 代理类和具体类之间 - 似乎适用和鳄鱼。具体的反面是抽象的,不是吗?而 svcutil.exe 生成的代理类实际上是具体的。
使用命名约定,我认为您试图表明代理类与远程服务进行通信。 (当我们称它为“代理”时,我们的意思是表示它位于某个东西的前面,在这种情况下是远程服务。)如果是这种情况,那么为什么不是 ServiceName 服务或服务名称 连接 ,或沿着类似的路线?像 System.Data.OleDb.OleDbConnection 或 System.Data.SqlClient.SqlConnection。
我自己选择的命名约定符合这一点。它表示该类代表一个服务,该服务被假定为远程的。我不太在意强调它是代理到服务的事实。出于实际目的,它是一项服务这一事实是关键。
关于Wcf 服务代理名称/命名空间命名策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/925453/