我想学习如何在 .net 中创建真正强大的应用程序-那些具有容错能力并能够承受意外情况的应用程序。我在哪里可以找到有关此主题的文献/指导?到目前为止,我的运气不太好。
C#中的冗余,可靠性和容错性 - 在哪里查找示例?
原标题:
最佳回答
我知道至少有一些资源。首先,MSDN上有一篇非常有用的文章,标题为“使用.NET框架的可靠性功能保持您的代码运行”。
克里斯·布鲁姆也在可靠性功能设计时发布了一个有关托管的帖子。 这可以提供一些有用的背景信息。
您可能会发现有用的搜索词包括“高可用性”、“CER”和“受限执行区域”。
祝你好运!真正可用的代码是相当棘手的。 :)
问题回答
如果您从软件实施的角度来看,则值得考虑使用“按合同设计(DbC)”。
根据此来源,合同设计的好处包括以下内容:
- A better understanding of the object-oriented method and, more generally, of software construction.
- A systematic approach to building bug-free object-oriented systems.
- An effective framework for debugging, testing and, more generally, quality assurance.
- A method for documenting software components.
- Better understanding and control of the inheritance mechanism.
- A technique for dealing with abnormal cases, leading to a safe and effective language construct for exception handling.
此外,我建议采用测试驱动开发(TDD)方法,这将有助于推动更健壮的设计。
个人觉得Stephen Toub的文章是关于约束执行区域最好的资源:使用.NET Framework的可靠性特性。最后,CER是任何容错代码的基础,因此这篇文章包含了你需要知道的几乎所有内容,并以清晰简明的方式解释。
话虽如此,您可以选择支持更激进的设计,其中您立即诉诸于应用程序域的破坏(或者在CLR托管时依赖于此模式)。例如,您可以查看隔板模式(如果您对此模式感兴趣并面临复杂的数据流,则可以查看响应宣言)。
话虽如此,“让它失败”的方法可能会出现逆反效果,如果您不能在此之后完全恢复,就像Ariane V所演示的那样。
相关问题
热门标签
- winforms
- combobox
- fogbugz
- java
- date
- internationalization
- asp.net
- iis
- url-rewriting
- urlrewriter
- c#
- enums
- ocaml
- haxe
- algorithm
- string
- viewstate
- .net
- c++
- c
- symbol-table
- mysql
- database
- postgresql
- licensing
- migration
- vb.net
- vb6
- declaration
- vb6-migration
- python
- psycopg2
- backup
- vmware
- virtualization
- gnu-screen
- authentication
- desktop
- excel
- xll
- cultureinfo
- regioninfo
- oracle
- client
- session
- download
- html
- virtual
- constructor
- scenarios
- perl
- full-text-search
- javascript
- ajax
- testing
- oop
- inheritance
- vim
- encapsulation
- information-hiding