最新版本号[免费下载]

C#控制台应用总结以及方法小论

作者: 发布时间:2020-06-17 来源:本站原创 点击数:

C#控制台应用程序有什么用?这里博主结合了自己的工作经验和日常编程所接触到相关知识,总结了下自己对C#控制台应用程序在运用方面的理解。由于受到本身的技术水平影响,文章必然存在局限性,希望能给看到文章的朋友提供点思路,控制台肯定还能运用在更多方面和实现更加强大的功能!

C#控制台程序实现维护/自动化的小工具

这里我会列举出一些自己曾经遇到过的案例,其实一些比较简单的自动化操作是可以使用批处理脚本进行操作,但对于一些复杂点的业务逻辑操作,编写小工具就十分适用。

案例一,网站后台定时维护任务,使用C#控制台应用程序+Quartz.NET+Topshelf,简直是神器组合!就从本站举例,博客的后台维护服务程序就是用这种方法实现的,功能包括:

数据库定时差异/完整备份,由于博客使用的数据库是sql express,不支持维护计划功能,只能自己编写相关定时备份功能。
数据分析整理,每天需要统计一次这些数据:博客评论数、浏览量、文章数,过滤非法评论等。
每天发送网站日志的邮件报告,另外还有各种邮件定时发送任务。
每天自动更新和静态化RSS源的XML文件、网站地图sitemap的xml文件、错误页面等,之前由于打算做全站静态化,所以还有全站静态化的操作。

备注:

Quartz.NET,开源作业调度框架,开源定时任务调度框架。
Topshelf,快速的开发、调试和部署windows服务的开源框架,开源的跨平台的宿主服务框架。简单来说,就是可以通过控制台应用程序部署出一个Windows服务,也可以用控制台的运行方式调试服务程序。
感兴趣的朋友可以上网了解下这两个开源框架,搭配使用十分强力,真的比以前传统的windodws服务开发方便快捷!!
这里贴下十有三博客网站后台服务程序的项目结构,只是一个简单小巧的服务程序,主要就是基于控制台程序:

案例二、各种与系统/服务器打交道大批量操作,比如通过调用系统API或其他API解决某些需要自动化的问题,或者解决某些业务逻辑复杂的IO操作等。

先举个我通过IIS的API来批量绑定域名的例子,IIS提供了一个强大的API:Microsoft.Web.Administration,通过这个API,我解决了一个累人的高重复性的傻瓜式的手动工作:在IIS上创建上千个网站并绑定域名。如果手动操作估计都要好多天,当时感觉整个人都不好了!还好通过控制台调用API开发了一个自动建站并绑定域名的功能,一个下午就解决了问题,具体业务逻辑这里就不多说了,感兴趣的朋友可以自己去了解下这个强大接口,可以很方便的对IIS进行管理。这篇文章可以参考下:How to Use Microsoft.Web.Administration https://docs.microsoft.com/en-us/iis/manage/scripting/how-to-use-microsoftwebadministration

案例三、数据库操作小工具,这部分与维护有关,一般情况下是不需要编写这类型的小工具的,除非情况特殊,无法通过数据本身提供的工具处理。另外有些数据库本身就没有便利的可视化操作工具,这类型的数据库只能自己写小工具实现相关维护功能了,比如MongoDb。

先说说MongoDb,这段时间经常使用MongoDb,作为热门的非关系数据库,其实还有很多不方面的地方,简单来说,只要遇到稍微复杂的数据修改操作就够你头疼了。虽然本身有提供JavaScript shell,但我觉得并不好使,我更喜欢使用控制台配合官方提供的C#驱动去解决复杂的数据维护操作,逻辑简洁明了,还很容易进行调试。

再说说其他的数据库维护操作,复杂点的情况我习惯使用C#控制台编写一次性的小工具来处理,像MySql,MS SQL Server等数据虽然有提供类似游标的强大功能,但是我对数据库的熟练程度肯定比不上C#,所以习惯用控制台搞个小工具来解决。此外,一些业务逻辑错综复杂的,也真的只能自己编写代码来处理(比如要对数据库中上万篇文章内容进行处理,涉及到调用外部分词类库,利用正则替换,关键词匹配分析等)。这也算是一种我对代码优先想法的实现吧,毕竟我也不是专业的DBA。

案例四,编写自动化测试功能,我常用于测试各种API的调用,使用控制台程序来实现自己的测试需求是非常合适的。

2012年的时候,曾在电子商务的公司工作,常常需要与各种API打交道,有快递物流的、短信的、各大电子商务平台等等,每次都使用控制台进行功能测试,调用核心类库执行指定功能,比如测试淘宝的订单接口,当时是利用线程进行异步操作,通过订单接口,实现每隔几分钟获取店铺的新订单。通过控制台可以很容易监控相关结果,当然每步操作都是有记录在日志系统中的。现在遇到类似的需求都是使用开源的定时任务调度框架,比自己写线程和异步做定时任务简单多了。

将C#控制台程序运用于演示、练习、学习

每当有新的技术、新的问题出现,控制台都能直观简便的演示出我们需要的效果。像之前C# 6.0刚刚发布,我就使用控制台项目测试新特性。还有平常如果要测试和研究一些类库,临时想要实现某些小功能,我也都是用这种方式来处理。

强烈推荐看下这篇文章:

C#: Building a Useful, Extensible .NET Console Application Template for Development and Testing
https://www.codeproject.com/Articles/816301/Csharp-Building-a-Useful-Extensible-NET-Console-Ap

以前自己用于演练的小项目,都是杂乱无章的放在文件夹中,看完这篇文章,最近打算根据文章提供的思路,运用反射整合成一个小型的演示系统!

在学习.NET技术过程中控制台应用程序确实功不可没,就像我大学那会刚刚开始接触C#编程,基本上所有入门书籍的范例和演示都是使用Console Application,我就是在C#的控制台应用程序上打印出最经典的Hello World!!!这阶段最遗憾的是老师从未提过控制台更加高级的运用方法,导致那时对控制台并不是那么的感兴趣。

小结下C#控制台应用程序适用的情景

文章上述中提到的例子,其实也可以使用如WPF、Windows Forms和ASP.NET等技术去实现,只不过CLI/CUI界面与GUI界面相比还是具有特定优势的,这里小结几点适合使用控制台程序的地方:

一般来说使用者是自己,或者其他技术人员,否则就要考虑开发GUI界面,利于用户体验。
只需要清晰的数据输入输出即可,对UI没有太多需求,也就是要求高效便捷,简单明了(图形用户界面的开发与之相比更加费时费力)。
主要面向服务器和系统的运维、测试和自动化操作功能,
用于开发某些简单自用的小工具,用完即丢,利于提高效率。
另外,除了在C#方面的运用,控制台的运用其实是很广泛的,很多开源软件、工具、数据库的操作方式都有运用控制台(CUI/CLI界面),像MongoDb,git,MySql,浏览器控制台等。另外常玩单机游戏的朋友就会发现很多游戏都自带控制台,例如CS1.6,辐射4之类的,可以让玩家进行更加自由的操作游戏。

总结:

C#控制台应用程序具有实用、简洁、方便等强大的特性。作为一名.NET程序员,我一直将控制台程序使用在自动化操作、维护操作、自动化测试和代码演练等方面。由于自身技术水平的限制,目前文章所表达的都是较为粗糙的理解,希望能给看到文章的朋友提供点思路。

C#控制台程序,也是一种解决方案,在某些开发中会用到。
和VC下的控制台程序没有本质的不同。
那我举例来说,《魔界》这个游戏的服务端就是控制台程序,但是很节约资源。

控制台程序在实际的项目中是很有用的。
它能够达成很多Form程序做不到的事情

很重要的一点就是挂起,Console是不会因为主线程超载而出现无法响应的情况的,很多WCF Service都是适用Console作为宿主的。
同时在学习的工程中,Socket/Tcp等相对复杂的需要线程操作的网络协议,最简单的实现是出现在Console里,因为不用考虑UI线程是否死机。

题外话:

最近微软在跨平台和开源方面越发给力,很早之前还宣布要发布Linux版SQL Server,Linux大家都知道最经典的操作方式就是控制台,我也打算开始学习相关技术。

本文责任编辑: 加入会员收藏夹 点此参与评论>>
复制本网址-发给QQ/微信上的朋友
AI智能听书
选取音色