Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $YECBGYFECGEAFWHA as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2

Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $BBWFDDBHHYHDXXAB as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2
简易项目搭建(用于一般杂七杂八的小功能点)_创想鸟

简易项目搭建(用于一般杂七杂八的小功能点)

在工作中,我们常常会遇到许多需要完成的小功能点。以我自己的工作情况为例,最常见的是两个方面:1、控制台项目;2、web界面(纯前端)。

首先让我们讨论控制台项目的工作内容。在没有使用PostMan之前,工作中大量使用接口调用。在项目准备阶段,首先需要对接口的使用进行描述。在主要使用WebService和WCF服务接口的公司中,可以通过Visual Studio直接进行一套可视化的操作,通过代理类的方法引用接口,这真是C#开发的乐趣所在。言归正传,现在让我们详细讨论一下工作中常用的功能点:1、测试服务接口;2、编写Windows服务。

在控制台项目中完成服务接口测试的功能非常简单,本文主要强调一些常用方法。在编写类项目时,主要会使用三个类库:1、Newtonsoft.Json(JSON序列化);2、log4net(日志记录);3、NUnit(单元测试)。

从业务角度来看,无非就是调用接口进行测试,如果成功则通过,如果失败则记录日志。单元测试的主要目的是为了批量使用接口,测试接口的并发性和其他操作。

Windows服务在我的工作中主要结合任务调度使用,同时结合一些其他技术,如队列和缓存。例如:1、每隔10秒同步一次A数据库(SqlServer)数据到B数据库(Oracle),表名和字段名都不相同;2、每天凌晨2点运行一项或多项任务,成功或失败均记录日志并推送给管理员(通过手机短信、邮件、内部服务平台)。

这些大多是结合任务调度来完成的,通常使用Quartz.Net进行任务调度,将控制台服务转换为Windows服务使用Topshelf,日志记录使用log4net。通过这三个组件,我的一般需求就能得到满足,其他功能点根据需要引用不同的类库。

接下来是简单的项目搭建。项目搭建1.0:新建一个控制台项目,运行环境选择.NET Framework 4.5。

新建解决方案:

简易项目搭建(用于一般杂七杂八的小功能点)

首先引用Nuget包,不同的层引用不同的Nuget,再次简单说明一下:

Common:基础层Models:实体层Schedules:调度层

进行不同的模块封装。

log4net的引用和封装:log4net不需要做太多的封装,只需提供一个初始化和一个获取日志接口的方法即可。

public class LogFactory{    static LogFactory()    {        string path = AppDomain.CurrentDomain.BaseDirectory + @"/log4net.config";        FileInfo configFile = new FileInfo(path);        log4net.Config.XmlConfigurator.Configure();    }    public static ILog GetLogger(string name)    {        return LogManager.GetLogger(name);    }    public static ILog GetLogger(Type type)    {        return LogManager.GetLogger(type);    }}

最简单的log4net配置文件

      

至此,log4net的工作就完成了。

Newtonsoft.Json:

简易项目搭建(用于一般杂七杂八的小功能点)

版本随意选择。在编程过程中经常会使用JSON的序列化和反序列化,编写一个简单的帮助类:

/// /// Json帮助类/// public class JsonHelper{    ///     /// 将对象序列化为JSON格式    ///     /// 对象    /// json字符串    public static string SerializeObject(object o)    {        string json = JsonConvert.SerializeObject(o);        return json;    }    ///     /// 解析JSON字符串生成对象实体    ///     /// 对象类型    /// json字符串(eg.{"ID":"112","Name":"石子儿"})    /// 对象实体    public static T DeserializeJsonToObject(string json) where T : class    {        JsonSerializer serializer = new JsonSerializer();        StringReader sr = new StringReader(json);        object o = serializer.Deserialize(new JsonTextReader(sr), typeof(T));        T t = o as T;        return t;    }    ///     /// 解析JSON数组生成对象实体集合    ///     /// 对象类型    /// json数组字符串(eg.[{"ID":"112","Name":"石子儿"}])    /// 对象实体集合    public static List DeserializeJsonToList(string json) where T : class    {        JsonSerializer serializer = new JsonSerializer();        StringReader sr = new StringReader(json);        object o = serializer.Deserialize(new JsonTextReader(sr), typeof(List));        List list = o as List;        return list;    }    ///     /// 反序列化JSON到给定的匿名对象.    ///     /// 匿名对象类型    /// json字符串    /// 匿名对象    /// 匿名对象    public static T DeserializeAnonymousType(string json, T anonymousTypeObject)    {        T t = JsonConvert.DeserializeAnonymousType(json, anonymousTypeObject);        return t;    }}

以上就是简易项目搭建(用于一般杂七杂八的小功能点)的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/153959.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
6888 元 / 7888 元起,微软 12 英寸 Surface Pro / 13 英寸 Surface Laptop 国行上架
上一篇 2025年12月4日 01:11:00
Chrome浏览器主题皮肤更换教程:访问官方商店打造个性化界面
下一篇 2025年12月4日 01:14:46

相关推荐

发表回复

登录后才能评论
关注微信