在asp.net core中使用类似Application的服务的实现
Intro#
在asp.net中,我们可以借助Application来保存一些服务器端全局变量,比如说服务器端同时在线的人数计数,比如一些网站的配置信息。
在ASP.NET应用中,之前开发的活动室预约系统把网站的keyword以及Title等信息,在网站启动的时候会从数据库加载配置并保存到Application中,在需要的地方直接使用Application来获取,后台更新配置之后,更新Application变量,这样就不需要重启网站就可以更新网站配置信息了,在Razor页面上使用示例:
@ViewBag.Title-@HttpContext.Current.Application["SystemTitle"]
迁移到asp.netcore后,就不能直接这样用了,于是自己实现了一个服务,去加载网站配置信息,比较简单简陋,权当是抛砖引玉,不喜勿喷
自定义Application服务IApplicationSettingService#
服务接口定义:
IApplicationSettingService
publicinterfaceIApplicationSettingService { stringGetSettingValue(stringsettingKey); stringSetSettingValue(stringsettingKey,stringsettingValue); intAddSettings(Dictionarydictionary); }
基于一个字典对象的简单实现:
ApplicationSettingInMemoryService
publicclassApplicationSettingInMemoryService:IApplicationSettingService { privatereadonlyConcurrentDictionary_settingDictionary=newConcurrentDictionary (); publicintAddSettings(Dictionary dictionary) { if(dictionary!=null&&dictionary.Count>0) { foreach(varitemindictionary) { _settingDictionary[item.Key]=item.Value; } } return_settingDictionary.Count; } publicstringGetSettingValue(stringsettingKey) { _settingDictionary.TryGetValue(settingKey,outvarval); returnval; } publicstringSetSettingValue(stringsettingKey,stringsettingValue) { _settingDictionary[settingKey]=settingValue; returnsettingValue; } }
也可以根据自己的需要写不同的实现,比如放在配置中或者自己的缓存中,这里应用暂时是单体应用,所以只是放在了内存对象中。
使用#
1.在Startup中注册服务:
services.TryAddSingleton();
2.从数据库中读取配置信息,初始化配置数据
3.在Razor页面上使用,示例
@usingActivityReservation.Services @injectIApplicationSettingServiceapplicationSettings /*此处省略N行代码...*/@($"{ViewBag.Title}--{applicationSettings.GetSettingValue("SystemTitle")}")
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。