任何人都有一个适用于服务代理类的命名策略吗?
例如,如果我在两个项目中获得三个Web服务,如下所示:
XWs
AService.asmx
YWs
BService.svc
CService.svc
什么用作服务参考名称& AService
,BService
和CService
?
一般来说,我想在代理名称/命名空间中表示所使用的东西不是具体的类,而是代表一个代理 - 所以它不会与具体类的使用冲突[并强制使用别名或命名空间限定的类名],所以我们并没有隐藏跳跃发生的事实(我猜Wcf服务代理生成器的默认后缀包括客户端)。同样重要的是,它处理一个人正在编写一个包装/垫片服务的情况,该服务将一组[sub]调用转发给另一个引用的服务。
我使用了各种样式(添加Ws
,ServiceProxy
,Ref
或Proxy
后缀?使用ServiceName.
进行前缀),但从未完全使用对他们很满意。
什么对你有用?任何样式指南都引用命名样式?
编辑:虽然Cheeso的答案涵盖了我的大部分问题,但我仍然有兴趣听取答案:
答案 0 :(得分:2)
我最初使用ServiceName 代理和ServiceName SvcProxy 等名称。但是,和你一样,我对这些名字并不是特别满意,因此我没有坚持下去。现在我只使用ServiceName 服务或ServiceName Svc 。
您想要与该类用户进行通信的关键是该类是代理吗?你所做的区别 - 在代理类和具体类之间 - 似乎是适用和短吻鳄。具体的反面是抽象的,不是吗?事实上,由svcutil.exe生成的代理类是具体的。
使用命名约定,我认为您正在尝试指示代理类与远程服务进行通信。 (当我们将其称为“代理”时,我们的意思是表明它位于某些东西之前,在这种情况下是远程服务。)如果是这种情况,那么为什么ServiceName 服务或ServiceName < strong>连接,还是沿着类似的线?与System.Data.OleDb.OleDbConnection或System.Data.SqlClient.SqlConnection类似。
我自己选择的命名约定与此一致。它表示该类表示服务,假定该服务是远程的。我并不在乎强调这是一个代理到服务的事实。出于实际目的,它是一项服务是关键。
答案 1 :(得分:1)
我也在这里探索各种选择。我刚读过Miguel Castro的this article,他建议将服务,服务主机,数据合同和服务合同分开,我主要是在决定是否应该将所有服务合同保存在单独的合同命名空间中或让那些存在于每个服务名称空间中将它们分离到自己的命名空间的原因是,如果其他服务使用它们,则它们处于更中立的位置。
例如:
companyname.services.contracts.service1contract
companyname.services.service1
或者这个:
companyname.services.service1
companyname.services.service1contract