Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Language agnostic 应用程序框架-购买、构建还是同化?_Language Agnostic_Cross Cutting Concerns_Application Framework - Fatal编程技术网

Language agnostic 应用程序框架-购买、构建还是同化?

Language agnostic 应用程序框架-购买、构建还是同化?,language-agnostic,cross-cutting-concerns,application-framework,Language Agnostic,Cross Cutting Concerns,Application Framework,我很好奇其他商店在基本应用程序框架方面做了什么?我将应用程序框架视为能够提供额外或扩展的功能,以提高由其构建的应用程序的质量 有很多现成的框架,比如Spring(或Spring.NET)等等。我发现这些框架最大的问题是它们不是按单点的。基本上,它们有太多的功能,除非这些功能的每一部分都是可用的最佳实现,否则很可能最终会使用多个框架的拼凑来完成这些任务,从而导致膨胀和混乱。在我看来,这适用于自由和商业系统 当然,写作在很大程度上是对轮子的重新发明。不过,我并不认为它毫无价值,因为它提供了最可定制的

我很好奇其他商店在基本应用程序框架方面做了什么?我将应用程序框架视为能够提供额外或扩展的功能,以提高由其构建的应用程序的质量

有很多现成的框架,比如Spring(或Spring.NET)等等。我发现这些框架最大的问题是它们不是按单点的。基本上,它们有太多的功能,除非这些功能的每一部分都是可用的最佳实现,否则很可能最终会使用多个框架的拼凑来完成这些任务,从而导致膨胀和混乱。在我看来,这适用于自由和商业系统

当然,写作在很大程度上是对轮子的重新发明。不过,我并不认为它毫无价值,因为它提供了最可定制的选项。然而,有些东西太大而无法开发,而且在这种情况下,由于对开发的前期成本的承诺犹豫不决,似乎没有得到很好的实施或根本没有实施

有大量的开源项目可以解决应用程序框架的各个部分。这些可以被采用或吸收(显然取决于许可协议),以帮助构建一个来自不同来源的综合框架

我们通过查看整个企业中应用程序中的一些更大的问题来处理这种情况,并列出了有效的交叉问题和反复出现的实施问题。最后,我们提出了一个混合解决方案,它部分是开源的,部分基于现有的开源选项,部分是定制开发的

我们框架中的一些示例:

  • 异常和事件日志记录提供程序。一种简单、统一的方法,通过这种方法,每个应用程序都可以以相同的方式记录异常和事件,只需最少的编码工作。开箱即用,它可以登录到SQL Server、文本文件、事件查看器等。它还包含可登录到其他源的扩展点
  • 变量赋值执行。一个通用类,它使用JUnit的语法,根据对象类型公开扩展方法。例如,要确定myObject是否不为null,我们可以执行一个简单的强制.That(myObject).IsNotNull();或者通过执行一个简单的exforce.That(myObject.IsOfType)(typeof(Hashtable))来确定它是否是一个特定类型;强制执行失败会引发适当的异常,既减少了代码量,又提供了实现的一致性
  • 单元测试助手。基于反射的一系列类,可以自动测试类及其属性。(灵感来源于CodePlex)但是从头开始写的。有助于简化对传统上很难或耗时的测试创建单元测试
我们还直接采用了其他一些功能,就像现在一样。例如,我们将用于AOP、模拟和DI


只是想知道其他人可能做了什么,以及您的框架解决了哪些您不满意的工具?至于我们的经验,我们肯定从新框架中获益,并且对我们所采取的方法感到满意。

我的简单建议是,您使用适合您需要的框架。当然,为了做到这一点,你必须进行实验,事先知道你在寻找什么。即使框架附带的内容远远超出了您的需要,但这样做的成本是多少?对于一般的问题,成本只是一个jar中的几个额外Mbs,我认为这对于大多数项目来说是可以的


最后,您应该选择一个能够正确完成工作的框架,以便您的重点是提供用户价值和简化开发人员的维护。当然,没有一个单一的框架可以解决每个人的问题,但是有一些框架在其目标上达到了最佳点。这完全是一个最佳折衷的问题。

我们的方法是让整个架构师团队(即“”)致力于:

  • 要么调整现有的开源框架,在某些情况下将其封装在内部API中,以便能够在需要时更改框架
  • 或者根据特定的需求创建新的框架,为几个项目创建多个团队
无论采用何种方法,这些框架都需要有很好的文档记录(至少有完整的文档记录),并且它们的发布需要得到很好的宣传:

由于所有团队的工作都将基于这些框架,因此他们需要尽快升级框架的版本,以便构建自己的交付。

正是如此。这就是为什么我们采用尽可能多的拼图块并围绕它们构建的方法。这与我们正在做的事情和我们的要求非常相似。唯一不同的是,我是承担这项任务的技术总监的“团队”。-)给人印象深刻的祝你好运:)