4

在我正在处理的应用程序脚手架项目中,我试图决定是否使用OsloT4CodeDom来生成代码。我们的目标是将依赖关系保持在最低限度,并根据用户故事为领域驱动设计驱动代码生成。第一步是从用户故事创建测试,但我们希望领域专家能够在各种不同的媒体(例如自定义应用程序、Word 等)中编写他们的故事,并且仍然从用户故事生成测试故事。

到目前为止我所知道的:

  1. CodeDom 需要 .NET 但只能输出 .NET 类文件(例如 .cs、.vb)。难度级别相当高。
  2. T4 需要 CodeDom 和 VS Standard+。难度级别相当合理,尤其是使用T4 Toolbox时。
  3. 奥斯陆很新。我不知道依赖关系,但我想你必须至少在 .NET 3.5 上。我也不确定代码生成能力或添加新语法的复杂性。但是,领域专家可能很容易在 Intellipad 中编写用户故事。也不确定将 Word 中的故事转换为 MGrammar 的难易程度。

您对上述任何工具有什么想法、经验等。我们希望坚持使用 Microsoft 或开源工具。

4

5 回答 5

9

选择 T4 - 轻松决定。

  • 奥斯陆太新了,工具太原始了,只能是评估技术
  • CodeDOM 功能强大,如果您需要在运行时生成 CLR 类,并且愿意牺牲对生成的输出的简单修改。
  • T4(带有 T4 工具包)是一个易于使用的通用代码生成工具。到目前为止,我遇到的唯一困难是构建时集成。
于 2009-01-29T16:26:04.117 回答
3

一般来说,我将代码生成视为完整建模/编码故事的一部分。它应该伴随着一个通用框架,大部分管道都在其中完成。在我看来,生成巨大的类是没有用的,而具有良好定义的扩展点或钩子的体面框架将更好地维护和扩展。

您将需要为用户故事定义一些形式化的语言,无论是 XML 还是 Oslo 域语言。Oslo 需要您的领域专家学习 Oslo 工具。您可以使用 Word + XML。然后,您在 Word 中定义一个漂亮的模板,其中嵌入了 XML 模式,在编写完故事后,您可以从 Word 中以形式化的 XML 语法获取它。当然,该 XML 可以通过 XSLT 或 Linq 用于驱动生成器。

CodeDOM 功能强大,但相当麻烦。恕我直言,它不是一个易于使用的解决方案,并且它没有真正的模板支持。

我没有使用 T4 的经验,但它的模板功能是预先准备好的。

Oslo 产品确实很新,需要.Net 4.0,一个运行时环境。它仍然只是一个 CTP。这是一个非常强大的环境,虽然我对数据库生成的故事有些怀疑。

希望这可以帮助。

于 2009-01-29T16:18:18.250 回答
1

好吧,奥斯陆不适合这份名单。到目前为止,它还没有代码生成故事。所以坚持T4。

于 2009-04-22T07:27:50.263 回答
0

Oslo 无意为您生成代码。您将必须创建一个运行时(例如 C# 程序)来根据数据更改其行为。您可以将其视为 Internet 浏览器。

我不相信奥斯陆需要 .Net 4.0,就像 Rine 提到的那样。在 Avanade Netherland 实习期间,我正在创建 Oslo MSchema 和 Mgrammars 以及 C#3.5 运行时。根据给定的数据,它将创建(不生成)WCF 服务并运行这些服务。

于 2009-04-25T13:20:36.587 回答
0

奥斯陆有一些有趣的应用

  • “新 LDAP”System.Identity,更多内容在 PDC 会话视频 http://microsoftpdc.com/Sessions/SVC28
  • System.Modelling(我认为)Microsoft.UML2,您可以在其中推送有关存储库中的方法、类、模块等的信息,对其进行分析并创建报告。例如,在 2 个构建之间添加/删除方法创建报告http://microsoftpdc.com/Sessions/SVR19
  • 当然还有建模
于 2010-04-27T21:11:56.710 回答