用于分层可重用体系结构的框架

时间:2010-12-18 00:30:52

标签: frameworks architecture

我的问题非常简单,我的目的是生成一个包含您的回复的存储库,以便在选择用于开发企业通用应用程序的框架时为社区服务。 这非常适用于通用语言,例如 C ++,C#或Java

  • 您建议使用哪种框架来生成分层架构
  • 根据您的经验,为什么您更喜欢使用某些框架与您自己的架构
  • 您认为所选框架将作为软件开发行业的首选方案有多长时间?

4 个答案:

答案 0 :(得分:22)

答案 1 :(得分:4)

专门回答第二个问题:

开发自己的框架会给您带来必须维护它并教育新开发人员使用它的负担。

您的框架越大,您需要投入的时间就越多,因此您解决实际业务问题的时间就越少。如果您的业务问题是框架,这是可以的,但是否则它可能会成为一个问题,即使是那些可以将一群人奉献给这样一个框架的大公司。

如果你是一家规模较小的公司(最多约15名开发商),这真的会成为一个巨大的负担。

此外,如果您自己的框架是可以利用第三方开发的框架(例如,第三方可以为JSF开发组件),那么您自己的框架显然无法利用它。 / p>

除非您开源自己的框架,但这只会显着增加支持它的负担。只是将您的源代码转储到sourceforge上并不重要。你必须积极支持它。突然间您的框架变成了他们的框架,可能会有“怪异”的功能请求,以及您没有个人兴趣的环境的笨拙错误报告。

这也假设您的框架实际上将由外部用户使用。除非它非常非常,非常好,并且你在其中投入了大量的精力,如果它只是第八个Java web或ORM框架,这可能不会发生。

显然,一些人必须承担创建新框架的工作,否则行业会停滞不前,但如果您的主要关注点是您的业务问题,我会真的会三思而后行开始您自己的框架

答案 2 :(得分:1)

非常含糊的问题,我不确定在这个时候为工作项目“编写自己的”是个好主意(除非编写自己的,是项目)。如果这是一个学习练习,那很好,但除此之外,请使用其中一个已经做得更久的人写的图书馆。如果你真的想参与其中,请阅读他们的代码,尝试提供补丁等。

对于.Net,有Sharp Architecture这是一个非常流行的分层应用框架。

以下是我使用的一些内容(我不使用Sharp Architecture)

首先,基础设施的东西

  • 对于依赖注入,我使用StructureMap。我之所以使用它,是因为它比我想或写的任何东西都更强大和更高效,而且它在.Net社区中得到了很好的支持。它也坚持成为DI,并且不会冒险进入我可能想要使用其他库(AOP等)的其他东西。流畅的配置太棒了(但很多.Net DI工具现在都有)
  • 对于AOP,我使用Linfu Dynamic Proxy。我知道很多人因为性能原因喜欢代码编织器,但这对我来说似乎有点像过早的优化。
  • 对于DataMapper,我使用AutoMapper。这是我再次关闭的地方。如果你可以根据惯例做你的映射,那么很好,我会用它。一旦我不得不开始调整配置来做特殊事情....对我来说,开始进入灰色区域,代码可能更清晰,只有一些left =>右包裹在一个函数中。

网络/ UI

  • Asp.Net MVC。虽然说实话,我最近有一个吵架,可能很快就会转向FubuMvc。 Asp.Net MVC似乎在API设计方面具有分裂的个性(动态在这里,静态在那里,using块来渲染表单,而System.Actions用于渲染其他东西等)。再加上它不是真正的OSS(你不能提交补丁)的事实,对我来说,有一个令人信服的理由,为什么社区应该提出更好的OSS。

持久性

  • NHibernate,特别是Fluent NHibernate。当然我喜欢自己编写OR / M,但与此同时我确信那些参与NHibernate工作的开发人员比我更聪明。

服务/分销等

  • WCF for Synchronous calls
  • NServiceBus用于消息传递和大多数异步调用。

这些东西大部分都是OSS,所以它会持续多长时间,好吧,我会想象很长一段时间。

答案 3 :(得分:0)

这个问题效果不好。选择框架很困难,而且特定于上下文。对于每个选择过程,您最终可能会得到一个简单的候选名单和一个简单的问题列表,但这些列表不能很好地转移到其他选择。

影响决策的参数数量和参数敏感度非常大,在企业级别,很多都不是技术性的。

目前,有没有框架已准备好支持这些近期企业需求:

  • 大多数劳动力的转换,从个人电脑到平板电脑和手机;
  • 从Web客户端和rdbms切换到基于p2p /断开连接的存储和分发
相关问题