- 相关推荐
2017系统架构师知识整理
系统架构师是很多软件行业的从业人员的终极目标,要想成为系统架构师,知识的储备不能少,下面小编为大家整理了一些关于系统架构师的知识,欢迎大家阅读!
考虑用户的观点
当您为智能客户端应用程序确定合适的性能目标时,您应该仔细考虑用户的观点。对于智能客户端应用程序而言,性能与可用性和用户感受有关。例如,只要用户能够继续工作并且获得有关操作进度的足够反馈,用户就可以接受漫长的操作。在 确定要求时,将应用程序的功能分解为多个使用情景或使用案例通常是有用的。您应该识别对于实现特定性能目标而言关键且必需的使用案例和情景。应该将许多使 用案例所共有且经常执行的任务设计得具有较高性能。同样,如果任务要求用户全神贯注并且不允许用户从其切换以执行其他任务,则需要提供优化的且有效的用户 体验。如果任务不太经常使用且不会阻止用户执行其他任务,则可能无须进行大量调整。对于您识别的每个性能敏感型任务,您都应该精确地定义用户的操作以及应用程序的响应方式。您还应该确定每个任务使用的网络和客户端资源或组件。该信息将影响性能目标,并且将驱动对性能进行度量的测试。可 用性研究提供了非常有价值的信息源,并且可能大大影响性能目标的定义。正式的可用性研究在确定用户如何执行他们的工作、哪些使用情景是共有的以及哪些不是 共有的、用户经常执行哪些任务以及从性能观点看来应用程序的哪些特征是重要的等方面可能非常有用。如果您要生成新的应用程序,您应该考虑提供应用程序的原 型或模型,以便可以执行基本的可用性测试。
事务原则
事务可以提供重要的支持,以确保不会违反业务规则并维护数据一致性。事务可以确保一组相关任务作为一个单元成功或失败。您可以使用事务来维护本地数据库和其他资源(包括消息队列的队列)之间的一致性。对于需要在网络连接不可用时使用脱机缓存数据的智能客户端应用程序,您应该将事务性数据排队,并且在网络连接可用时将其与服务器进行同步。您 应该避免使用涉及到位于网络上的资源的分布式事务,因为这些情况可能导致与不断变化的网络和资源响应时间有关的性能问题。如果您的应用程序需要在事务中涉 及到位于网络上的资源,则应该考虑使用补偿事务,以便使您的应用程序能够在本地事务失败时取消以前的请求。尽管补偿事务在某些情况下可能不适用,但它们使 您的应用程序能够按照松耦合方式在事务的上下文内与网络资源交互,从而减少了不在本地计算机控制之下的资源对应用程序的性能造成不利影响的可能性。
制定性能目标
当您设计和规划智能客户端应用程序时,您应该仔细考虑性能方面的要求,并且定义合适的性能目标。在定义这些目标时,请考虑您将如何度量应用程序的实际性能。 您的性能度量标准应该明确体现应用程序的重要性能特征。请努力避免无法准确度量的模糊或不完整的目标,例如,“应用程序必须快速运行”或“应用程序必须快 速加载”。您需要了解应用程序的性能和可伸缩性目标,以便您可以设法满足这些目标并且围绕它们来规划您的测试。请确保您的目标是可度量的和可验证的。定义良好的性能度量标准使您可以准确跟踪应用程序的性能,以便您可以确定应用程序是否能够满足它的性能目标。这些度量标准应该包括在应用程序测试计划中,以便可以在应用程序的测试阶段度量它们。本 节重点讨论与智能客户端应用程序相关的特定性能目标的定义。如果您还要设计和生成客户端应用程序将消耗的网络服务,则您还需要为这些服务定义适当的性能目 标。在此情况下,您应该确保考虑整个系统的性能要求,以及应用程序各个部分的性能与其他部分以及整个系统之间存在怎样的关系。
性能调整和诊断
在设计和实现阶段处理性能问题是实现应用程序性能目标的最划算的方法。但是,您只有在开发阶段经常且尽早测试应用程序的性能,才能真正有效地优化应用程序的性能。尽 管针对性能进行设计和测试都很重要,但在这些早期阶段优化每个组件和所有代码不是有效的资源用法,因此应该予以避免。所以,应用程序可能存在您在设计阶段 未预料到的性能问题。例如,您可能遇到由于两个系统或组件之间的无法预料的交互而产生的性能问题,或者您可能使用原来存在的、未按希望的方式执行的代码。 在此情况下,您需要追究性能问题的根源,以便您可以适当地解决该问题。本节讨论一些将帮助您诊断性能问题以及调整应用程序以获得最佳性能的工具和技术。
优化显示速度
根据您用于显示用户界面控件和应用程序窗体的技术,您可以用多种不同的方式来优化应用程序的显示速度。当您的应用程序启动时,您应该考虑尽可能地显示简单的用户界面。这将减少启动时间,并且向用户呈现整洁且易于使用的用户界面。而且,您应该努力避免引用类以 及在启动时加载任何不会立刻需要的数据。这将减少应用程序和 .NET Framework 初始化时间,并且提高应用程序的显示速度。当您需要显示对话框或窗体时,您应该在它们做好显示准备之前使其保持隐藏状态,以便减少需要的绘制工作量。这将有助于确保窗体仅在初始化之后显示。如果您的应用程序具有的控件含有覆盖整个客户端表面区域的子控件,则您应该考虑将控件背景样式设置为不透明。这可以避免在发生每个绘制事件时重绘控件的背景。您可以通过使用 SetStyle 方法来设置控件的样式。使用 ControlsStyles.Opaque 枚举可以指定不透明控件样式。您应该避免任何不必要的控件重新绘制操作。一种方法是在设置控件的属性时隐藏控件。在 OnPaint 事件中具有复杂绘图代码的应用程序能够只重绘窗体的无效区域,而不是绘制整个窗体。OnPaint 事件的 PaintEventArgs 参数包含一个 ClipRect 结构,它指示窗口的哪个部分无效。这可以减少用户等待查看完整显示的时间。使用标准的绘图优化,例如,剪辑、双缓冲和 ClipRectangle。这还将通过防止对不可见或要求重绘的显示部分执行不必要的绘制操作,从而有助于改善智能客户端应用程序的显示性能。
如果您的显示包含动画或者经常更改某个显示元素,则您应该使用双缓冲或多缓冲,在绘制当前图像的过程中准备下一个图像。System.Windows.Forms 命名空间中的 ControlStyles 枚举适用于许多控件,并且 DoubleBuffer 成员可以帮助防止闪烁。启用 DoubleBuffer 样式将使您的控件绘制在离屏缓冲中完成,然后同时绘制到屏幕上。尽管这有助于防止闪烁,但它的确为分配的缓冲区使用了更多内存。
【系统架构师知识整理】相关文章:
如何成为优秀的系统架构师08-30
小升初数学倍数特征知识点的归纳整理08-28
嵌入式系统基础知识10-28
消化系统疾病的检验知识08-27
外科各系统疾病护理常规知识08-26
2022音响设备与系统基础知识大全04-28
计算机系统的安全技术知识11-11
会计基础各章节知识点整理04-15
英语数词词汇的整理04-12
CAD制图规范及技巧整理08-29