C#控制台应用程序有什么用?这里博主结合了自己的工作经验和日常编程所接触到相关知识,总结了下自己对C#控制台应用程序在运用方面的理解。由于受到本身的技术水平影响,文章必然存在局限性,希望能给看到文章的朋友提供点思路,控制台肯定还能运用在更多方面和实现更加强大的功能!
这里我会列举出一些自己曾经遇到过的案例,其实一些比较简单的自动化操作是可以使用批处理脚本进行操作,但对于一些复杂点的业务逻辑操作,编写小工具就十分适用。
案例一,网站后台定时维护任务,使用C#控制台应用程序+Quartz.NET+Topshelf,简直是神器组合!就从本站举例,博客的后台维护服务程序就是用这种方法实现的,功能包括:
备注:
案例二、各种与系统/服务器打交道大批量操作,比如通过调用系统API或其他API解决某些需要自动化的问题,或者解决某些业务逻辑复杂的IO操作等。
先举个我通过IIS的API来批量绑定域名的例子,IIS提供了一个强大的API:Microsoft.Web.Administration,通过这个API,我解决了一个累人的高重复性的傻瓜式的手动工作:在IIS上创建上千个网站并绑定域名。如果手动操作估计都要好多天,当时感觉整个人都不好了!还好通过控制台调用API开发了一个自动建站并绑定域名的功能,一个下午就解决了问题,具体业务逻辑这里就不多说了,感兴趣的朋友可以自己去了解下这个强大接口,可以很方便的对IIS进行管理。这篇文章可以参考下:How to Use Microsoft.Web.Administration
另外我还经常使用控制台实现类似批量操作文件/目录,EXCEL批量处理操作,批量文件或者文本内容处理等IO操作功能。比如我曾经遇到需要对上万个txt文本文件进行过滤、分类和筛选的问题,这部分用的最多的就是System.IO命名空间下的类库。具体情况是这样的,首先要对所有的文本文件内容进行过滤,通过正则和其他方法,替换和删除掉不符合要求的内容,除此之外还要删除内容字数少的以及空白内容的文本文件。然后通过一定的算法来分析文本内容,并将文件进行分类并放入对应的文件夹中。
案例三、数据库操作小工具,这部分与维护有关,一般情况下是不需要编写这类型的小工具的,除非情况特殊,无法通过数据本身提供的工具处理。另外有些数据库本身就没有便利的可视化操作工具,这类型的数据库只能自己写小工具实现相关维护功能了,比如MongoDb。
先说说MongoDb,这段时间经常使用MongoDb,作为热门的非关系数据库,其实还有很多不方面的地方,简单来说,只要遇到稍微复杂的数据修改操作就够你头疼了。虽然本身有提供JavaScript shell,但我觉得并不好使,我更喜欢使用控制台配合官方提供的C#驱动去解决复杂的数据维护操作,逻辑简洁明了,还很容易进行调试。
在说说其他的数据库维护操作,复杂点的情况我习惯使用C#控制台编写一次性的小工具来处理,像MySql,MS SQL Server等数据虽然有提供类似游标的强大功能,但是我对数据库的熟练程度肯定比不上C#,所以习惯用控制台搞个小工具来解决。此外,一些业务逻辑错综复杂的,也真的只能自己编写代码来处理(比如要对数据库中上万篇文章内容进行处理,涉及到调用外部分词类库,利用正则替换,关键词匹配分析等)。这也算是一种我对代码优先想法的实现吧,毕竟我也不是专业的DBA。
案例四,编写自动化测试功能,我常用于测试各种API的调用,使用控制台程序来实现自己的测试需求是非常合适的。
2012年的时候,曾在电子商务的公司工作,常常需要与各种API打交道,有快递物流的、短信的、各大电子商务平台等等,每次都使用控制台进行功能测试,调用核心类库执行指定功能,比如测试淘宝的订单接口,当时是利用线程进行异步操作,通过订单接口,实现每隔几分钟获取店铺的新订单。通过控制台可以很容易监控相关结果,当然每步操作都是有记录在日志系统中的。现在遇到类似的需求都是使用开源的定时任务调度框架,比自己写线程和异步做定时任务简单多了。
每当有新的技术、新的问题出现,控制台都能直观简便的演示出我们需要的效果。像之前C# 6.0刚刚发布,我就使用控制台项目测试新特性。还有平常如果要测试和研究一些类库,临时想要实现某些小功能,我也都是用这种方式来处理。
强烈推荐看下这篇文章:
C#: Building a Useful, Extensible .NET Console Application Template for Development and Testing
以前自己用于演练的小项目,都是杂乱无章的放在文件夹中,看完这篇文章,最近打算根据文章提供的思路,运用反射整合成一个小型的演示系统!
在学习.NET技术过程中控制台应用程序确实功不可没,就像我大学那会刚刚开始接触C#编程,基本上所有入门书籍的范例和演示都是使用Console Application,我就是在C#的控制台应用程序上打印出最经典的Hello World!!!这阶段最遗憾的是老师从未提过控制台更加高级的运用方法,导致那时对控制台并不是那么的感兴趣。
文章上述中提到的例子,其实也可以使用如WPF、Windows Forms和ASP.NET等技术去实现,只不过CLI/CUI界面与GUI界面相比还是具有特定优势的,这里小结几点适合使用控制台程序的地方:
另外,除了在C#方面的运用,控制台的运用其实是很广泛的,很多开源软件、工具、数据库的操作方式都有运用控制台(CUI/CLI界面),像MongoDb,git,MySql,浏览器控制台等。另外常玩单机游戏的朋友就会发现很多游戏都自带控制台,例如CS1.6,辐射4之类的,可以让玩家进行更加自由的操作游戏。
C#控制台应用程序具有实用、简洁、方便等强大的特性。作为一名.NET程序员,我一直将控制台程序使用在自动化操作、维护操作、自动化测试和代码演练等方面。由于自身技术水平的限制,目前文章所表达的都是较为粗糙的理解,希望能给看到文章的朋友提供点思路。
最近微软在跨平台和开源方面越发给力,很早之前还宣布要发布Linux版SQL Server,Linux大家都知道最经典的操作方式就是控制台,我也打算开始学习相关技术。
作者:十有三
出处:https://shiyousan.com/post/636141957017962833
版权声明:本文采用知识共享许可协议:署名-相同方式共享 4.0 国际(CC BY-SA 4.0)。欢迎转载本文,转载请声明出处或保留此段声明。