2012-04-12 106 views
3

我正在寻找有关构建会计应用程序的方向的输入。应用程序需要允许高度定制,有时需要更改整个过程。应用程序体系结构简化应用程序定制

我想要一种方式来进行更改,而不必在客户有特定修改请求时重新编译整个应用程序。后端将是某种SQL数据库。由于成本原因,最可能的SQL Server Express。前端将是C#。

我正在考虑一个基于事件的系统,该系统将在发生不同类型的操作(如条目)时发生事件。然后我会有一个处理事件的插件系统。我可能需要让多个进程在数据最终保存之前以特定顺序应用于数据。它也需要触发其他进程。

我想保持我的基本应用程序相同,这适用于大多数客户,但具有加载其他特定客户拥有的自定义进程的优雅方式。

我接受所有建议。即使他们正在想办法完全不同的方式来解决问题。我们目前的内部开发人才是.NET和MS SQL Server。我不知道可能适合这种情况的软件模式。

附加信息: 这不是一个完全空白的石板系统,它将具有适用于大量客户的功能。由于各种原因,需求会根据州和甚至在需要自定义的地区和城镇级别进行更改。

我希望能够插入额外的预编译模块。当我开始研究可能的选择时,我想象一个空的处理程序,我可以通过插件插入代码。举例来说,一个新的条目是对总帐进行的,它引发了一个事件。处理程序被调用,但处理程序的代码来自一个插件,这可能是我的原始过程,适合80%的客户。如果客户想要自定义操作,我可以添加一个完全替换原始操作的插件,或者在原始操作之后通过另一个插件添加额外的后处理步骤。我猜想有一种分层的过程。

+1

你能详细说明为什么你不想编译?你是说你希望能够插入额外的预编译模块,或者拥有一切由某种配置驱动的东西吗? – Ian 2012-04-12 18:58:08

回答

2

您可以看看Managed Extensibility Framework 它提供了丰富的组合层功能,允许您构建松散耦合的插件应用程序。

更新:听起来像你需要预先定义的模块在不同的地理区域,并使用责任链设计模式可能会帮助你管理变化的原则。 对不起没有提供的代码只是抛出我的想法

+0

我真的很喜欢这种可能性。特别是在发现“扩展本身可以互相依赖,MEF将确保它们以正确的顺序连接在一起(另一件事情你不必担心)”之后。“这听起来非常接近我的想法。谢谢。 – Martin 2012-04-12 21:19:59

0

Windows Workflow Foundation (WF)(.NET Framework的一部分)是您的需求的潜在候选人。它可以动态组合各种动作,命令和脚本,让您可以更轻松地为不同的用户/客户自定义不同的工作流程。

WF由Biztalk用于大规模系统集成,并由许多其他应用程序托管,这些应用程序需要能够轻松修改许多较小任务和操作的编排。

您可能想从this tutorial on WF4开始。

HTH。

+0

这是有限的 - 在那里,做到了。如果您的应用程序不支持参加例如用户界面(在winform/wpf应用程序中),这是没有用的,因为您仅限于已提供的表单。但它对于灵活的业务逻辑非常有用。 – TomTom 2012-04-12 19:44:30

+0

我不得不仔细看看一些例子。看起来它可能有一些可能性。这让我想起SQL Server Integration Services。谢谢。 – Martin 2012-04-12 20:02:45

0

它不只是插件或方式你如何从技术上解决插件问题,使用MEF(+1 @ laptop)或其他什么,你必须尽最大努力定义插件在你的应用程序中“点”,这是最重要的,例如。你将在那里放置那些空白的“事件”来放置你的代码,或者这个事件或插件会有什么参数。

例如可用的插件将在保存事件之前,但您将不得不在应用程序中只保留一个位置以保存各种类型的业务文档,因此您可以在那里调用插件并且参数将是抽象文档对象。因此,你必须认真思考你的系统架构,对于各种插件点要足够抽象,并且完全做到这种架构,不要只做系统的一部分,并开始编码。

我希望你明白我的意思,因为英语不是我的母语。