Questions tagged «architecture»

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

10
我刚刚发现了为什么所有ASP.Net网站都运行缓慢的原因,并且我正在尝试解决该问题。
我刚刚发现,ASP.Net Web应用程序中的每个请求都在请求开始时获得会话锁,然后在请求结束时释放它! 如果像我刚开始那样对您失去影响,那么这基本上意味着以下几点: 每当ASP.Net网页加载时间很长时(可能是由于数据库调用速度慢或其他原因),并且用户由于厌倦了等待而决定要导航至其他页面时,它们不能!ASP.Net会话锁定会强制新页面请求等待,直到原始请求完成其痛苦的缓慢加载为止。啊 每当UpdatePanel加载缓慢时,用户决定在UpdatePanel完成更新之前导航到其他页面...它们不能!ASP.net会话锁定会强制新页面请求等待,直到原始请求完成其痛苦的缓慢加载为止。双重Arrrgh! 那有什么选择呢?到目前为止,我想出了: 实现ASP.Net支持的自定义SessionStateDataStore。我还没有找到太多可以复制的东西,而且似乎风险很高,很容易弄乱。 跟踪所有正在进行的请求,如果一个请求来自同一用户,则取消原始请求。似乎有些极端,但它可以工作(我认为)。 不要使用会话!当我需要某种状态给用户时,我可以只使用Cache以及经过身份验证的用户名上的关键项或类似的东西。再次看起来有点极端。 我真的无法相信ASP.Net Microsoft团队会在4.0版的框架中留下如此巨大的性能瓶颈!我是否缺少明显的东西?在会话中使用ThreadSafe集合有多困难?


23
您如何设计面向对象的项目?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引文回答。 3年前关闭。 改善这个问题 我正在为一个大型项目工作(对我来说),该项目将有许多类并且需要可扩展,但是我不确定如何计划程序以及类之间如何交互。 几个学期后,我参加了OOD课程,并从中学到了很多东西。例如编写UML,以及将需求文档转换为对象和类。我们也学习了顺序图,但是以某种方式我错过了讲座或其他内容,但它们并没有真正与我保持联系。 在以前的项目中,我尝试使用从本课程中学到的方法,但是通常最终得到的代码是,只要我能说“是的,看起来像我的想法”,我就不希望深入研究添加新功能。 我得到了史蒂夫·麦康奈尔(Steve McConnell)的《代码完成》的副本,在这里和其他地方,我一直听到我很惊讶。我阅读了有关设计的章节,但似乎没有得到我所寻找的信息。我知道他说这不是一成不变的过程,它主要是基于启发法,但是我似乎无法吸收他的所有信息并将其应用于我的项目。 那么,在高级设计阶段(开始编程之前)要做什么,以确定需要哪些类(尤其是那些不基于任何“现实世界对象”的类),以及它们将如何相互影响? 我特别对您使用的方法感兴趣?您遵循的过程通常会形成一个良好,干净的设计来紧密代表最终产品的流程是什么?


2
Jon Skeet对Singleton的澄清
public sealed class Singleton { Singleton() {} public static Singleton Instance { get { return Nested.instance; } } class Nested { // Explicit static constructor to tell C# compiler // not to mark type as beforefieldinit static Nested() {} internal static readonly Singleton instance = new Singleton(); } } 我希望在当前的C#应用​​程序中实现Jon …


6
为什么Linux被称为整体内核?
我读到Linux是单片内核。整体内核是否意味着将完整的内核代码编译并链接到可执行文件中? 如果Linux能够支持模块,为什么不将所有子系统分解为模块并在必要时加载它们呢?在这种情况下,内核不必一开始就加载所有模块,而是可以维护模块中功能的索引,并在必要时加载它们。

6
真的应该将所有东西捆绑在Symfony 2.x中吗?
我知道类似这样的问题,人们倾向于讨论笼统的Symfony 2概念。 问题是,在特定的应用程序(例如类似Twitter的应用程序)中,所有内容都应该像官方文档中所说的那样真正包含在通用包中吗? 我之所以这样问,是因为通常在开发应用程序时,我们不想将代码高度耦合到某些全栈胶合框架。 如果我开发基于Symfony 2的应用程序,并且在某个时候决定将Symfony 2并不是继续开发的最佳选择,那么这对我来说会是一个问题吗? 因此,普遍的问题是:为什么一切都捆绑在一起是一件好事? 编辑#1 自从我问了这个问题以来,已经快一年了,我写了一篇文章来分享我对该主题的知识。

11
单页应用程序:优点和缺点[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引文回答。 3年前关闭。 改善这个问题 我已经读过SPA及其优势。我发现其中大多数令人信服。有3个优点引起了我的怀疑。 问题: 您可以担任SPA的拥护者,并证明我对前三个陈述有误吗? === ADVANTAGES === 1. SPA对于响应速度很快的网站非常有用: 对于所有中间状态,很难实现服务器端呈现-小视图状态无法很好地映射到URL。 单页应用程序的特点是能够重绘UI的任何部分,而无需服务器往返来检索HTML。这是通过具有处理数据的模型层和从模型读取的视图层将数据与数据表示分离开来的。 为非SPA保留模型层有什么问题?SPA是否是客户端上唯一与MVC兼容的体系结构? 2.使用SPA,我们不需要对服务器使用额外的查询来下载页面。 嗯,在访问您的网站期间用户可以下载多少页?二三?而是出现了另一个安全问题,您需要将登录页面,管理页面等分成单独的页面。反过来,它与SPA架构冲突。 3.可能还有其他优势吗?什么都没听到 === DISADVANTAGES === 客户端必须启用javascript。 该站点只有一个入口点。 安全。 PS我曾经从事过SPA和非SPA项目。我问这些问题是因为我需要加深理解。无意伤害SPA支持者。不要让我多读一些有关SPA的文章。我只想听听您对此的考虑。

9
什么是自以为是的软件?
已锁定。该问题及其答案被锁定,因为该问题是题外话,但具有历史意义。它目前不接受新的答案或互动。 我经常看到有人说某些软件“很自以为是”,或者Microsoft倾向于编写“不受质疑”的框架。这到底是什么意思?

10
跨REST微服务的交易?
假设我们有一个User,Wallet REST微服务和一个将事物粘合在一起的API网关。当Bob在我们的网站上注册时,我们的API网关需要通过User微服务创建用户,并通过Wallet微服务创建钱包。 现在,这是一些可能出错的场景: 用户Bob的创建失败:可以,我们只向Bob返回一条错误消息。我们正在使用SQL事务,因此没人能在系统中看到Bob。一切都很好:) 用户Bob已创建,但是在创建我们的电子钱包之前,我们的API网关会严重崩溃。现在,我们有一个没有钱包的用户(数据不一致)。 用户Bob已创建,并且在我们创建电子钱包时,HTTP连接断开。钱包创建可能成功,也可能没有成功。 有哪些解决方案可以防止这种数据不一致的情况发生?是否存在允许事务跨越多个REST请求的模式?我已经阅读了有关两阶段提交的Wikipedia页面,该页面似乎涉及到此问题,但是我不确定如何在实践中应用它。这种原子分布式事务:一个RESTful设计纸似乎也有意思,虽然我还没有看过它。 另外,我知道REST可能不适合此用例。处理这种情况的正确方法也许会完全丢弃REST,并使用其他通信协议(例如消息队列系统)来进行处理吗?还是我应该在应用程序代码中强制执行一致性(例如,通过具有检测不一致之处并进行修复的后台作业,或者通过在用户模型上使用“创建”,“创建”的值等方式具有“状态”属性)?

27
C状态机设计
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅关注一个问题编辑此帖子。 3个月前关闭。 改善这个问题 我正在用C和C ++混合编写一个小项目。我正在我的一个工作线程的中心构建一个小型的状态机。 我想知道您是否对SO的专家会分享您的状态机设计技术。 注意:我主要是在尝试和测试过实现技术之后。 更新:基于SO收集的所有宝贵意见,我决定采用以下架构:

12
什么是N层架构?
我最近看过很多开发人员职位,其中包含这样的句子:“必须具有N-Tier架构的经验”或“必须能够开发N-Tier的应用程序”。 这使我问,什么是N-Tier体系结构?一个人如何获得经验?

18
在Python中构建最小的插件架构
我有一个用Python编写的应用程序,供相当技术的读者(科学家)使用。 我正在寻找一种使用户可以扩展应用程序的好方法,即脚本/插件体系结构。 我正在寻找轻巧的东西。大多数脚本或插件都不会由第三方开发和分发并安装,而是会在几分钟内被用户搅动,以自动执行重复任务,添加对文件格式的支持,等等。因此,插件应该具有绝对的最小模板代码,并且除了复制到文件夹外,不需要“安装”(因此,诸如setuptools入口点之类的东西,或者Zope插件架构似乎太多了。) 是否已经有类似这样的系统,或者是否有实施类似方案的项目,我应该寻求灵感/启发?

7
合并多个用户帐户的体系结构
好的,我有一个网站,您可以在此注册自己并登录。您也可以使用您的Facebook,Twitter或linkedin帐户登录。 用户只能注册一个帐户,这一点很重要。因此,如果用户使用不同的方法登录,我想合并他们的帐户。解决此问题的最佳解决方案是什么? 例如,用户使用他的Facebook帐户登录。我使用这些数据自动为他注册一个帐户。我应该发送包含我们网站用户名和密码的电子邮件吗?(如果使用Facebook的政策可以的话)。我应该给他们第二个屏幕,他们可以在其中输入用户名和密码吗?但这不是用您的Facebook帐户登录的想法。它应该简化您的参与程序。 用户也有可能在我们的网站上注册了自己,并且下次他使用自己的Twitter帐户登录时。如何将这两个帐户合并为一个?最好的方法是什么? 所以基本上我的问题是:用户有4种不同的方式成为我们网站的成员。如果用户决定使用多种方式,如何确保所有这四种方式仅创建一个帐户?确保它不会对用户本人造成麻烦的最佳流程是什么? 编辑: 我问了这个问题3年后,我在一系列文章中给出了答案:https : //www.peternijssen.nl/social-network-authentication-setup/ https://www.peternijssen.nl/social- network-authentication-google / https://www.peternijssen.nl/social-network-authentication-merging-accounts/ https://www.peternijssen.nl/social-network-authentication-twitter-facebook/

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.