Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >单片-> SOA。所需咨询

单片-> SOA。所需咨询
EN

Stack Overflow用户
提问于 2016-02-18 02:13:12
回答 2查看 110关注 0票数 2

对于SOA/微服务体系结构的最佳实践,我很少有疑问。我们目前有单块应用程序,但我们希望开始将其划分为服务。

因此,这里有一个问题:假设我有一个用户。用户可能有多个主题。用户可以向主题添加/上载文档。我们想为这些文件创建一个单独的服务。

所以看起来是:

代码语言:javascript
运行
AI代码解释
复制
User/Client -- requests --> Frontend/Main-monolithic Service -- requests --> Documents Service

当用户/客户端上传文档时,他指定了应该将文档上载到的主题。关于用户/客户端位于前端/主单块服务中的主题的数据(在该服务的数据库中)。

问:是否应该有“访问控制”检查?换句话说,如果用户可以将文档上载到指定的主题(或者主题属于该用户),那么应该在哪里进行检查?

我认为有三种选择:

  • 检查将在Frontned/Main-单片服务中进行,然后该服务将调用Documents。所以Documents 信任的前端/主板。
  • 检查将通过服务调用在Documents中进行,但它目前将引入一个循环依赖关系: User/Client -- requests --> Frontend/Main-monolithic Service -- requests --> Documents Service -- requests --> Frontend/Main-monolithic Service
  • 创建多个服务,以便如下所示: User/Client -- requests --> Frontend Service -- requests --> Documents Service -- requests --> Topic Service

但是,正如您可以想象的那样,同时开始将生产单块应用程序拆分到许多服务中是有风险的。我们希望尽可能减少错误的风险和减少错误的可能性。因此,从我们的角度来看,一个接一个地引入服务可以降低风险。

如有任何帮助/建议或建议将不胜感激!提前谢谢你。

诚挚的问候

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-02-23 01:18:56

和每个SOA主题一样,这是一个品味问题。我会同意第三种情况,但一步一步地去做。作为第一步,将用户和主题之间的分配提取为类似于TopicAuthorizationService的内容。此服务可由您的独角兽调用。测试一下这个小重构。

代码语言:javascript
运行
AI代码解释
复制
Frontend/Main-monolithic Service -- requests --> TopicAuthorizationService 
Frontend/Main-monolithic Service -- writesDocument--> Filesystem/DB whatever

下一步,提取DocumentService并将对TopicAuthorizationService的调用保留在monolith中。再次:测试此重构

代码语言:javascript
运行
AI代码解释
复制
Frontend/Main-monolithic Service -- requests --> TopicAuthorizationService 
Frontend/Main-monolithic Service -- requests --> DocumentService 
DocumentService -- writesDocument--> Filesystem/DB whatever

第三步:将授权调用移动到DocumentService。试试看。

代码语言:javascript
运行
AI代码解释
复制
Frontend/Main-monolithic Service -- requests --> DocumentService
DocumentService -- requests --> TopicAuthorizationService 
DocumentService -- writesDocument--> Filesystem/DB whatever

这样你就可以降低影响,确保生产。

票数 1
EN

Stack Overflow用户

发布于 2016-04-06 15:08:25

这不仅关系到服务本身的复杂性,而且关系到实现、编排和管理这些服务的人员。引入SOA意味着首先要在人类通信中增加大量开销,以完成任务。如果你和你的团队控制住了这个,这绝对是可行的方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35478524

复制
相关文章
在SharePoint环境下,dll资源脚本权限问题
          最近在用Ext.NET,因为是在SharePoint环境下使用,一直被这样一个问题所困扰着:在使用Ext.NET时,页面必须使用拥有管理权限的用户刷新一次(只要刷新其中任意Ext.NET页面),其他用户才能显示界面。查看网页源代码,发现Extjs的脚本文件和CSS文件并没有注册。而Extjs的脚本文件和css文件是作为资源嵌套在Ext.NET的dll中的。由此想到,应该是用户权限问题,导致Ext.NET的ResourceManager1控件无法注册脚本。
雪雁-心莱科技
2018/12/27
5300
cssjshtml jquery向动态生成的元素添加事件
delegate() 方法为指定的元素(属于被选元素的子元素)添加一个或多个事件处理程序,并规定当这些事件发生时运行的函数。
葫芦
2019/04/17
3.2K0
如何向图形添加曲形文本
R语言数据分析指南
2023/08/18
3360
如何向图形添加曲形文本
如何向数组里添加元素
一般数组是不能添加元素的,因为数组在初始化时就已定好长度了,不能改变长度,我们如何做到向其中添加元素。
算法与编程之美
2023/01/03
3.7K0
dll生成和使用
dll文件的编译生成 创建项目Win32控制台应用程序 创建项目1.png 创建项目2.png 配置属性 项目/属性 配置属性.png
用户2929716
2018/08/23
1.2K0
dll生成和使用
java如何向数组里添加元素
1、一般数组是不能添加元素的,因为他们在初始化时就已定好长度了,不能改变长度。 但有个可以改变大小的数组为ArrayList,即可以定义一个ArrayList数组,然后用add(element)方法往里添加元素即可,还可add(index,element)往指定下标处添加元素;例子如下:
全栈程序员站长
2022/06/27
20.7K0
java如何向数组中添加元素[数组的添加]
大家好,我是架构君,一个会写代码吟诗的架构师。今天说一说java如何向数组中添加元素[数组的添加],希望能够帮助大家进步!!!
Java架构师必看
2022/04/06
7.9K0
C#如何加载嵌入到资源的非托管dll
我们总会遇到需要加载非Win32的非托管dll,这里推荐一种方式就是将那些非win32的非托管dll嵌入资源的方式,在入口解压并且加载的方式,我先来看看如何实现吧,首先我们准备好demo,新增控制台项目如下:
ryzenWzd
2021/05/17
1.1K0
C#如何加载嵌入到资源的非托管dll
如何向已有的项目中添加C/C++代码?
  我们需要在src/main下面建立一个cpp目录,然后在其中写一个CMakeLists.txt文件和一个cpp文件,直接给出代码:
故乡的樱花开了
2023/10/22
3700
Python 中如何向列表或数组添加元素
然而,与其它编程语言不同,数组在 Python 中不是一个内置的数据结构。Python 使用列表取代传统的数组。
Python学习者
2023/09/11
5780
向邮件添加附件
可以将附件添加到电子邮件或消息部分(具体地说,是添加到%Net.MailMessagePart或%Net.MailMessage的实例)。要执行此操作,请使用以下方法:
用户7741497
2022/06/09
2.2K0
嵌入式音视频开发过程中如何控制码率?
在音视频领域,码率控制模式有着举足轻重的地位。那什么是码率控制?码率控制是指通过调节图像的压缩比例,从而决定输出编码码率的过程。
用户6280468
2023/08/31
3390
嵌入式音视频开发过程中如何控制码率?
在Windows中劫持DLL
DLL劫持是一种用于执行恶意有效负载的流行技术,这篇文章列出了将近300个可执行文件,它们容易受到Windows 10(1909)上相对路径DLL劫持的攻击,并展示了如何使用几行VBScript绕过UAC可以以提升的特权执行某些DLL劫持。
Al1ex
2021/07/21
2.2K0
在Windows中劫持DLL
一款针对DLL劫持的恶意DLL生成器
EvilDLL是一款专门针对DLL劫持攻击而开发并设计的恶意DLL(反向Shell)生成器。
FB客服
2020/08/07
2.1K0
一款针对DLL劫持的恶意DLL生成器
如何使用 Bootstrap class 向按钮添加下拉菜单
如何使用 Bootstrap class 向按钮添加下拉菜单。如需向按钮添加下拉菜单,只需要简单地在一个 .btn-group 容器中放置按钮和下拉菜单即可。您也可以使用 <span class="caret"></span> 来指示按钮作为下拉菜单。
好派笔记
2021/09/18
5.7K0
Java如何调用dll
-----------------------------前置条件-------------------------------------
烂猪皮
2018/08/03
2.5K0
Java如何调用dll
X86逆向13:向程序中插入Dll
本章我们将学习Dll的注入技巧,我们将把一个动态链接库永久的插入到目标程序中,让程序在运行后直接执行这个Dll文件,这一章的内容也可以看作是第八课的加强篇,第八课中我们向程序中插入了一个弹窗,有木有发现一个问题?单单是一个弹窗我们就需要经历这么多的步骤,那如果你要调用几十个API函数估计早就疯透了,这里我们其实可以直接编写一些能够完成特殊功能的Dll文件,然后让程序通过LoadLibraryA函数动态的加载执行,LoadLibrary这个函数是在Kernel32.dll这个库中保存的,庆幸的是这个动态链接库99%的程序都必须加载,这就为我们动态加载Dll提供了有效的支持。
王瑞MVP
2022/12/28
4170
X86逆向13:向程序中插入Dll
java卸载dll,如何在java中卸载Dll?[通俗易懂]
I have written a Java agent in Lotus Notes 8.5 to reset token’s PIN using
全栈程序员站长
2022/08/30
2K0
OpenCV300 CMake生成project在项目过程中的问题
2015年6一个月4日本。OpenCV官网上面给出了最新版本号OpenCV。这是:3.0.0版本号,http://opencv.org/
全栈程序员站长
2022/07/06
5430
OpenCV300 CMake生成project在项目过程中的问题
点击加载更多

相似问题

嵌入式dll资源

30

查找嵌入式DLL资源

24

如何将源文件(.cs)添加为生成的DLL的嵌入式资源

119

向Kubernetes添加嵌入式设备作为资源

10

是否可以在.NET DLL中添加/删除/更改嵌入式资源?

381
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档