RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 1086251
Accepted
Timofey Melentev
Timofey Melentev
Asked:2020-02-23 05:22:18 +0000 UTC2020-02-23 05:22:18 +0000 UTC 2020-02-23 05:22:18 +0000 UTC

同一解决方案的不同项目之间的交互

  • 772

有一个常规的 ASP.NET Core MVC 应用程序,其中添加了 Identity,通过服务(存储库模式)、一个 EmailSender 实现和几个控制器处理数据库实体,这些控制器简单地从数据库和注册页面路由到多个模型的视图(身份)。我是否正确理解整个服务器部分(使用数据库,包括邮件和注册)应该放在同一解决方案中的一个单独的新项目中,并且不包含视图,而只包含 API?两个独立的项目应该如何相互沟通?请求是否只是通过 fetch 从客户端发送到已发布 API 中方法的 url?也就是说,例如,我访问 somesite.com/phones,进入一个页面,该页面应该包含使用 fetch('somesite2api.com/getPhones' 获取的数据库中的数据 )? 如果这一切已经在某处描述过,请至少给出正确的名称以便谷歌搜索,因为我什至无法正常表述。我刚刚用HttpClient找到了一些东西,但我不明白是不是它?

c#
  • 1 1 个回答
  • 10 Views

1 个回答

  • Voted
  1. Best Answer
    A K
    2020-02-23T17:04:18Z2020-02-23T17:04:18Z

    我推荐阅读 Martin Fowler 的《清洁架构》一书,很多问题都会自己回答(奖励 - 思考新的好问题)。

    在您提出问题的形式中,答案是微不足道的:他们确实如此,因此没有“最佳”选项,您需要专注于任务,并且作为专业人士,您应该能够两种选择,并能够理解在哪里以及在什么条件下一种更好或另一种选择。

    我最近回答 ( 1 , 2 ) 如果您打算将项目的某些单独部分(最常见的是:合同)移交给另一个团队以包含在代码中,则可能需要单独的项目,因此如果您单独工作,相关项目是没想到 - 然后在一个项目中完成所有事情,这将减少您的开发时间。

    Fowler 在部署单元方面考虑了拆分项目时要考虑的另一点。如果您有一个多层(N 层)架构,那么请问自己以下问题:您的 Web 服务器组件是否与数据库组件位于同一台服务器上?邮件工作?如果在不同的服务器上——那么当然你必须分成不同的组件,然后不同的项目将通过 http (HttpClient)、wcf、gRPC 等进行通信。当然(有一本关于这方面的书)这样的调用将比同一服务器内的调用花费更多,而这些调用又比来自相邻模块类的调用便宜。因此,从任务集开始,想想如何更容易解决你的问题。

    有一次,我开始分成几个项目。由于额外的开销,这显着延长了开发时间,此外,我经常不得不考虑要连接的最小包集才能使其工作(并且它立即发生并且没有立即工作,哦,我第一次受了苦!)原则上,当我学会做时 - 如果没有真正需要,我开始更频繁地在一个项目中雕刻所有东西,但起初它帮助我更清楚地看到建筑边界,以在简单的项目上练习这项技能,以免考虑复杂的项目。哪种方法更接近您取决于您​​的目标。

    我在 github 上为您提供了几个存储库示例,以便您不仅可以阅读答案,阅读书籍 - 还可以解析现成的解决方案。有来自编程界非常知名人士的优质项目,也有不太知名的项目:

    • https://github.com/djhmateer/3Commerce.git
    • https://github.com/gothinkster/aspnetcore-realworld-example-app.git
    • https://github.com/JasonGT/NorthwindTraders.git
    • https://github.com/jbogard/contosoUniversityDotNetCore-Pages
    • https://github.com/akmetainfo/WallyBackend

    并非所有人都坚持服务存储库方法,我手头的硬盘驱动器上的此类示例越来越少 - CQRS + Mediatr 上的示例越来越多,因此如果您需要,请随时查找您的示例。

    您还需要了解 github 上有大量的项目,我建议您磨练搜索和阅读他人项目以寻找有趣的解决方案的技能。是的,一开始会很困难,但后来,如果你动手,你可以立即看到不是具体的解决方案,而是立即了解架构、优缺点。

    因此,看项目,试着自己写,思考,训练!

    • 1

相关问题

  • 如何知道类中的方法是否属于接口?

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    如何从列表中打印最大元素(str 类型)的长度?

    • 2 个回答
  • Marko Smith

    如何在 PyQT5 中清除 QFrame 的内容

    • 1 个回答
  • Marko Smith

    如何将具有特定字符的字符串拆分为两个不同的列表?

    • 2 个回答
  • Marko Smith

    导航栏活动元素

    • 1 个回答
  • Marko Smith

    是否可以将文本放入数组中?[关闭]

    • 1 个回答
  • Marko Smith

    如何一次用多个分隔符拆分字符串?

    • 1 个回答
  • Marko Smith

    如何通过 ClassPath 创建 InputStream?

    • 2 个回答
  • Marko Smith

    在一个查询中连接多个表

    • 1 个回答
  • Marko Smith

    对列表列表中的所有值求和

    • 3 个回答
  • Marko Smith

    如何对齐 string.Format 中的列?

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5