gpt4 book ai didi

sql-server - 使用 WPF、WCF、PRISM 的更好方法是什么

转载 作者:行者123 更新时间:2023-12-04 01:52:16 32 4
gpt4 key购买 nike

我正在开发一个 EMR 应用程序作为我的项目。我使用 WCF 从中央服务器传输所有数据,WPF 用于 UI 和 PRISM 构建模块。

我的 WPF/PRISM 应用程序解决方案中有 3 个项目

  1. shell 和 bootsrapper 所在的主项目 (mainApplication)。
  2. 包含所有模块的类库(modulesLib)
  3. 用于与 wcf 服务通信的类库(基础结构)(在 visual studio 2008 中添加了 scvutil.exe 的服务引用)

项目引用添加如下

  • mainApplication 引用了“modulesLib”和“infrastructure”
  • modulesLib 引用了'infrastructure'

我目前的程序如下

  1. 使用 Windows 服务公开了 6 个 wcf 服务(6 个主机)
  2. wcf 服务实现中的硬编码数据库详细信息(查询、字段、表)
  3. 使用模块的 viewmodels/presenter 直接调用 WCF 服务(通过基础设施库)。
  4. 创建了名为抽象 ViewModelBase 的类(它实现了 INotifyPropertyChanged,也有 IUnityContainer、IRegionManager、IEventAggregator 引用)、抽象 ModuleBase(它实现了 IModule),每当我添加 View 模型或模块时,我都使用这两个类继承
  5. 我将所有数据绑定(bind)属性放入 viewmodel 并使用 viewmodel 的构造函数实例化给定 View ,设置其数据上下文并将其添加到 shell 中的区域
  6. 列表项

每当我想在模块之间进行通信时,我都会使用 CompositePresentationEvents

我想知道的

  1. 我做事的方式是否适合你们。
  2. 仍然有大量错误、崩溃错误等。我能否有一个地方来处理这些异常,这样应用程序就不会中断(日志记录或类似的东西)
  3. 使用 WPF、WCF、MSSQL 和 PRISM 进行项目工作的方式是什么

谢谢你那顿

最佳答案

你所做的大部分事情都很好。

但对于日志记录模块:在您的基础设施中创建一个单独的项目并将其注册为 Unity 的单例对象。

2- 为了更好地对您的项目进行单元测试,请充分使用 unity 作为类的依赖创建者,例如依赖契约(Contract)而不是实际实现。

3- 模块之间的通信使用 EventAgreegator

4- 对于全局命令,使用 CompositeCommand。

5- 如果您的 UI 具有组合框、列表框之类的选择器控件,请尝试扩展 Attached 属性,就像在 Button base 的 Composite Application 中所做的那样,这样您就不会在代码中 Hook 选择更改事件,而是您将能够调用命令。

关于sql-server - 使用 WPF、WCF、PRISM 的更好方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3502470/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com