在我正在使用的应用程序脚手架项目中,我正在尝试决定是使用Oslo,T4还是CodeDom来生成代码。我们的目标是将依赖关系降至最低,并从用户故事中为域驱动设计驱动代码生成。第一步是从用户故事创建测试,但我们希望领域专家能够在各种不同的媒体(例如自定义应用程序,Word等)中编写故事,并且仍然可以从故事。
到目前为止我所知道的:
使用上述任何工具,您有什么想法,经验等等。我们希望坚持使用Microsoft或开源工具。
答案 0 :(得分:9)
使用T4 - 轻松决定。
答案 1 :(得分:3)
一般来说,我将代码生成视为完整建模/编码故事的一部分。它应该伴随着一个通用框架,其中大部分管道都已完成。在我看来,生成大型类没有用,而具有明确定义的扩展点或钩子的体面框架将更好地维护和扩展。
您需要为用户故事定义一些形式化语言,无论是XML还是Oslo域语言。奥斯陆将要求您的领域专家学习奥斯陆工具。您可以使用Word + XML。然后在Word中定义一个好看的模板,使用嵌入式XML模式,在编写故事之后,您可以使用正式的XML语法从Word中获取它。这个XML当然可以通过XSLT或Linq用于驱动生成器。 / p>
CodeDOM功能强大,但相当繁琐。恕我直言,这不是一个易于使用的解决方案,它没有真正的模板支持。
我没有使用T4的经验,但它的模板功能是预备。
奥斯陆产品确实很新,需要.Net 4.0,一个运行时环境。它仍然只是一个CTP。这是一个非常强大的环境,虽然我对数据库生成故事有些怀疑。
希望这有帮助。
答案 2 :(得分:1)
嗯,奥斯陆不适合这份名单。到目前为止它还没有代码生成故事。所以坚持使用T4。
答案 3 :(得分:0)
奥斯陆无意为您生成代码。您将不得不创建一个运行时(例如C#程序),它根据数据改变它的行为。您可以将其视为互联网浏览器。
我不相信奥斯陆需要.Net 4.0,就像Rine提到的那样。对于我在Avanade Netherland的实习,我正在创建Oslo MSchema和MGrammars以及C#3.5运行时。根据给定的数据,它将创建(不生成)WCF服务并运行它们。
答案 4 :(得分:0)
奥斯陆有一些有趣的应用