大型应用程序的C#体系结构

大型应用程序的C#体系结构,c#,.net,entity-framework,C#,.net,Entity Framework,你能告诉我一些关于用c#思考大型应用程序的教程/书籍吗。 我使用过3层,但我需要更具体的东西: 一种设计面板的方法,以便为特定用户加载特定面板和特定DLL 一种数据库管理方法,当用户修改一个条目时,其他人不能修改该条目 我应该使用实体框架,还是应该对数据库和类的创建持老一套的态度 以上任何链接都将不胜感激 非常感谢 这是一个宽泛的主题,但无论您使用何种语言或项目的具体情况,我建议您阅读两本书: 如果您对如何完成某项任务有具体问题,我会将其发布在这里或谷歌上。关于面板/UI体系结构,您可以

你能告诉我一些关于用c#思考大型应用程序的教程/书籍吗。 我使用过3层,但我需要更具体的东西:

一种设计面板的方法,以便为特定用户加载特定面板和特定DLL 一种数据库管理方法,当用户修改一个条目时,其他人不能修改该条目 我应该使用实体框架,还是应该对数据库和类的创建持老一套的态度

以上任何链接都将不胜感激


非常感谢

这是一个宽泛的主题,但无论您使用何种语言或项目的具体情况,我建议您阅读两本书:


如果您对如何完成某项任务有具体问题,我会将其发布在这里或谷歌上。

关于面板/UI体系结构,您可以(从Microsoft模式与实践)了解它。它是一个处理复合UI的体系结构/库集,UI在运行时加载,由独立的通信部分组成。值得注意的是,它是为与WPF或Silverlight一起使用而构建的;有一个旧的库,它具有与WinForms类似的功能,名为“”,不再受支持

就数据访问而言,听起来您希望在UI中打开记录进行编辑时实现活动记录锁定;这是一个独立于您使用的实际数据访问代码的功能。如果您使用的是纯ADO.NET而不是EF,那么实现数据库级锁定可能会更容易,因为EF增加了抽象层。

-有一个非常好的代码示例,其中有一章介绍了并发性


我想,没有任何在线资源可以与这些书的复杂性竞争。

就是这样一种架构。它非常详细,已经做了很多工作。

附带了独立文档,以及有关大型.NET应用程序架构的在线博客文章和文章:

  • (8页)
  • (7页)

    • 我的这类问题的出发点是书本。从类构造如何影响堆栈/堆上的内存到这些类型讨论的最佳实践,这一过程贯穿始终。特别是动态加载组件,这是实现这一点的最佳方法

      这也会提高你的写作技巧,杰夫是一位伟大的作家

      我把这本书推荐给我认识的每一位C#开发者,他们总是做得更好。这就是我们都希望的吗


      祝你好运

      这不是一本书或一个教程所能涵盖的。

      您需要确定UI框架、数据访问技术、模式和总体架构。当然,您还需要深入了解.NETFramework以及CLR的工作原理。没什么特别的。因为您有UI定制(面板)需求,所以WPF绝对是比WinForms更好的UI框架候选者

      话虽如此,我的建议-

      • 对于C#:

      • .NET和CLR:

      • UI框架-WPF:

      • 与WPF一起使用。MVVM将使您保持在维护的轨道上。你可以遵循微软的指导方针。对于具有复杂UI需求的大型应用程序,Prism是一个更好的选择。您可能需要使用依赖项注入。与MVVM和Prism携手共进

      • 是的,实体框架可以处理并发问题,但这种特性在几乎任何其他数据访问框架中都可用。实体框架提供了许多其他功能,但在使用它时,您应该清楚自己在做什么。否则,最终可能会出现性能问题。肯定会有帮助的


      如果您想快速学习并快速了解技术的实质,我建议您建立一个Pluralsight帐户,因为该帐户将涵盖您需要的技术,并突出显示您可能没有听说过的其他技术。每月订阅一本书的费用与一本像样的书差不多


      没有投反对票,但你的问题有点模糊,描述有点。。。令人困惑试着把这个问题分成一个关于你要找的书的类型的问题(尽可能具体地描述体系结构),或者另一个/其他关于你的需求和你如何看待设计的问题。我看到实体框架标签,我认为它真的很慢100%同意Will,但是让我们看看我们是否能帮上忙。我对设计模式很熟悉。在gui方面,我是新手。我现在最想要的是一些关于制作这些的指南panels@psu您希望使用什么UI框架:Silverlight/WPF/WinForms?请不要使用CAB。该功能不支持较新版本的visual studio,因此除非您使用VS2008,否则您将无法使用famework的Guidence Automation Toolkit生成对象之间的连接。该域似乎不再可用。。。“不存在的域名”@Talon-我猜这是一个暂时的托管问题。。。该域仍在注册中,托管服务器似乎无法识别它。