C#OAuth 2.0库-如何实现域模型

C#OAuth 2.0库-如何实现域模型,c#,oauth,oauth-2.0,C#,Oauth,Oauth 2.0,OAuth2.0规范变得越来越稳定(http://tools.ietf.org/html/draft-ietf-oauth-v2)我将为一个内部项目实现C#OAuth 2.0库。我想听听关于如何为图书馆实施清晰领域的意见。主要关注点是: 如何命名类,规范中描述具体概念的每一个或大多数关键字是否都应划分为单独的类 如何命名名称空间,规范中讨论的每一个主要主题是否都应该成为一个单独的名称空间(身份验证、服务器、客户端、安全性等) 服务器和客户机资源应该如何建模(作为类内的属性或内部类) 还有更多我

OAuth2.0规范变得越来越稳定(http://tools.ietf.org/html/draft-ietf-oauth-v2)我将为一个内部项目实现C#OAuth 2.0库。我想听听关于如何为图书馆实施清晰领域的意见。主要关注点是:

  • 如何命名类,规范中描述具体概念的每一个或大多数关键字是否都应划分为单独的类
  • 如何命名名称空间,规范中讨论的每一个主要主题是否都应该成为一个单独的名称空间(身份验证、服务器、客户端、安全性等)
  • 服务器和客户机资源应该如何建模(作为类内的属性或内部类)
  • 还有更多我会在他们出现时列出
任何有过在规范之外创建LIB(如许多IETF规范)的实际经验的人都会大有裨益。指出具有优秀规范实现的lib也是非常有帮助的,可以作为指导


编辑:签出了DotNetOAuth CTP,但显然他们没有提供一个干净的模型作为灵感来源。

您可能走对了方向。一般来说,类和属性的名称应该主要遵循规范,并且应该在XML文档中包含指向规范的链接。通过匹配名称,熟悉该标准的人员可以更容易地理解代码在做什么

我强烈建议在整个项目中包含单元测试。这不仅有助于维护每个构建的完整性,而且还会暴露出不可用的区域。例如,如果您发现自己必须使用错综复杂的类和方法来简单地请求某些内容的身份验证,那么您需要对其进行重构,以便对库的使用者更方便

基本上,您的优先级应按以下顺序排列:

  • 工作代码
  • 易于使用
  • 文件
  • 符合规格
  • 除此之外,您可以根据自己的喜好自由实施。您可能会注意到,有些域有大量不同的库,它们以不同的方式完成相同的任务。这是一件好事,因为不同的人喜欢不同的东西。有些人会想要一个反映规范的库,而另一些人则希望使用一个具有良好文档的库,而这些文档可能很难使用。其他人只是想要一些只需要几行代码就可以工作的东西,而不是碍事。这在很大程度上取决于你对此事的看法。你不能让所有人都满意,但只要选择一条路,然后跟着它跑就行了


    也就是说,我建议不要使用过多的名称空间。对人们来说,做一个
    包含MyOpenAuth
    比包含3个不同的名称空间要容易得多。在看起来合乎逻辑的地方使用它们,但一般来说,开放身份验证的概念可以被视为它自己的主题域(在单个名称空间的保护伞下)。但是,这取决于你。

    你可能在正确的轨道上。一般来说,类和属性的名称应该主要遵循规范,并且应该在XML文档中包含指向规范的链接。通过匹配名称,熟悉该标准的人员可以更容易地理解代码在做什么

    我强烈建议在整个项目中包含单元测试。这不仅有助于维护每个构建的完整性,而且还会暴露出不可用的区域。例如,如果您发现自己必须使用错综复杂的类和方法来简单地请求某些内容的身份验证,那么您需要对其进行重构,以便对库的使用者更方便

    基本上,您的优先级应按以下顺序排列:

  • 工作代码
  • 易于使用
  • 文件
  • 符合规格
  • 除此之外,您可以根据自己的喜好自由实施。您可能会注意到,有些域有大量不同的库,它们以不同的方式完成相同的任务。这是一件好事,因为不同的人喜欢不同的东西。有些人会想要一个反映规范的库,而另一些人则希望使用一个具有良好文档的库,而这些文档可能很难使用。其他人只是想要一些只需要几行代码就可以工作的东西,而不是碍事。这在很大程度上取决于你对此事的看法。你不能让所有人都满意,但只要选择一条路,然后跟着它跑就行了


    也就是说,我建议不要使用过多的名称空间。对人们来说,做一个
    包含MyOpenAuth
    比包含3个不同的名称空间要容易得多。在看起来合乎逻辑的地方使用它们,但一般来说,开放身份验证的概念可以被视为它自己的主题域(在单个名称空间的保护伞下)。但是,这取决于你。

    回答得好。如果有更多在规范和领域模型方面有专业知识的人写下他们的意见,那就太好了。回答得好。如果有更多在规范和领域模型方面有专业知识的人写下他们的意见,那就太好了。。