gpt4 book ai didi

sql-server - Prism 模块和数据库

转载 作者:行者123 更新时间:2023-12-01 11:58:04 25 4
gpt4 key购买 nike

我正忙于学习 Prism 4 以及一切的来龙去脉,但我还没有看到关于我想要完成的事情的教程/演练。希望这里有人已经或曾经从事过类似的项目。

我的应用程序是一个基本的 CRUD 应用程序,我将其分解为不同的关注区域和模块。但是,我希望所有模块共享一个通用的本地 SQL Express 数据库。数据库将以有限数量的表开始,每个模块将检查数据库中所需的表,如果不存在,则创建它们。我该如何着手完成这项工作?

我最初考虑过只添加我所有的表,但这似乎打破了我脑海中的模块化原则。也许我的想法是错误的,但是如果数据库已经完全意识到并与数据库创建时的给定模块强耦合,那么松散耦合模块的意义何在?

寻找一些见解。

最佳答案

您似乎在问两个问题。第一个是:我如何使用 PRISM 来确保我的模块特定模式存在于数据库中,如果不存在,则创建它。第二个问题是:我怎样才能最好地构建我的数据层,使其在模块化应用程序中解耦。

为了回答关于如何进行模块模式检查的第一个问题,我这样说:

如果您一直在使用 Prism,您无疑会想出几种方法来完成它。与编程中的任何事情一样,有很多方法可以完成它。如果我需要使用 Prism 执行此操作,我可能会执行以下操作:在我的模块程序集中创建一个类 (MyPlugInModule.cs),它实现了 Microsoft.Practices.Prism.Modularity.IModule 接口(interface)。然后,我会将代码放入构造函数或 Initialize 方法中,后者会检查数据库以查看模块模式是否存在。如果没有,则创建它。

为了回答关于如何最好地构建数据模块化的第二个问题,我这样说:

正如 Goblin 所说,这实际上取决于您要实现的模块化类型。如果您正在销售此应用程序并且希望将模块作为独立包销售,那么您可能不想创建数据模型来支持包,直到最终用户为它付费。

您应该能够使用 Entity Framework 来确保您的模块能够与基础应用程序模块共享实体。此外,根据您的要求,或者您的体系结构是否允许,您可能希望将模型/数据层抽象为与模块不完全一致的程序集。这将减少代码重复和依赖。

在我目前正在开发的一个应用程序中,我们将 WPF 与 MVVM、PRISM 与 MEF 以及 WCF 数据服务结合使用。我们的客户端模块共享一个数据组件,该数据组件与我们位于基本应用程序模型(身份验证/角色表、应用程序数据等)之上的主要数据服务端点通信。当在我们的数据库中创建特定于模块域的表时,将在服务器上创建一个新模型和服务端点,并在客户端创建一个单独的程序集以与数据模型进行通信。

如果特定于模块的模型发生变化,则只需更改受影响的组件,因为特定于模块的数据封装在其自己的服务和客户端程序集中。从测试、安全等隔离的角度来看,这是一个更好的选择。缺点当然是如果基本应用程序模型发生变化,则必须更新所有关联的模块特定实现。

但同样,这实际上取决于您的要求。如果您坚持使用具有 MEF、模块化设计模式和 Entity Framework 4 的 PRISM 4,您应该能够提出一个很好的模块化解决方案,而不是紧密耦合。

关于sql-server - Prism 模块和数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4190603/

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