问题标签 [application-design]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
384 浏览

global-variables - 您将程序范围变量放在 UI 驱动的应用程序中的什么位置?

好的,所以我知道全局变量被认为是不好的,并且单例模式被过度使用了。我在很多地方读到过,一个类应该只执行一项任务,并且只包含那些允许它完成这项任务的变量。然而,在处理我的最新项目时,我实际上在编写任何代码之前考虑了这些规则,并注意到我倾向于在程序的一开始就破坏它们。

我目前正在开发基于 MFC 对话框的应用程序,但这个问题可以应用于任何 UI 驱动的应用程序。我有单独的类来处理状态机、文件读/写和硬件接口。所有这些对象都需要某种类型的 UI 控件或属性显示/编辑。在 MFC 对话框应用程序中,对话框就是程序,所以它必须存在,直到程序关闭。我通常只是将对象放在应用程序的主对话框类中,并让对话框类具有双重职责;作为主 UI 和应用程序中所有其他对象的主页。在其他应用程序中,我在全局范围内创建了这些对象,并从需要它们的任何地方引用它们。这两种方式似乎都不正确。第一个选项打破了一个类,一个任务的规则,第二个依赖全局变量并创建隐藏的依赖项。我可以建立某种类型的依赖注入,但是我要注入的所有这些变量会驻留在哪里?

我只是想知道其他人如何在不违反规则的情况下组织他们的程序?

0 投票
7 回答
219 浏览

desktop-application - 当用户在运行时弄乱其文件时,如何防止我的桌面应用程序严重崩溃?

例如在运行期间删除输出文件,将 sw 的两个实例定向到同一个 IO 等?

0 投票
8 回答
477 浏览

asp.net - 做太多事情的网页

关于构建 Web 应用程序的页面:

最近,我发现自己创建的网页比以前更简单。以前,我会尝试将尽可能多的功能塞进一个页面中,以防止出现大量页面。

我开始意识到这只是让事情变得比它必须的更复杂、令人费解和令人困惑。为什么没有更多的页面?我认为我这样做的原因是因为我不希望用户必须浏览其他页面;只是为了在一个页面上拥有他们需要的所有功能。

好吧,这些良好的意图变成了对用户来说过于混乱的界面和非常难以管理的源代码。我是一名新开发人员,我正在努力反思我正在做的事情,以便我可以改进。如果它有所作为,我正在 ASP.net 中开发(尽管这些可能是任何平台的考虑因素)。

我的问题是:

  • 我是不是在想这些事情?
  • 有没有其他人发现自己这样做?
  • 快乐的媒介在哪里?
0 投票
1 回答
280 浏览

schema - 如何创建一个模式,其中每个客户可以有多个用户定义的属性?

我将开发一个应用程序,该应用程序允许我们的客户定义将在某种反馈/调查环境中显示给用户的字段。例如,比萨店可能有一个区域要求您最喜欢的浇头,酒吧可能有您最喜欢的啤酒品牌。

系统需要能够让我们的客户创建和修改这些字段,因为它们依赖于特定的客户并且可能不会被复制。如果有一些方法可以根据类似客户的领域向客户提出建议,那将是理想的;例如,如果我们有第二家比萨店注册,在他们的管理页面上定义字段可能会说类似的企业选择询问以下问题,并显示“样本”值列表。

这会是Entity-Attribute-Value (EAV)该表模型的良好候选者吗?传统的关系模型行不通,因为它会涉及许多称为“user1”之类的字段,这当然对于任何事情都非常笨拙。

0 投票
3 回答
8890 浏览

c# - 如何将信息从一个 WPF UserControl 传递到另一个 WPF UserControl?

我有一个 WPF 应用程序。

在左侧有一个堆栈面板,里面装满了按钮。

右侧有一个空的停靠面板。

当用户单击按钮时,它会将相应的 UserControl (View) 加载到停靠面板中:

这种模式效果很好,因为每个 UserControl 都是一个 View,它有一个 ViewModel 类,该类向它提供从 Model 获得的信息,因此用户可以从一个页面点击到另一个页面,每个页面都可以执行独立的功能,例如编辑所有客户,保存到数据库等

问题:

但是,现在,在其中一个页面上,我想要一个包含客户列表的 ListBox,每个客户都有一个“编辑”按钮,当单击该编辑按钮时,我想用 EditSingleCustomer 填充 DockPanel UserControl 并将需要编辑的 Customer 传递给它。

我可以加载 EditCustomer 用户控件,但是如何将它传递给客户进行编辑并设置其 DataContext 来编辑该客户

  • 我无法在构造函数中传递它,因为所有 UserControls 都已创建并存在于 MainWindow.xaml.cs 的 Dictionary 中。
  • 所以我在每个 UserControl 上创建了一个 PrepareUserControl 方法,并将 Customer 传递给它,并且可以使用 x:Name="..." 后面的代码中的文本框显示它,但这不是重点,我需要将 ItemsControl 数据绑定到一个ObservableCollection 当然可以利用 WPF 的数据绑定功能。
  • 所以我尝试将 View 中的 ListBox ItemSource 绑定到其后面的代码,如下所示:

这会导致该视图中 IntializeComponent() 中的无限循环导致堆栈溢出错误。所以我想我以错误的方式解决这个问题,必须有一些更简单的范例来简单地将命令从一个 UserControl 传递到 WPF 中的另一个 UserControl(在有人说“使用 WPF 命令”之前,我已经在使用命令在我的 UserControl 上允许用户编辑所有客户,这工作正常,但我必须在我的视图后面的代码中处理它(而不是在我的视图模型中),因为我需要父窗口上下文才能加载另一个用户控制何时完成保存:

那么如何在 WPF 中简单地将一个 UserControl 加载到 DockPanel 中,在该 UserControl 内部有一个带有命令的按钮,该按钮加载另一个 UserControl并向该 UserControl 发送一个可以绑定其控件的特定对象?

我可以想象此时我对 WPF 命令的了解还不够,如果有人能从这里指出我正确的方向,那就太好了,或者如果您认为这种“在 DockPanel 模式中加载 UserControls 对 WPF 来说是陌生的,并且应该避免并用另一种构建应用程序的方式代替”,这也是有用的消息。您可以在此处下载我的应用程序的当前状态,以了解它的结构。谢谢。

0 投票
17 回答
13388 浏览

security - 最好的“忘记密码”方法是什么?

可能重复:
忘记密码:实现忘记密码功能的最佳方法是什么?

我正在编写一个社区网站。

我想建立一个“忘记密码”功能。

环顾不同的网站,我发现他们采用了以下三种选择之一:

  1. 向用户发送一封电子邮件,其中包含指向唯一隐藏 URL 的链接,该 URL允许他更改密码(Gmail 和 Amazon)

  2. 向用户发送一封带有随机生成的新密码的电子邮件(Wordpress)

  3. 向用户发送他当前的密码(www.teach12.com)

选项#3对用户来说似乎是最方便的,但由于我将密码保存为 MD5 哈希,我看不到选项#3 对我来说如何可用,因为MD5 是不可逆的。这似乎也是不安全的选项,因为这意味着网站必须在某处以明文形式保存密码,并且至少明文密码是通过不安全的电子邮件发送给用户的。或者我在这里错过了什么?

因此,如果我不能执行选项#1,选项#2似乎是最简单的编程,因为我只需要更改用户的密码并将其发送给他。尽管这有点不安全,因为您必须通过不安全的电子邮件传达实时密码。然而,这也可能被麻烦制造者滥用,通过输入随机电子邮件和不断更改各种用户的密码来纠缠用户。

选项#1似乎是最安全的,但需要一些额外的编程来处理过期的隐藏 URL 等,但它似乎是大型网站使用的。

您使用/编程这些不同的选项有什么经验?有什么我错过的选择吗?

0 投票
8 回答
1849 浏览

.net - 是否需要序号?

我正在开发一个 winform (.NET) 应用程序,其中包括订单、发票、服务订单、票务等。

这些实体在编号它们的 ID 时有必要按顺序排列吗?国际海事组织编号 以订单为例,它只有在通过业务层时才有效,在此过程中,可能已经创建、批准并保存了另一个订单,编号为 2,而之前创建的 id 为 1 的订单未通过验证。

这似乎打开了一个关于哪个层分配订单号的蠕虫罐,不是吗?

目前我正在使用以实体标识符为前缀的非连续数字。例如,订单使用 OR-123。这是一个好主意吗?

谢谢

有关的:

SQL Server 中数据库范围内唯一但简单的标识符

0 投票
2 回答
1414 浏览

application-design - 大型应用程序设计(WPF/Silverlight)

除了 MVVM 以及 WPF 应用程序整体结构的 MVC 模式之外,您究竟如何将应用程序的模型/控制器方面分解为子组件?我问的原因是我从上述模式的角度构建解决方案没有问题,但是当涉及到实际编写后端时;我觉得我捏造了很多。从用户的角度来看,我最终得到了高质量的应用程序,但我的设计美学不允许我接受这一点。

澄清; 我的很多业务逻辑都无法以任何简单或有意义的方式重构为一个类(或类层次结构,以及所有关联的接口),而无需更改整个应用程序。我现在专业开发一年半了,可能是经验不足的问题;但我觉得这仍然不是借口。任何指向这个公认的开放式问题的指针?

编辑:代码请求(在 Silverlight 中)- 以下是来自拖放分配应用程序中 mousebuttonup 处理程序的-snippet-,该应用程序是更大应用程序的一部分-

我真的不喜欢逻辑是多么生硬,并且讨厌它完全无法分解的方式,因为一切都被塞进事件处理程序中。

0 投票
1 回答
1228 浏览

application-design - 处理服务器-客户端应用程序中不稳定的 Internet 连接

我可以使用什么技术来管理服务器-客户端应用程序中不稳定的互联网连接。我主要了解 PHP(+Zend 框架),学习 C# 和 ASP.NET MVC。我听说 WCF/MSMQ 可以提供帮助...但是如何... PHP(我更熟悉)可以做什么?但如果它更好,了解 .NET 替代品也很好

的背景:

client***s*** 将连接到服务器数据库以执行 CRUD。但如果互联网连接失败,这将是不可能的。那么我该如何解决呢?

现在使用的解决方案是拥有 localhost db。一天结束时,所有客户端都将上传到服务器,早上从服务器下载“整合”数据库。这并非万无一失,因为上传/下载仍可能失败。并且考虑到传输的大量数据,它实际上增加了机会。

更新:是否有 PHP/Zend 框架/MySQL 替代 MSMQ/WCF?

0 投票
3 回答
8206 浏览

wpf - 在 MVVM 中构建显示各种页面的菜单的最佳方法是什么?

我想用 MVVM 模式构建一个简单的应用程序。

此应用程序将有两个主要部分:

  • 顶部的菜单
  • 以下内容

导航将很简单:

  • 每个菜单项(例如“管理客户”或“查看报告”)都会在内容区域中填充一个具有某些特定功能的新页面

之前使用代码隐藏了代码,其中菜单项的代码隐藏事件处理程序已加载所有页面,并且应该显示的页面作为 StackPanel 的子项加载。但是,这在 MVVM 中不起作用,因为您不想手动填充 StackPanel 而是显示例如带有 DataTemplate 的“PageItem”对象等。

那么你们中的那些用 MVVM 制作了这样一个简单的单击菜单应用程序的人,你的基本应用程序结构是什么? 我在考虑这些方面:

MainView.xaml:

其中,Menu 填充了“PageItems”的集合,DataTemplate 将每个“PageItem 对象”的 Title 显示为每个 MenuItem 的 Header。

ContentControl 将填充具有完整功能的 View/ViewModel 对,但对此不确定。