问题标签 [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 投票
4 回答
6068 浏览

c# - 有一个空的基类是不好的设计吗?

我需要一个用于我的通用接口的 DTO 类的基类。

但是 DTO 类没有任何共同点。它们只是包含一些属性的愚蠢类。

0 投票
4 回答
1440 浏览

ruby-on-rails - 是否应将草稿记录保存在单独的表格中?

我们正在构建一个简单的基于 Web 的系统,通过该系统,某人添加了一个记录,例如一个 CMS 页面,该记录在显示在网站上之前得到负责人的批准。

如果作者决定稍后编辑该页面,我们希望基于 Live Copy 创建一个草稿,经批准后它将替换旧的 Live 页面。

我们考虑过进行完整的版本控制,但相信我们可以通过 1. 一个草稿,2. 一个 live 或 3. 一个草稿和一个 live 来保持这个更简单。

此功能需要跨多个“事物”,而不仅仅是页面。

最后一个问题:您认为将这两条记录存储在同一张表中更好,还是镜像表更好?

我想这可能取决于,但我不喜欢拥有两个具有相同结构的表的理想状态。换取稍微慢一点的操作(因为我们在显示数据时必须一直查询草稿)值得吗?

0 投票
1 回答
877 浏览

database - postgresql重复表名最佳实践

我的公司有一些我们在我们构建的网站中部署的应用程序。最近,一个非常旧的应用程序需要与一个较新的应用程序一起包含,并且两个应用程序都需要使用重复的表名而发生冲突。

我们现在正在更新旧应用程序,并且会有一些数据库更新。我很好奇人们认为最佳实践(或者你是如何做到的)以帮助确保这些名称冲突不会发生。

我查看了架构,但不确定这是否是我们想要采取的正确道路。正如文档规定的那样,我不想将特定的模式名称“连接”到应用程序中,如果我将模式添加到用户搜索路径,如果两个模式具有相同的表名,它将如何知道我指的是哪个表。虽然,也许我读了很多。

任何见解或智慧之言将不胜感激!

0 投票
1 回答
1121 浏览

iphone - 构建通过 Web API 与服务器同步数据的 iPhone 应用程序的主要挑战是什么?

我想构建一个利用服务器数据的应用程序,它需要将应用程序中的数据与其他客户端应用程序输入的数据同步。所以,有几个问题:

  • 如何高效地设计数据库模式?它应该在服务器上复制相同的数据库模式还是应该添加更多的字段和实体?
  • 同步数据的策略是什么,在每个应用程序启动时或在应用程序的某些空闲状态期间,或其他什么...
  • 如何处理用户在应用程序中输入的数据与另一个客户端应用程序输入的数据的冲突。

欢迎任何回应。

0 投票
2 回答
158 浏览

model-view-controller - 调度员+控制器之前的逻辑?

我相信对于典型的 MVC Web 应用程序,路由器/调度程序例程用于主要根据用户在 url 中请求的区域来决定加载哪个控制器。

但是,除了检查 url 查询字符串之外,我还喜欢使用调度程序检查用户当前是否登录,以决定加载哪个控制器。例如,如果他们登录并请求登录页面,调度员将加载他们的帐户。

但这是一个相当不标准的设计吗?它会以任何方式违反 MVC 吗?我只问这个周末我读过的示例在调度程序例程之前没有执行任何重大计算,并且通常检查用户是否按控制器登录,然后在必要时重定向。

但是对我来说,如果您可以首先加载帐户控制器,那么将登录用户从登录区域重定向到帐户区域似乎很奇怪?

我希望我已经很好地解释了我的惊愕,但是任何人都可以提供一些关于他们如何处理登录用户和类似会话数据的细节吗?

0 投票
7 回答
2842 浏览

c++ - 你如何运行你的单元测试?编译器标志?静态库?

我刚刚开始使用 TDD,并且很好奇其他人采用什么方法来运行他们的测试。作为参考,我使用的是谷歌测试框架,但我相信这个问题适用于大多数其他测试框架和 C/C++ 以外的语言。

到目前为止,我的一般方法是做以下三件事之一:

  1. 在静态库中编写大部分应用程序,然后创建两个可执行文件。一个可执行文件是应用程序本身,而另一个是包含所有测试的测试运行程序。两者都链接到静态库。

  2. 将测试代码直接嵌入应用程序本身,并使用编译器标志启用或禁用测试代码。这可能是我迄今为止使用过的最好的方法,但会使代码有点混乱。

  3. 将测试代码直接嵌入到应用程序本身中,并且,给定某些命令行开关,要么运行应用程序本身,要么运行嵌入在应用程序中的测试。

这些解决方案都不是特别优雅......

你是怎么做到的?

0 投票
1 回答
113 浏览

oop - N 层应用程序设计工具

我正在开始设计一个中型 Web 应用程序。我通常喜欢从上到下进行设计,即从最高级别开始,然后按照自己的方式进行设计。我计划有以下几层:

  • 演示文稿 (PHP/Ajax)
  • 商业逻辑
  • 数据访问
  • 数据库

现在我想开始勾勒出每一层的主要对象以及层之间的相互作用。有没有比仅使用 Visio 等图形/图表工具更具体的工具?

0 投票
0 回答
78 浏览

application-design - 构建结构良好的服务层

首先,我想说我已经有一段时间没有深入了解我目前所处的那种细节了。最近,我非常喜欢 SharePoint 世界,并且我的整个思考过程都集中在那里很长一段时间。我很高兴再次创建数据库,编写“低级”代码来处理数据访问等等。

我正在开发一个非常简单的 Web 应用程序,并借此机会重新熟悉我过去构建项目和各种代码层的方式。例如,上一次我从头开始构建一些基本的东西时,我可能已经创建了这样的东西:

那将是我做实际工作的项目,然后在 ASP.NET 项目中引用。我的方法非常受我从 CodeCampServer 项目中看到的启发,因为当时 ASP.NET MVC 还是很新的,它是我能找到的唯一一个正在积极开发的开放项目,并且是由可靠的人开发的。

当涉及到您正在处理的一般问题时,您将采用哪些方式来构建项目和代码?当然,各种问题都会对此施加限制,但假设这是一个基本问题,没有影响代码结构和布局的特定需求。

0 投票
2 回答
475 浏览

application-design - 嵌入自定义编辑器应用程序的源代码控制范例和解决方案?

我正在构建一个管理许多自定义对象的应用程序,这些对象可以由多个用户同时编辑(使用应用程序的不同实例)。这些对象具有底层的序列化表示,我的计划是将它们(通过我的应用程序 UI)保存在外部源代码控制系统中。当然,这意味着我的应用程序可以检查对象的当前版本以进行更新、每个对象的合并接口等。

我的问题是要支持什么源代码控制范例和具体解决方案以及为什么。我(也许是天真地)看待源代码控制世界的方式是三种通用范式:

  1. 单一存储库,锁定访问 (MS SourceSafe)
  2. 单一存储库、并发访问 (CVS/SVN)
  3. 分布式(Mercurial、Git)

我已经好几年没听说有人使用 #1 了,所以我打算完全不理会这个案例(除非我得到了令人信服的论点)。但是,我不知道是支持#2 还是#3,以及哪些具体实现。我担心使用范式存在细微差别,以至于我无法在单个 UI 中充分捕获基本操作。

我要传达的最后一点信息是,该应用程序旨在部署在商业环境中,其中源代码控制系统可能已经在使用中。我宁愿不支持多个解决方案,除非它真的会破坏交易,因此在公司环境中广泛采用是一个优势。

更新:我专门寻找一些推理:

  1. 哪种范式是有意义的,因为它已被商业接受?(我认为@Andrew Colson 已经回答了这个问题,但其他人的经验可能会有所不同)
  2. 一个普通的商业开发商店更愿意使用现有的源代码控制系统,而不是为我的应用程序维护第二个源代码控制系统(假设我的应用程序满足与正常开发过程分开的重要需求),这是一个合理的假设吗?
  3. 对于我的需要,我是否正确地假设 #2 和 #3 不能被合理地捕获到一组操作中,而不扭曲其中一个范式?
  4. 对于您认为我应该使用的范式,您认为哪些具体实现对支持至关重要?
0 投票
1 回答
302 浏览

c# - 从第三方数据源导入数据(开放式架构设计)

当我们有一个固定的数据库设计并且我们需要支持从第三方数据源(很可能是 XML)导入数据时,您将如何在 .NET 中设计应用程序(类、类库中的接口)?

例如,假设我们的数据库中有一个 Products 表,其中包含 Id Title Description TaxLevel Price 列

另一方面,我们有例如 Products: ProductId ProdTitle Text BasicPrice Quantity。

目前我这样做是这样的:让第三方 XML 转换为类和 XSD,然后将其内容反序列化为强类型对象(此过程的结果是类,如 ThirdPartyProduct、ThirdPartyClassification 等)。

然后我有这样的方法:

我目前不使用接口,但我想。我想要的是实现类似

其中 ProductSynchronization 将是一个接口或抽象类。ProductSynchronization 很可能会有很多实现。我无法对这些类型进行硬编码 - ContosoProduct、NorthwindProduct 等类可能是从第三方 XML 创建的(所以我最好继续使用反序列化)。

希望有人能理解我在这里试图解释的内容。试想一下,您是卖方,您有许多供应商,而且每个供应商都使用自己专有的 XML 格式。我不介意开发,当然每次出现新格式时都需要开发,因为它只需要实现 10-20 个方法,我只希望架构是开放的并支持它。

In your replies, please focus on design and not so much on data access technologies because most are pretty straightforward to use (if you need to know, EF will be used for interacting with our database).