70

CYQ.Data 正式支持 DotNET Core 版本发布 - 路过秋天

 6 years ago
source link: http://www.cnblogs.com/cyq1162/p/7969062.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

闲话几句:

自从上周开始,IOS人员逝去,就开始接手IOS的代码了。

并开始整理IOS的代码(包括当时一开始设计的开发框架)。

在未来不远的日子里,设想是有一个系列详细的介绍I恋App和IT连App及前后端所有涉及的技术系列。

同时还准备发布一个IOS的开发框架,为十二星座再凑一个成员。

闲话结束,下面看正文: 

CYQ.Data 支持DotNet Coe 的折腾过程:

大约是上周五,在提交CYQ.Data V5.5.8.1版本到Nuget后,看着C盘还有7G发了一会呆。

之后做了一个决定,卸载了VS2015,现在C盘有10个G。

到了微软官网,下载了社区版,把VS2017给装上了,好在可以选组件,只挑.NET Core 相关的,5个多G就完事。

 

17408-20171204024549466-1808477334.jpg

   

17408-20171204024713294-1610537091.jpg

安装好之后,建一个类库工程,把整套源码Copy过去,依赖项就是我们平时引用dll的地方:

17408-20171204015204982-1583147395.jpg
17408-20171204015516122-261629256.jpg

开始编绎,并见证奇迹:一堆错误。

 

17408-20171204015531435-1326088603.jpg

还好,VS2017在错误提示方面很人性化,分批给你显示错误数,让你解决一批再出来一批。

不像当初在VS2015折腾.NET Core 1.1的时候,一下子出来几百个错误,梁静如都救不了你。

面对错误:怎么处理、支持Dotnet Core ?

折腾.NET Core 1.1的时候:

那时候是把CYQ.Data的源码给重构整理了一次,把不支持的都单独给抽离出来。

像这样,比如那时候不支持序列化,就把涉及序列化的都抽出来放到一个文件:

通常一个类,会分拆出几个partial的部分类(不支持的用于被排除)

17408-20171204021735357-569733503.jpg

想法挺好:

通过排除某些文件夹的方式,来达到切换的状态,这样可以不用维护两份代码。

要达到去掉文件夹还能编绎完整通过的解O方式,由于有些是强关系,关是业务整理,工作量大的出奇。

一些代码还得修改为反射的动态调用,才能达到分离文件也正常,好不麻烦。

关键还是那时候的版本缺失的类库太多,折腾没几天,放下了,回头才是岸。

折腾.NET Core 2.0:

1:想过针对性的写一个迷你版本。

但没那么简单,要有激情,要有大量时间,这些条件要同时满足不容易。

同时意味着又多一个要维护的框架,虽然我维护中的框架已数不过来,多一个也不算多。

可时间对于认真的人,总是不够用啊!!!

2:通过增量方式,解决版本支持问题

上面说到,折腾 .NET Core 1.1 时,是想通过减量排除来解决问题,结果不得其门。

事情放一放,一回头,解决问题的方式,就是来的那么巧,那么妙。

这回很理所当然的,就想到用增量的方式来解决问题。

CYQ.Data 如何通过增量代码支持.NET Core

对于每一个提示不存在的类,VS环境中鼠标放上去时,都会有一个提示重构,通过它可以减少不少工作量。

1:为每一个不支持的类、方法、或属性,都用重构的方式,重新生成一个类文件,并用对应的名称空间整理放好。

17408-20171204023403935-927528508.jpg

通过这种方式,整理出不支持有差异化的类库,而且也可以清楚知道,框架里引用了哪些类是 .NET Core所没有的。

然后先顺利编绎通过。

2:重写新建类库的实现,比如,重写读配置文件:

配置文件和System.Web这两个是经常用到的东西。

相对配置文件的读取,System.Web的,麻烦了一些,需要Nuget上引用Microsoft.AspNetCore:

 

17408-20171204024156544-1445452139.jpg

引用好后,再重写里面的内容,具体的内容,这里就不贴代码了,代码可以见源码处。

由于这周末两天临时集中处理,刚处理好,只做了简单的MSSQL的测试。

所以来不及发布Nuget上,先写文了,等哪天测试稳定了再上Nuget。

CYQ.Data 支持.NET Core 的方法:

1:GitHub下载CYQ.Data的源码(会发现多了一个文件夹)

地址:https://github.com/cyq1162/cyqdata

17408-20171204025920513-900099890.jpg

由于目前还没提交解决方案文件可以直接运行项目,所以现在提前提前体验的需要自己建类库项目了:

2:自己新建一个类库项目,取名叫CYQ.Data,把源码都Copy过去(包括DotNetCore)

3:Nuget上引用Microsoft.AspNetCore。

编绎,然后就大功告成了,在你的.NET Core 项目里引用类库项目就可以了。

如果涉及到Web,还需要有两个注入的地方:(示例:见标红加粗项)

 public class Startup
    {
        public void ConfigureServices(IServiceCollection services)
        {
            services.Configure<FormOptions>(options => options.MultipartBodyLengthLimit = long.MaxValue);
            services.Configure<IISServerOptions>(options => options.MaxRequestBodySize = null);
            services.AddDistributedMemoryCache();//支持Session的必要组件
            services.AddSession();
          //  Microsoft.Extensions.DependencyInjection.ServiceDescriptor.Singleton<IHttpContextAccessor, HttpContextAccessor>();
           services.AddHttpContext();
            services.Configure<KestrelServerOptions>(x => x.AllowSynchronousIO = true).Configure<IISServerOptions>(x => x.AllowSynchronousIO = true);
        }

        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            //if (env.IsDevelopment())
            //{
            //    app.UseDeveloperExceptionPage();
            //}
            
                //.Microsoft.Extensions.DependencyInjection.ServiceCollection
            //添加MIME
            var provider = new FileExtensionContentTypeProvider();
            provider.Mappings[".apk"] = "application/octet-stream";
            app.UseStaticFiles(new StaticFileOptions
            {
                ContentTypeProvider = provider
            });
            //app.UseStaticFiles();
            app.UseSession();
            app.UseHttpContext();
            app.UseTaurusMvc(env);
            //app.Run(async (context) =>
            //{
            //    await context.Response.WriteAsync("Hello World!");
            //});
        }
    }

一个周末,一个巧合,一个连续的激情奋战。

CYQ.Data 的.NET Core支持工作,就这样告一段落了。

测试了MSSQL是基本通过,剩下的都好说了!!!

后面Taurus.MVC还是Aries,估计离支持.NET Core也不远了。

不过,接下来,又要进入IT连创业的状态了。

对于IT连,结合一些网友的建议,最近也有不少思考。

对接下来的产品优化及走向,又一波伤脑估计是在所难免。

另外,运营还缺的一篇文章,回头也还得补上。

最后的最后,仍是感谢大伙的关注!!!


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK