Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我应该在服务堆栈服务模型中使用什么命名约定?_C#_<img Src="//i.stack.imgur.com/WM7S8.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">servicestack - Fatal编程技术网 servicestack,C#,servicestack" /> servicestack,C#,servicestack" />

C# 我应该在服务堆栈服务模型中使用什么命名约定?

C# 我应该在服务堆栈服务模型中使用什么命名约定?,c#,servicestack,C#,servicestack,我们正在考虑在下一个项目中使用ServiceStack;在查看示例时,我注意到,没有通用的命名约定。 实体:电影 请求:电影 答复:MovieResponse 所有操作都是如此。 实体:答案 请求:答案 答复:答复结果 实体:用户? 请求:GetUsers 响应:GetUsersResponse (看到类名以动词开头有点奇怪) 所以,也许你已经想出了一些聪明的命名约定,并愿意与大家分享。 另外,在服务栈上是否有更大的开源项目,我可以看看他们是如何组织他们的服务模型的?我目前使用第三个选项,

我们正在考虑在下一个项目中使用ServiceStack;在查看示例时,我注意到,没有通用的命名约定。

实体:电影
请求:电影
答复:MovieResponse

所有操作都是如此。

实体:答案
请求:答案
答复:答复结果

实体:用户?
请求:GetUsers
响应:GetUsersResponse

(看到类名以动词开头有点奇怪)

所以,也许你已经想出了一些聪明的命名约定,并愿意与大家分享。
另外,在服务栈上是否有更大的开源项目,我可以看看他们是如何组织他们的服务模型的?

我目前使用第三个选项,其中请求以动词开头。原因是我的实现并不完全基于典型的REST风格URL,我广泛使用c#客户端。在这个场景中,动词只是有助于清楚地识别服务的目的

除了我的特殊情况,我会同意

实体:电影 要求:电影 回答:MovieResponse

我使用BREAD1和动词实体,其样式如下:

名称空间为“实体”,则:

  • 浏览量
  • 浏览实体响应
  • 浏览实体服务
  • 加法
  • 附加响应
  • 附加服务
注意,形式实际上是[动词][实体][角色]

  • 动词:浏览、阅读、编辑、添加、删除(面包)、验证、提取(如其他操作)

  • 实体:这是复数或单数,取决于受影响/检索实体的正常数量。(我并不完全否认像DeleteEntity这样的服务可能一次删除多个实体,但如果将其放在一个“单数”名称DTO/服务中,则应仔细考虑。它可以始终跟随复数DeleteEntity。)

  • 角色:(无)=请求DTO,响应DTO,服务=服务

  • 名称空间:总是复数。这避免了与实体(单数)等DAL类的冲突

对于面包绑定(端点始终为复数,它表示一个集合):

  • /实体获取-浏览实体
  • /实体/Id获取-readentity
  • /entities/Id POST-EditEntity(未出售;未研究补丁支持)
  • /实体后补遗
  • /实体/Id删除-删除实体
杂项。具有约束力的准则:

  • /entities/Id/verb POST/GET-VerbEntity(即ValidateEntity),仅当幂等元时获取
  • /entities/u/verb POST/GET-verbentiy,适用于没有标识资源的任意(但特定)实体。这种情况很少见,但用于验证尚未保存的实体等情况。它允许模式以其他方式保持一致
  • /entities/verb POST/GET-VerbEntities,适用于集合,但不适用于任何特定资源
  • /实体/Id/items/。-与具有给定Id的实体相关的子/相关端点遵循前面讨论的相同模式

不幸的是,面包似乎是一个边缘术语。从:

CRUD的另一个变体是BREAD,是“浏览、阅读、编辑、添加、删除”的首字母缩写


我更喜欢它的声音,而且它有一个单独的浏览操作。

以前从未听说过BREAD,所以CRUD似乎有扩展名rough-E用于Enumerate,这是一个非常好的答案。