architecture 相关问题

架构包含解决方案的流程,工件和高级结构。

微服务架构中资源的多用户类型访问

我有一个基于微服务的系统,有 25 个微服务。我想设计一个架构处理场景如下: 例如,我们有一个针对客户业务部分的微服务,它有一个 API,/

回答 2 投票 0

仅在 FE 中验证生物指纹认证是个好主意吗?

我正在开发一个带有专用服务器的移动应用程序。为了让用户访问主页,他必须使用用户名和密码登录。服务器将验证凭据并

回答 1 投票 0

当我的用例限制我按创建顺序处理消息且只能处理一次消息时,SQS FIFO 队列是否可以有多个使用者?

我有一个将从 SQS 队列中使用的服务,并且该服务的多个实例将在 EC2 或 Kubernetes Pod 上并行运行,以避免单点故障,现在我的队列是...

回答 1 投票 0

分布式队列适合构建可扩展的案例分配系统吗?

这是我的目标基本功能。 新用户注册其详细信息并上传一些文档。这就产生了一个新的案例。 审核员每天早上登录并从中挑选一个待处理的案例......

回答 1 投票 0

如何在 Apollo-Server 中使用 CSRF 令牌?

我们目前正在为客户开发一个全球内容/电子商务平台。 该网站在 Next.js 上运行,并有一个 Apollo 服务器作为 API 网关,它与 Next.js 在同一服务器上集成运行

回答 1 投票 0

需要重构git项目并重命名分支

我有一个 git 项目,结构如下: 主要(充当生产) 开发(充当预生产环境并从 Main 分支) 几个功能分支(从

回答 1 投票 0

微服务的业务事务异步通信

问题 在微服务架构中,考虑一个服务 A,它接收来自用户的请求并将一些数据保存到其数据库中。 一旦持久化,服务 A 必须通知服务 B。T...

回答 1 投票 0

纯 DDD 中的数据解放

我正在阅读 Adam Bellemare 的《构建事件驱动的微服务》一书,有一部分我不明白: 在完美的世界中,所有状态都将被创建、管理、主要......

回答 1 投票 0

为什么代理不是连锁?

浪链中有两个概念: 链 代理人 建议使用代理的流程是: 提示 = SomePrompt() llm_chain: 链 = LLMChain(提示) 工具= [...] 代理:代理 = SomeAgent(llm_chain, t...

回答 1 投票 0

无头 CMS 和动态数据

我正在研究无头 CMS 对于我们的静态网站的优势:托管数据库、带有复杂类型定义的漂亮管理界面、表示层(即图形 API)、资产管理...

回答 2 投票 0

Android 应用程序中带有用例的领域层

我正在使用域层实现 MVVM android 应用程序。它采用标准方式: Activity -> ViewModel -> UseCase(带有注入的存储库) 我有一个架构问题想问

回答 1 投票 0

为什么 Rust 以特定于架构的方式生成 LLVM IR 并使用空数组作为可变静态变量?

结构点<'a> { x:i32, 标题:&'a str, y: i32, } static mut global_var: 点 = 点 { x:123, y:344, 标题:“123”, }; 对应的LLVM IR为: %...

回答 1 投票 0

对此 API 系统设计的反馈

我想从社区收集一些关于以下场景的想法和意见:在我们公司,计划进行重大改造,这将影响 IT 基础设施和我们的 SQL S...

回答 1 投票 0

在领域对象中实现应用程序级别和UI级别接口

我正在构建一个应用程序,允许工程师配置“索具”(即您举升的物体与举升它所用的起重机之间的电缆)。我们是两个人的远程团队,沟通...

回答 1 投票 0

大量存储在不同地方的交易的计算值该如何处理?

上下文: 我正在构建一个应用程序,该应用程序从外部组织获取损益表,并使用这些报表中的行计算客户支付值。为了计算这些pa...

回答 1 投票 0

在可可驾驶主环线的正确方法

我正在编写一个当前可以在 Windows 和 Mac OS X 上运行的游戏。我的主游戏循环如下所示: 在跑步的时候) { ProcessOSMessages(); // 在 Win32 中使用 Peek/Translate 消息 ...

回答 3 投票 0

动态创建树视图

我正在尝试使用 c# 和 asp.net 动态创建树视图。 我使用 populate ondemand 属性创建了一个延迟加载树视图。 > 我正在尝试使用 c# 和 asp.net 动态创建树视图。 我使用 populate ondemand 属性创建了一个延迟加载树视图。 > <asp:TreeView ID="treeView1" runat="server" > OnTreeNodePopulate="treeview1_TreeNodePopulate"></asp:TreeView> 在代码后面,我已经加载了数据,但最初我填充了父节点。我想要实现的是,当我单击父节点时,我会进行回发,然后填充其子节点,然后再次填充其子节点,等等。我有数千个数据,因此由于性能原因,我不希望填充所有数据。这就是为什么我只想根据所选节点填充节点子节点的原因。请参阅下面的示例: >Peter - - >user1 - - >user2 - - >user3 - - >userPassword - - >userId >john >david >Jack - - >user1 - - >user2 - - >userpassword - - >userId - - >Permissions >Laura - - > admin - - > permissions -- > user1 -- > user2 - - >userpassword - - >userId - - >Permissions >... >... >... 如您所见,可以有多个父节点和多个层。这些将根据我传递给数据库的内容动态填充。每次我单击节点时,它都会展开节点并使用回发填充其子级,然后当您再次单击其子级时,它将执行回发并再次填充其子级等。所以我需要有关如何创建动态树视图的帮助。 c#: private void LoadTreeview() { //Load data // Get data from DB. //loop through the list and build its parent nodes. foreach (var dxm in list) { TreeNode tnParent = CheckNodeExist(dxm.Node); //I check to see if exists. if (tnParent== null) { TreeNode tn = new TreeNode(); tn.Text = dxm.Node; tn.Value = dxm.Id.ToString(); tn.SelectAction = TreeNodeSelectAction.None; tn.Collapse(); treeView1.Nodes.Add(tn); tn.PopulateOnDemand = true; //lazy load tnParent= tn; } } 上面的方法在页面加载时调用。 在 TreeNodePopulateEvent 上:(单击节点时) protected void treeview1_TreeNodePopulate(object sender, TreeNodeEventArgs e) { ICollection<ITEMS> list = new Collection<ITEMS>(); list = GetData(e.Node.Text); //pass in the node you have selected this will go and check in DB if the node does have any child nodes. If so will return with child nodes. foreach (var dxm in list) { TreeNode tnChild = CheckNodeExist(dxm.Node); if (tnChild == null) { TreeNode tn = new TreeNode(); tn.Text = dxm.Node; tn.Value = dxm.Id.ToString(); tn.SelectAction = TreeNodeSelectAction.None; tn.Collapse(); tn.PopulateOnDemand = true; tnChild = tn; tnChild.ChildNodes.Add(tnChild); } } } 我相信您正在寻找 SelectedNodeChanged 事件。您应该能够在此事件中加载您的子节点。基本上,每次您通过单击选择一个节点时都会触发此事件。 你的aspx <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> </head> <body> <form id="form1" runat="server"> <div id="div1" runat="server"> </div> <asp:TreeView ID="TreeView1" runat="server" onselectednodechanged="TreeView1_SelectedNodeChanged"> </asp:TreeView> </form> </body> </html> 你的代码隐藏 using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { TreeView1.Nodes.Add(new TreeNode("Node1")); TreeView1.Nodes[0].ChildNodes.Add(new TreeNode("ChildNode")); } } protected void TreeView1_SelectedNodeChanged(object sender, EventArgs e) { Response.Write(TreeView1.SelectedNode.Text); } } 也许这个例子会对你有所帮助,我正在使用 baisc 递归在 .NET core mvc 中创建类似用户树的结构。 这里我使用sql server来存储用户数据,每个节点/用户都由用户名标识。每个节点都是个体用户。登录用户将显示在顶部,子用户将显示在底部,形成一个具有 leftMember/leftNode 和 rightMember/rightNode 的树状结构。 模型类: public class UserModel { [Key] public int userId { get; set; } [Required] public string firstName { get; set; } [Required] public string lastName { get; set; } [Required] public string userName { get; set; } [Required] public string password { get; set; } public string leftMember { get; set; } = ""; public string rightMember { get; set; } = ""; } 用户登录验证: [HttpPost] public async Task<IActionResult> Auth(string username, string password) { var findingFeni = context.User.Where(n => n.userName == username && n.password == password).FirstOrDefault(); if(findingFeni == null) { return Content("user or password is incorrect"); } var claims = new List<Claim> { new Claim(ClaimTypes.Name, username) }; var claimsIdentity = new ClaimsIdentity(claims, CookieAuthenticationDefaults.AuthenticationScheme); var authProperties = new AuthenticationProperties { }; await HttpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme, new ClaimsPrincipal(claimsIdentity), authProperties); return RedirectToAction("Index"); } 添加左右成员/节点: public async Task<IActionResult> addMyLeftMember(int userId) { TempData["LeftMemberUserId"] = userId; return RedirectToAction("RegisterLeftMember"); } public async Task<IActionResult> addMyRightMember(int userId) { TempData["RightMemberUserId"] = userId; return RedirectToAction("RegisterRightMember"); } public async Task<IActionResult> AddMemberLeft(UserModel userModel) { UserModel usr = context.User.Where(n => n.userName == userModel.userName).FirstOrDefault(); if(usr != null) { return Content("user already exist"); } int userID = int.Parse(TempData["LeftMemberUserId"].ToString()); var findingDaddy = context.User.Where(n => n.userId == userID).FirstOrDefault(); findingDaddy.leftMember = userModel.userName; context.User.Add(userModel); await context.SaveChangesAsync(); return RedirectToAction("Index"); } public async Task<IActionResult> AddMemberRight(UserModel userModel) { UserModel usr = context.User.Where(n => n.userName == userModel.userName).FirstOrDefault(); if (usr != null) { return Content("user already exist"); } int userID = int.Parse(TempData["RightMemberUserId"].ToString()); var findingDaddy = context.User.Where(n => n.userId == userID).FirstOrDefault(); findingDaddy.rightMember = userModel.userName; context.User.Add(userModel); await context.SaveChangesAsync(); return RedirectToAction("Index"); } 在索引中获取用户数据我正在获取所有用户数据,但您只能获取将完成工作的登录用户数据。 public IActionResult Index() { List<UserModel> users = context.User.ToList(); string name = User.Identity.Name; if(name == null || name.Equals("")) { name = "admin"; } List<UserModel> newUserList = users.Where(user => String.Compare(user.userName, User.Identity.Name) >= 0).ToList(); return View(newUserList); } 索引页: @inject TASK_1._1.Context.ApplicationDbContext context @model List<UserModel> @{ ViewData["Title"] = "Home Page"; } <div class="text-center"> @if (Model != null && Model.Count() > 0) { <table border="1" class="text-center"> @foreach (var user in Model) { @Html.Partial("_UserNodeView", user) break; } </table> } </div> 查看: @inject TASK_1._1.Context.ApplicationDbContext context @model UserModel @* *@ @{ } <table border="1" class="text-center"> <a> @Model.userName </a> <tr> <td> @if (Model.leftMember.Equals("")) { <div> <form asp-controller="Home" asp-action="AddMyLeftMember" method="post"> <button class="btn btn-primary" type="submit" asp-action="AddMyLeftMember" asp-route-userId="@Model.userId"> Left </button> </form> </div> } else { var u = context.User.Where(n => n.userName == Model.leftMember).FirstOrDefault(); @Html.Partial("_UserNodeView", u) } </td> <td> @if (Model.rightMember.Equals("")) { <div> <form asp-controller="Home" asp-action="AddMyRightMember" method="post"> <button class="btn btn-primary" type="submit" asp-action="AddMyRightMember" asp-route-userId="@Model.userId"> Right </button> </form> </div> } else { var u = context.User.Where(n => n.userName == Model.rightMember).FirstOrDefault(); @Html.Partial("_UserNodeView", u) } </td> </tr> </table>

回答 2 投票 0

设计实时计算/速度计数器引擎

我的目标是创建一个针对在线交易数据量身定制的低延迟计算引擎。我的目标是从交易负载中提取电子邮件、电话号码和客户设备等信息。

回答 1 投票 0

需要帮助设计实时计算/速度计数器引擎

我的目标是创建一个针对在线交易数据量身定制的低延迟计算引擎。我的目标是从交易负载中提取电子邮件、电话号码和客户设备等信息。

回答 1 投票 0

六边形架构中数据仓库接口放在哪一层?

如图所示,遵循六边形的架构模式,存储接口似乎被放置在应用层。但根据DDD规范,数据存储...

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.