4

任何人都有适合服务代理类的命名策略?

例如,如果我在两个项目中获得三个 Web 服务,如下所示:

XWs
  AService.asmx
YWs
  BService.svc
  CService.svc

什么将用作 和 的服务参考名称和AService命名BService空间CService

一般来说,我希望代理名称/命名空间中的某些内容表明所使用的东西不是具体的类,而是代表一个代理 - 两者都不会与具体类的使用冲突[并强制使用别名或命名空间-qualified class names],因此我们并没有隐藏发生跃点的事实(我猜 Wcf 服务代理生成器的默认后缀 Client 涵盖了这一点)。同样重要的是,它处理编写包装器/垫片服务的情况,该服务将调用 [子] 集转发到另一个引用的服务。

我使用过各种样式(添加WsServiceProxy或后缀?前缀为) Ref,但从未对它们完全满意。ProxyServiceName.

什么对你有用?任何风格指南都提到了命名风格?

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

  1. 如上例所示的命名空间代理类的策略
  2. 提及代理命名策略的样式指南
4

2 回答 2

2

我最初使用 ServiceName Proxy和 ServiceName SvcProxy 之类的名称。但是,和你一样,我对这些名字并不是特别满意,因此我没有坚持下去。现在我只使用 ServiceName Service或 ServiceName Svc

您想与班级用户交流的关键是班级是代理吗?您在代理类和具体类之间所做的区别似乎适用于鳄鱼。具体的反面是抽象的,不是吗?而svcutil.exe生成的代理类,其实是具体的。

通过命名约定,我认为您试图表明代理类与远程服务通信。(当我们称它为“代理”时,我们的意思是表示它位于某物的前面,在这种情况下是远程服务。)如果是这样,那么为什么不是 ServiceName Service或 ServiceName Connection,或者类似的行呢?像 System.Data.OleDb.OleDbConnection 或 System.Data.SqlClient.SqlConnection。

我自己选择的命名约定符合这一点。它表示该类表示一个服务,假定它是远程的。我不太在意强调它是代理到服务的事实。出于实际目的,它是一项服务这一事实是关键。

于 2009-05-29T16:26:59.200 回答
1

我也在探索这里的选择。我刚刚阅读了 Miguel Castro 的这篇文章,他建议将服务、服务主机、数据合同和服务合同分开,我主要是想决定是否应该将所有服务合同保存在单独的合同命名空间中,还是让它们存在每个服务命名空间。将它们分离到自己的命名空间中的原因是,如果其他服务使用它们,它们将处于更中立的位置。

所以例如这个:

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

或这个:

companyname.services.service1
companyname.services.service1contract
于 2010-03-12T02:07:50.967 回答