数据仓库管理命令行应用程序 - PowerShell或C#控制台应用程序

时间:2008-12-05 17:16:13

标签: powershell console-application

我将在这个问题的序言中说这是微软唯一的商店。

如果您要编写控制台应用程序来管理数据仓库,您会使用什么:
1)为PowerShell编写自定义环境(ala最新版本的Exchange / SQL Server)
2)将其写为C#控制台应用程序

如果#2有任何框架可以卸载为您编写“菜单系统”或任何其他任务。

如果此应用程序需要持续6到8年 - 您会使用PowerShell吗? 团队中没有人目前拥有PowerShell经验,但我们是快速学习者。

5 个答案:

答案 0 :(得分:5)

如果您将管理功能编写为PowerShell cmdlet,则可以通过让人们直接运行cmdlet或将它们包装在GUI中来显示该功能。使用PowerShell可能会为您提供最长期的灵活性,并且随着MS实现更多PowerShell cmdlet,这意味着如有必要,可以将管理数据仓库与其他更大的业务流程合并。我可能不会选择编写一个C#控制台应用程序 - 但我有一个明显更“管理员”的视角。我们的管理员已经厌倦了向我们抛出自定义控制台应用程序 - PowerShell的想法是以支持命令行和GUI管理的方式标准化所有内容。

答案 1 :(得分:1)

我认为你们两个都可以成功,并且应该能够在两者之间切换而不会有太多麻烦。如果您开始构建控制台应用程序但稍后学习PowerShell,则可以丢弃许多控制台应用程序特定的代码(例如命令行解析代码)并构建一些PowerShell cmdlet来包装现有的API。或者,如果您在门外构建了一堆Cmdlet,但是稍后需要切换到控制台应用程序,那么编写Cmdlet就不会浪费太多时间。

所以,我真的没有这种或那种强烈的建议。我会说:嘿,去尝试PowerShell。如果您不喜欢它,切换起来并不困难。

答案 2 :(得分:1)

我发现PowerShell是一种更易于维护的小型解决方案。控制台应用程序需要重新链接到新库并重新编译和重新分发,当您依赖的库发生更改时(在我的情况下从Visual Studio 2005 - Visual Studio 2008的代码库和其他东西)以及脚本可能调用vsinstr,mstest等的可执行文件与PowerShell脚本一样,您可以轻松地为每个环境进行自定义,而不必为您选择的每个环境进行编译,链接和部署。实际上,如果从注册表获取路径信息,则可以在两个环境中运行相同的脚本。

你可以做任何你想做的事情,我只是喜欢维护一个简单的文本文件,然后是一个控制台应用程序。只是个人喜好。

答案 3 :(得分:0)

当您说管理数据仓库时,您在谈论什么样的任务?

我将在T-SQL(清除,存档,转换)中进行大部分管理 - 与之相关的界面可能非常薄(甚至不存在)。

好的,基于你的评论,我会得到一个代码,它在带有.NET程序集(典型的API类库)的存储过程中完成所有工作,尽可能多地在存储过程中使用程序集来处理东西。在那里更容易完成或需要COM或其他什么。然后我会将类库包装在cmdlet中,或者只是从PowerShell调用.NET对象(请记住,PowerShell可以实例化对象。)。

现在你有了一个.NET库,它也可以从网页,GUI应用程序中调用,如果你需要它,你有一个cmdlet和一个直接的.NET接口 - 还有从SQL调用它们的选项如果它们在SQL层完全实现。

答案 4 :(得分:0)

实现PowerShell而不是cosole应用程序的美妙之处在于您不必编写所有参数解析或所有格式的代码。 PowerShell为您完成所有这些工作。当然,如果需要,您可以覆盖默认值。你可以免费获得通配符。您还可以让您的Cmdlet从管道中获取值,从而为自动化开辟各种可能性和用途。使用PowerShell,最终用户和开发人员都将获得更好的体验。