有关设计.Net框架应用程序的提示

Inf*_*ner 5 c# silverlight wpf

在构建,设计和实现.net框架应用程序时,能否请您提供一些提示/指南,其要求如下:

  1. 它将是一个分析工具,它将从文件,SQL数据库中检索数据,并且可能是多维数据集.所以数据层应该能够处理它.中间件应完全独立于其他层,因此可能需要一个IoC容器(您建议哪一个)
  2. 它将部署在本地Intranet上
  3. 前面的层可能是WPF应用程序或Silverlight(现在,我专注于Silverlight但重点是它会改变)
  4. 由于将为许多客户端部署框架,因此将来很容易定制和改进它而不会改变太多代码
  5. 我需要一种方法来存储配置信息,应用程序将在应用程序加载事件中选择它以设置其感觉和外观.

我有两个月的时间来实现它并寻找尽可能多的提示.

Rob*_*nik 5

SoC开始了

将您的应用程序分成几个使用IoC(接口+实现)的程序集:

  • 应用程序模型程序集 - 所有其他程序集将引用此程序集,因为这些类将用于内部通信 - 它们通常只是POCO
  • 演示程序集 - 引用应用程序模型和业务服务 - 这一个是WPF或Silverlight,无论如何使用MVVM使您的测试生活更轻松
  • 业务服务程序集 - 引用应用程序模型和数据存储库程序集
  • 数据存储库 - 这些存储库定义实际从存储中获取数据的存储库

然后我再创建三个:

  • 文件数据提供者
  • 数据库提供者
  • 立方供应商

数据存储库将引用所有三个并使用它们来提供必要的数据.

如果配置变得非常复杂且具有许多功能,那么您应该将它放在单独的程序集中并通过业务服务程序集引用它.

使用哪个MVVM库

既然你提到了时间,我想你很难抓住你的截止日期.当使用MVVM(我建议使用)时,我也建议你不要使用完整的PRISM(也就是P&P的复合应用指南),而是使用MVVM Light Toolkit.你需要更少的时间来加入这个行列.

代码生成

在适当的地方,我建议你充分利用T4.我用它来导入存储过程调用,以避免在调用存储过程(和使用它们的参数)时使用魔术字符串.查看我的博客文章.

DAL技术/库

不要使用SqlConnection/ SqlConnection功能之类的东西编写自己的数据访问代码.今天有许多数据访问层库/技术可以使用,而不是重新发明轮子.如果你知道nHibernate,那就用它吧.如果你知道EF,那就用它吧.如果您知道其他任何事情,请使用它.任何能够为您提供/生成尽可能多的代码的东西,已经过测试和调试.

所以这一切归结为:

DRY + YAGNI

aka 不要重复自己,你不会需要它 =不要过度设计你的代码.

敏捷开发者应该是懒惰的

它们应该根据需要发展,而不是更多!TDD通过red => green => refactor步骤隐式提供此过程.