Questions tagged «services»

7
建立服务层有多重要?
我开始按3层(DAL,BL,UI)构建应用程序[它主要处理CRM,一些销售报告和库存]。 一位同事告诉我,我必须转向服务层模式,开发人员应从他们的经验中学到服务模式,这是设计大多数应用程序的更好方法。他说,将来以这种方式维护应用程序会容易得多。 就个人而言,我觉得它只是使事情变得更加复杂,我看不出有什么好处可以证明这一点。 这个应用程序确实有一个额外的小部分ui,它使用了一些(但只有少数)桌面应用程序功能,因此我确实发现自己在复制一些代码(但不很多)。仅仅由于某些代码重复,我不会将其转换为面向服务的,但是他说我还是应该使用它,因为总的来说,这是一个非常好的架构,为什么程序员如此热衷于服务? 我试图用谷歌搜索它,但是我仍然很困惑,无法决定该怎么做。

4
Web API身份验证技术
我们有一个asp.net MVC Web服务框架,用于为人们获取请求提供xml / json,但正在努力找出验证用户的最佳方法(对于使用javascript或OO语言进行编码的用户而言,快速,简便,琐碎)。这并不是说我们的数据是敏感数据或任何东西,我们只是希望用户注册,以便我们可以使用其电子邮件地址来通知他们更改和跟踪使用情况。 在我们先前的尝试中,我们在URI中使用了用户名,并且只需确保存在用户名并使用使用率来递增db表。这是超级基础,但我们会注意到人们使用demo作为用户名等,因此我们需要使其更加复杂。 有哪些身份验证技术可用?主要参与者使用/做什么。
26 security  api  web  services  rest 

3
REST端点为预见的更改进行规划的建议模式是什么
尝试为具有变更前瞻性的外部应用程序设计API并非易事,但预先考虑可以使以后的生活变得更轻松。我正在尝试建立一个方案,以支持将来的更改,同时通过保留先前的版本处理程序来保持向后兼容。 本文的主要关注点是对于给定产品/公司,所有定义的端点应遵循哪种模式。 基本方案 鉴于基本URL模板https://rest.product.com/我设计,所有的服务都位于下/api沿/auth和其他基于非休息终点如/doc。因此,我可以如下建立基本端点: https://rest.product.com/api/... https://rest.product.com/auth/login https://rest.product.com/auth/logout https://rest.product.com/doc/... 服务端点 现在是端点本身。关注度POST,GET,DELETE不是本文的主要目的,是对这些行为本身的关注。 端点可以分为名称空间和动作。每个动作还必须以支持返回类型或所需参数的基本更改的方式显示自己。 在注册用户可以发送消息的假设聊天服务中,我们可能具有以下端点: https://rest.product.com/api/messages/list/{user} https://rest.product.com/api/messages/send 现在添加版本支持,以支持将来可能会中断的API更改。之后我们既可以添加版本签名/api/或之后/messages/。给定send端点,我们可以为v1提供以下内容。 https://rest.product.com/api/v1/messages/send https://rest.product.com/api/messages/v1/send 所以我的第一个问题是,版本标识符的推荐位置是什么? 管理控制器代码 因此,现在我们已经确定需要支持以前的版本,因此需要以某种方式处理可能随着时间而弃用的每个新版本的代码。假设我们正在用Java编写端点,则可以通过包来管理它。 package com.product.messages.v1; public interface MessageController { void send(); Message[] list(); } 这样做的好处是,所有代码已通过命名空间分隔开,其中的任何重大更改都将意味着服务端点的新副本。这样做的不利之处在于,需要复制所有代码,并且希望对每个副本都应用/测试希望应用于新版本和先前版本的错误修正。 另一种方法是为每个端点创建处理程序。 package com.product.messages; public class MessageServiceImpl { public void send(String version) { getMessageSender(version).send(); } // Assume we have …


2
贫血域模型和域服务注入
所述贫血域模型被描述为由Martin Fowler在领域驱动设计的反模式。为了在域模型上具有业务逻辑,通常使用域服务。但是Vaughn Vernon认为将域服务注入域模型是有害的(请参阅“实施域驱动设计,第387页”)。 我认为这些意见是矛盾的,这是真的吗?如何兼顾这两点? 是注入域服务与贫血域模型和普通域服务相比真的富域模型吗?

13
Windows Services的实际用途是什么?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 4年前关闭。 已锁定。该问题及其答案被锁定,因为该问题是题外话,但具有历史意义。它目前不接受新的答案或互动。 我是使用Windows Services的新手。尽管我已经学会了在VS2010中创建Windows服务,但是我想知道一些使用Windows服务的实用方法? 我在考虑当前上下文的情况下尝试了谷歌搜索,只是找到了有关如何创建Windows服务的更多教程。 编辑赏金优惠: 所有的答案都很好,但我一直在寻找Windows服务及其含义的更多实际示例?这将帮助开发人员知道何时将其与案例研究一起使用是合适的。

4
微服务和数据复制
我正在构建一个新的应用程序,并且正在阅读有关微服务架构的信息。从开发,部署和生命周期管理的角度来看,体系结构本身很有意义。但是出现的一个问题是关于如何处理主数据。 例如,我有2个应用程序-例如销售应用程序和票务应用程序。假设这两个应用都是作为自己的微服务构建的。但是,这两个应用程序在部署时(假设分别部署,例如Sales使用MongoDB,Ticketing使用MariaDB),则需要访问相同的主数据实例,例如Accounts,Products。这意味着将有一个给定主数据实体的所有者应用程序(例如,对于帐户,可能是销售应用程序)和一个有兴趣的一方(例如,票务应用程序将需要有关帐户的信息)。 有多种方法可以实现:-从主方到感兴趣方的数据复制-从感兴趣方到主方的同步读取(微服务体系结构范例不建议同步依赖性)-自己的集中式存储库 即使在客户中,也可能有一个核心部分,对于销售和票务都是通用的(例如,帐户名,地址等)。但是,帐户的某些方面可能仅与销售相关,而其他方面仅与票务相关。 关于上述任何选项有什么想法/最佳实践/意见吗?
14 soa  services 

5
如果无法使用事务,如何在企业环境中有效地使用Web服务?
我正在工作的地方正在尝试建立一些基本规则,而我们现在正在争论的是本地库与Web服务之间的代码重用。Web服务似乎是大多数公司中的热门选择,这就是大多数开发人员都倾向于的。 我只是看不到如何有效地将Web服务用于任何严肃的工作。如果无法使用事务,如何安全地执行多个服务调用? 假设我有一个Cron工作,它从我们的数据库中获取满足一定条件的客户,这些客户需要通知他们。将向他们发送传真,电子邮件并创建票证以在内部跟踪问题。在for循环中,每个客户将发生3个不同的服务调用。 如果那里的任何地方发生错误,则可能会例如将传真和电子邮件发送给客户,但不会创建故障单。或更糟糕的是,此Cron作业可能包含一个错误,导致每次都在同一时间失败,并反复向同一位客户发送电子邮件。如果所有库都是本地的,则所有内容都可以包装在事务中,而不会发生任何事情。但是在此示例中,我们使用的是Web服务。 请注意,电子邮件和传真方法实际上将数据插入到数据库支持的队列表中,而这些表又由单独的cron作业进程处理。因此,如果需要,可以免费中止对“发送电子邮件”和“发送传真”服务方法的调用。 一种选择是将整个代码块放在Web服务本身中,以便Web服务本身将在事务中调用电子邮件,传真和票证创建方法。但是随后我们创建了一个仅用于事务处理的Web服务方法。没有确凿的理由,我们实际上需要从该cron脚本之外的任何地方调用此方法。 您通常将如何处理此方法?

4
在MVC中使用服务层
如果控制器太胖,并且模型实例化开始加起来,则可以使用服务层。 如果仅将逻辑包装在服务类中,则将获得一堆带有一个/两个方法的服务。感觉像是代码气味。有什么最佳实践吗? 服务可以实例化模型吗? 如果服务实例化模型,则不能对服务进行单元测试。它们只能接受集成测试吗?
13 mvc  services 

4
如果微服务架构需要每个微服务单独的数据库,那么它的成本太高且难以管理。为什么我们甚至需要它?
我读到有关微服务的信息,对于每个服务创建一个单独的DB来实现隔离似乎不合逻辑。我可以仅使用Web服务和单个数据库来实现相同的目的。为什么我们甚至需要它?分开数据库的东西是无聊的。还是我明明是错?你能指导我吗?

2
我应该在服务和存储库之间使用一个层来构建干净的架构-Spring
我正在架构中,它将为Web客户端和移动应用程序提供rest api。我正在使用Spring(spring mvc,spring data jpa,... etc)。域模型使用JPA规范编码。 我正在尝试应用干净架构的一些概念(https://8thlight.com/blog/uncle-bob/2012/08/13/the-clean-architecture.html)。并非全部,因为我将保留jpa域模型。 通过各层的实际流量是这样的: 前端 <-> API服务 -> 服务 -> 存储库 -> 数据库 前端:Web客户端,移动应用 API服务:Rest控制器,在这里我使用转换器和dto并调用服务 服务:与实现的接口,并且包含业务逻辑 存储库:具有自动实现的存储库接口(由spring data jpa完成),它包含CRUD操作以及一些sql查询 我的疑问:我应该在服务和存储库之间使用额外的一层吗? 我正在计划这个新流程: 前端 <-> API服务 -> 服务 -> 持久性 -> 存储库 -> 数据库 为什么要使用这个持久层?正如它在干净的体系结构文章中所说的,我希望有一个访问不可知的持久层的服务实现(业务逻辑或用例)。如果我决定使用其他“数据访问”模式,例如,如果我决定停止使用存储库,则不需要更改。 class ProductServiceImpl implements ProductService { ProductRepository productRepository; void save(Product product) { // do …
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.