.net中型系统 第三章 实战项目开发接口篇之一
前言
本篇为接口篇,是实战项目的中心篇章,因为其起到了承上启下的作用,上可处理业务逻辑,增删改查等数据操作,下可为各终端(android,ios,pc,小程序等)提供数据能力,其重要性不言而喻。
其构成有:业务接口,日志记录,访问配置,缓存等等,正文会为大家一一从头解析,也会由此铺叙开,其中会涉及到图片系统,访问第三方系统等,这些大家可以先标记,在本篇章会略过,但后面的篇章均会一一讲解。
好了,让我们开始实战吧!!!
API项目
新建ASP.NET Web项目,所有接口均以.ashx文件作为外部终端访问接口文件,再配合.config配置文件,配置访问第三方系统,再辅以log4net构建日志系统,形成完善的可拓展接口系统
Web.config
配置相关数据库连接,易拓展数据,日志记录文件地址等
1、数据库连接:
<connectionStrings>
<add name="Data_ConnectionString" connectionString="metadata=res://*/DAL.DALData.DataModel.csdl|res://*/DAL.DALData.DataModel.ssdl|res://*/DAL.DALData.DataModel.msl;provider=System.Data.SqlClient;provider connection string="data source=.;initial catalog=Micro.Fields.LocalMutualService;persist security info=True;user id=sa;password=123456;multipleactiveresultsets=True;application name=EntityFramework"" providerName="System.Data.EntityClient" />
</connectionStrings>
2、易拓展数据:配置在
<appSettings> </appSettings>
3、日志记录地址
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
</configSections>
<log4net>
<logger name="LogInfo">
<level value="INFO" />
<appender-ref ref="InfoAppender" />
</logger>
<appender name="InfoAppender" type="log4net.Appender.RollingFileAppender">
<!--使用Unicode编码-->
<Encoding value="UTF-8" />
<param name="File" value="App_LogFile\\" />
<param name="AppendToFile" value="true" />
<!--记录日志写入文件时,不锁定文本文件,防止多线程时不能写Log,官方说线程非安全-->
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<!--最多产生的日志文件数,超过则只保留最新的n个。设定值value="-1"为不限文件数-->
<param name="MaxSizeRollBackups" value="-1" />
<!--是否只写到一个文件中-->
<param name="StaticLogFileName" value="false" />
<!--固定后缀-->
<PreserveLogFileNameExtension value="true" />
<!-- 每个文件的大小限制 -->
<param name="MaximumFileSize" value="10MB" />
<!--按照何种方式产生多个日志文件(日期[Date],文件大小[Size],混合[Composite])-->
<param name="RollingStyle" value="Composite" />
<param name="DatePattern" value="yyyyMM\\APP接口\\信息\\yyyyMMdd".htm"" />
<!--过滤设置,LevelRangeFilter为使用的过滤器。 -->
<!--<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="DEBUG" />
<param name="LevelMax" value="WARN" />
</filter>-->
<layout type="log4net.Layout.PatternLayout">
<param name="Header" value="[Header]<br/>" />
<param name="Footer" value="<br/ >[Footer]<br/>" />
<param name="ConversionPattern" value="<HR COLOR=red>%n日志时间:%d [%t] <BR />%n日志级别:%-5p <BR />%n日 志 类:%c [%x] <BR />%n%m <BR />%n " />
</layout>
</appender>
</log4net>
其余的配置可以根据业务系统自身需要,增加对应的配置
log4net
1、引用log4net.dll
2、AssemblyInfo.cs配置:[assembly: log4net.Config.XmlConfigurator()]
3、Global.asax配置
public static log4net.ILog log;
protected void Application_Start(object sender, EventArgs e)
{
log4net.Config.XmlConfigurator.Configure();
log = log4net.LogManager.GetLogger(LogType.LogError.ToString());
}
配置
1、配置图片系统,新建FileConfig.config
<?xml version="1.0" encoding="utf-8" ?>
<Config>
<Url>http://img.local.com</Url>
<Application>Local</Application>
<Key>B68A5EE8-79E7-4DCE-BA30-E979B5FE94C4</Key>
</Config>
2、配置文件格式,新建:UploadConfig.config文件
<?xml version="1.0" encoding="utf-8"?>
<Config>
<Item Key="CDC04546-7885-4C73-89B5-E2756335DF13" Name="Image" ImageFieldName="file" HostUrl="http://img.lms89.com" ImageMaxSize="20971520" ImageAllowFiles=".png,.jpg,.jpeg,.gif,.bmp" ImagePathFormat="image/{appid}/{usertype}/{userid}/default/{guid}" />
<Item Key="CDC04546-7885-4C73-89B5-E2756335DF13" Name="Audio" ImageFieldName="file" HostUrl="http://img.lms89.com" ImageMaxSize="20971520" ImageAllowFiles=".amr" ImagePathFormat="image/{appid}/{usertype}/{userid}/default/{guid}" />
<Item Key="CDC04546-7885-4C73-89B5-E2756335DF13" Name="Excel" ImageFieldName="file" HostUrl="http://img.lms89.com" ImageMaxSize="20971520" ImageAllowFiles=".xls,.xlsx" ImagePathFormat="image/{appid}/{usertype}/{userid}/default/{guid}" />
<Item Key="CDC04546-7885-4C73-89B5-E2756335DF13" Name="Pdf" ImageFieldName="file" HostUrl="http://img.lms89.com" ImageMaxSize="20971520" ImageAllowFiles=".pdf" ImagePathFormat="image/{appid}/{usertype}/{userid}/default/{guid}" />
</Config>
其余需要用到配置的,均可以在相同目录下配置,最大的好处就是修改方便,而且比较统一
后续
下一篇会讲到接口的统一入口,鉴权等,以实现系统的统一性,便捷性,安全性等。
敬请期待。