LindDotNetCore~因模块化注入的牵线

返回目录

自我在篇章”深入浅出用户运营”中称了一部分实例,很多运营圈的恋人看例子十分爱懂,让我再推一些。恰好前几日子被别人教,讲到了用户及时或多或少,举了个别独稍例子,所以呢整理出来,看大家是不是能有所得!

LindDotNetCore相关介绍

事关用户,绕不上马之即使用户要求。什么是用户需。网上都产生众多讲,但还晦涩难了解。需求是词是产生接触魅力的。很多成品会拿需求来说事,动不动就玩嘴皮子说因为用户需求呢骨干。我是独一样线的营业人员,就未聊天了,我先行说一个现实生活中的小例子。

有关模块

  1. 大局都是依赖DI
  2. 信息队列
  3. NoSql
  4. Caching
  5. 仓储
  6. 服务总线
  7. Solr
  8. 调度
  9. 日志
  10. Asspect拦截组件
  11. UAA授权
  12. 各种零件环境的搭建
  13. 各国模块单元测试编写

    #### DI统一战线

    LindDotNet框架同样采取了大局DI注入的不二法门来使用模块对象的,这种松耦合的规划于单元测试
    凡是好方便人。

    services.AddLog4Logger(o =>
    {
    o.Log4ConfigFileName = "log4.config";
    o.ProjectName = "test";
    });
    services.UseDapper(o =>
    {
    o.ConnString = $"Data Source=/Data/intergratetest.db";
    o.DbType = Lind.DotNetCore.Repository.DbType.SqlLite;
    });
    

    #### 音队列

    信队列主要用’rabbitmq,kafka’实现之,用来解耦项目,处理高并发任务及耗时任务,生产者
    莫需关注是孰来花,它只管把信发到行列中;而消费者不关心消息如何发生,只将消费按着
    政工逻辑去处理掉!

    services.AddRabbitMQ(o =>
    {
    o.ExchangeName = "zzl";
    o.MqServerHost = "192.168.200.214";
    o.VirtualHost = "/";
    o.ExchangeType = "topic";
    });
    

    #### NoSql

    即框架的NoSql部分由redis和mongodb做,之有选择马上半种框架最深的来头就是它们盖了
    NoSql所有的应用状况,像redis用来囤积k/v键值对,支持5老数据结构;而mongodb用来存储文档
    品种数码,支持复杂的询问,嵌套查询等。

    services.AddRedis(o =>
    {
    o.Host = "localhost:6379";
    o.AuthPassword = "";
    o.IsSentinel = 1;
    o.ServiceName = "mymaster";
    o.Proxy = 0;
    });
    

    #### Caching

    数量缓存是于主要的有些,用来储存一些热数据,目前分布式环境下redis,单机可以直接利用
    运作时缓存。

    services.AddRuntimeCache(o =>
    {
    o.CacheKey = "lindCache";
    o.ExpireMinutes = 5;
    });
    

    #### 仓储

    储存主要简化数据持久化的操作,对外提供简单的CURD操作接口,使用者直接调用即可,不待干预SQL语句,
    从今这点达成的话,开发效率确实提升了累累。目前叔框架里并了ef,dapper,mongodb,redis,elastic等仓储,其中
    EF和Dapper可以操作sqlserver,mysql,sqllite等数据库。

    services.UseDapper(o =>
    {
    o.ConnString = $"Data Source={Directory.GetCurrentDirectory()}/intergratetest.db";
    o.DbType = Lind.DotNetCore.Repository.DbType.SqlLite;
    });
    

    #### 服务总线

    服务总线主要是用来解耦项目之重叠以及层中的调用,让程序员把关注点放在工作达成,目前框架提供了IOC模式的轩然大波,
    依据简单内存字典存储的风波等。

    services.AddIocBus();
    services.AddInMemoryBus();
    

    #### Solr

    Solr是在Lucene基本功之前开发之,使用java编写,一般配备在tomcat上,有友好之图像管理界面,可以为此来治本core,
    相似地,我们于设计一个core时,需要为其起相应之实业,与她的core里的特性对应起来;solr有长的插件,像有的
    华语分词包,索引包等。

    services.AddSolrNet(o =>
    {
    o.ServerUrl = "http://192.168.200.214:8081/solr/system_companysubject";
    o.UserName = "sa";
    o.Password = "sa";
    });
    

    #### 调度服务

    调度服务是为quartz为主导,并对其的机能拓展了包,支持实时添加的天职,这或多或少动了windows/linux的目监控事件
    ,也是.netcore帮我们落实的,我们只是需要订阅相关事件即可。

    var watcher = new FileSystemWatcher
    {
    Path = AppDomain.CurrentDomain.BaseDirectory,
    NotifyFilter = NotifyFilters.Attributes |
                   NotifyFilters.CreationTime |
                   NotifyFilters.DirectoryName |
                   NotifyFilters.FileName |
                   NotifyFilters.LastAccess |
                   NotifyFilters.LastWrite |
                   NotifyFilters.Security |
                   NotifyFilters.Size,
    Filter = "*.dll"
    };
    // quartz运行时,可以添加新job,但不能覆盖,删除等
    watcher.Created += new FileSystemEventHandler((o, e) =>
    {
    foreach (var module in Assembly.LoadFile(e.FullPath).GetModules())
    {
        foreach (var type in module.GetTypes().Where(i => typeof(ISchedulingJob).IsAssignableFrom(i)))
        {
            JoinToQuartz(type, DateTimeOffset.Now);
        }
    }
    });
    //Start monitoring.
    watcher.EnableRaisingEvents = true;
    

    #### 日志

    日记框架和前的Lind框架里日志差别不殊,只是将目标的生命周期移到了DI容器去联合保管,都采用单例方式,目前日记框架提供了
    本着log4net的支持,同时轻量级日志可以用lindlogger来实现。

    services.AddLog4Logger(o =>
    {
    o.Log4ConfigFileName = "log4.config";
    o.ProjectName = "test";
    });
    

    #### Asspect拦截组件

    道阻碍在微软mvc,api框架里采取很大面积,可以以方式执行前和履行后动态增长全套逻辑,而非欲关爱方法细节,实现拦阻行为
    的开发人员不需去关爱方法细节,这使了面向对象的封装特性,而也可开闭原则,因为您得在无改原来代码的场面下,动态
    也其助长行为。

    [Fact]
    public void FuncInvoke()
    {
    var obj = ProxyFactory.CreateProxy<AspectTest, AspectTest>();
    Assert.Equal("OK", obj.GetHello());
    }
    [Fact]
    public void ActionInvoke()
    {
    var obj = ProxyFactory.CreateProxy<AspectTest, AspectTest>();
    obj.SetHello();
    Assert.Equal(1, 1);
    }
    

    待续…
    回目录

地铁乘客的用户作为分析

自在京都大兴区终止,每天还见面以地铁大兴线(4声泪俱下线分支)去上班。大家都掌握都人数差不多,我发觉每天为地铁内都出吵架的,我就算好奇怪的,心里琢磨着怎么吗!我哪怕开查找原因了。一次于,恰好赶上两独女又炒起来了,我便挤至他俩少单左右,对他们说:你们先别吵吵,我问话一下:你们为啥吵架呀!两个女异口同声的说:滚粗。接着又开始吵吵了。调研为拒了,挺尴尬。既然他们不语我,我虽自己搜索答案吧。经过一个月的考察分析,还当真让自家找到原因了,我发觉原先是情侣围在搞鬼。为什么会是冤家围为,你放我讲话一下剖析思路。

首先自己把乘客,也尽管是地铁这款产品的用户按站点做一个用户分类,根据乘客在乘坐地铁是景下的急需,我分为ABCD四类用户。

本用户的中心要求来分别解释一下:

A类用户:我定要动手个所,没坐就是等在坐一遍。坐在刷朋友圈;

B类用户:我决然要是站在发出栋人口之两旁,没随会折腾个因。站在中间有个舒心的职位刷朋友圈;

C类用户:找个盖是从来不要了,站也只好站于门口,但是本人自然要是刷朋友围;

D类用户:坐、好之站的岗位、刷朋友澳门美高梅手机网站圈,都无考虑,只要会挤上失去上班不迟到到就是ok了。

咱来像之图示一下ABC类用户的需要:

这儿呀,地铁及西红门站了,经常召开四哀号线的冤家知道,西红门站的总人口大都呀,地铁里早已没地方了,但是必须还得往上挤挤,要不然迟到会扣钱的。

您晤面意识,因为D类用户使劲向里挤,和C类用户脸贴脸心连心了,这肯定会扰乱C类用户定要刷朋友围的刚需。这时候C类用户往往会来同等句子文案脱口而出:挤呀挤,等下趟不行呀!这句文案很能够刺激D类用户的情绪,D类乘客如果粗暴点,张嘴就是打的导火索:你玻璃做的呀,挤挤怎么了,怕挤去打车呀!就如此,C类用户以及D类用户就见面开始打嘴仗了。也要命对的,毕竟看打比刷朋友围又有意思点。

自身啊,在枣园站上车,当之无愧的C类用户。为了调研吵架的由,我特别反方向以了1独月,各个站点都上失去了,现在就改成了习惯。如果外出早了,就多因为十五分钟及首发站上车,这样能够因为正那个爽快的刷朋友圈,如果出门不顶早,我就形成黄村西大街,找个舒畅的位置站着刷朋友围。有同一破,出门超早,我就算因到天宫院站了,找了一个挺不易的因坐下,掏出手机便从头看古龙的《七种植武器》。我刚目兴奋处,高立以对幼女,马上将死麻锋了。高立这要生大导致了,还免晓得高立是匪是的确的所以了秋风梧借为他的孔雀翎。我休息了丁暴,抬头一圈车既届枣园站。就展现同一老太太颤颤巍巍的达到了地铁,使了同招上萍渡水,被挤在门口了。我孝心大发,忙而一造成狮子吼:老太太,来因这里。然后我就一路站及了西直门。后来,我便再不反方向坐地铁了,因为要求更强,当求遇到老人或孕妇的早晚,也得舍弃。

那么,吵架是只问题,需要缓解。地铁运营方是怎解决的也罢,永远是那无异长达文案:上无失去的乘客请等下和列车。更损点的文案:别挤了,下趟车是空车。

骗鬼呀!

即就是一个深出众的用户作为分析的案例,我们更推一个挪就活跃的用户运营的微案例。

移步就活跃的用户运营实战案例

本身先开网站运营108以社区的时光时不时来线下沙龙活动,一般是2独钟头左右。我就算意识,每次收拾了运动领导还见面放炮自己。我哪怕异常困惑,因为来的人口居多呀,都是自个儿逐一接待之。领导就是翻生自己关他的沙龙合影,我一样看,还算,怎么人哪怕这样点了?一琢磨才知,原来洋洋丁至彼此的环就收回了。后来本身就留了心眼,我以沙龙开始前碰撞合影,这下领导即开心了。连连对自我一直大拇指。我想一定还有优化空间。我哪怕意识还算,好多人数会晤迟。后来自家就又将工夫调整了瞬间,改在中场休息之上合影。这样像上的口以多矣几只。领导这就喜极而泣了。我不能够辜负领导之泪水呀,我不怕想着更优化一下,正好我办活动之地方楼下有只姿色市场,我虽当沙龙开始前1个钟头就是失雇人了,50首批1员,雇10私房呢才500头版。正好我的倒经费啊是500头条,我就不被与沙龙的人数买入水果饮料了。省下钱雇人让决策者开心。这样像及之人就是又基本上了有的。领导及时一瞬间沉默了,是未是被官员发现我作弊了呀,我心挺害怕。不大一会,领导QQ上和自己说:一会hr会找你,我一度让您提加薪了。

自激动呀,热泪盈眶:领导而吧尽愚笨了吧,怎么就为自身之骗子加薪了吧。我思我肯定能体悟再好的解决方案。后来我便着实想了同致,沙龙转吧1独钟头,剩下的1个钟头互我安排饭局。这样流失率果然降低了。有雷同糟我别出心裁,不在会议室里打沙龙了,跑至北大非名湖搞,结果那次沙龙结束去就餐的时段,不仅没有熄灭,而且人数忽然又多矣几个。我晕,原来吃饭才是刚刚需呀!

立即就是鲜单简易的用户运营的略案例,其实运营就是当细节上好学,发现问题,然后发个分析问题的笔触,然后解决掉这题材就足以了,对了,一定要是产生只预期。

至于运营的方法论问题

本人于“深入浅出用户运营”中写了一个有关用户运营方法论的希冀,我为什么会总结这么一个图也?因为做事呢发出肯定时间了,经常接触新的活、新的品类,每次都是由零星开头,比如做SEM就得研究SEM的技巧,做微信就得研究微信的技艺,做app就得研究app。运营没有于一而终的活,很多口看cv工程师(网络编辑)就得一生一世开CV工程师,做SEO就终身做SEO,绝对不容许的。术业有专攻在运营的专职及未太好只要。粗略算下来,我举行了之职不生8近似,什么网络编辑、联盟推广、SEO、竞价、社区运营、电商运营、数据解析、微博微信、app等都出接触,而且常底自我还会打肿脸充胖子产品经理。每次接触新品类还逮耳挠腮,焦头烂额。后来自就算雕刻着发无发生一个方法,遇到新品类为能游刃有余一些。总结来总去,就总结了如此一副图(我以首先版的底子及简化了一下)。

任你的岗位是啊,产品是啊种,你最终目标都是用户。大家一如既往看就幅图虽理解了,简单说一下:当您点一缓慢新产品的当儿,首先你如果失去发现产品本身在的问题,不管而错过做竞品对比还是去举行用户数据解析,总能够发现有要害的问题,没有问题之产品是未存在的。比如我发现地铁这款产品的用户怎么一直是于吵,我快要分析吵架的原因了,这便是分析问题,我先是做用户调研,失败了,就起开用户作为分析,原来是4类用户的刚需各不同所与。找到了问题之原由,就得对症下药,提出解决方案。如果是自,我之解决方案便是打电话叫张小龙,让他关闭朋友围。或者为三杀运营商把地铁之网给屏蔽掉,这样就会降吵架率了。那么,吵架率降低至小算成为,因为用户不玩微信、没有撒网也会用出手机由单机游戏的(像本人一般就是是圈小说)。所以吃吵架率定个预期指标,这便是设定解决方案的评指标(预期目标),用来判断解决方案的功用。假设张小龙真的拖累了对象围,解决方案实施了,发现吵架率有退,但尚未上,那么尽管重新错过摸索为什么从来不直达的题材,又是一个方法论的合。不仅仅是运营了,不管做呀事情,这个点子都格外行之。

全文完

转载请注明作者韩利,来源简书

发表评论

电子邮件地址不会被公开。 必填项已用*标注