代码改变世界

小记编程语言的设计

2019-04-30 21:08  音乐让我说  阅读(373)  评论(0编辑  收藏  举报

前言

首先我们知道,不同的语言的设计思想是相互借鉴的。ASP.NET Core 随着微软的全面开放,导致它有机会重新设计 HTTP 请求、响应管道,老旧的 ASP.NET 已经不能很好地满足人们对新时代 Web 3.0 的期待,故重新设计意味着微软可以弯道超车,用及其优美的语言、框架设计,赢得开发者的信心。ASP.NET Core 相信大家对它已经很熟悉了,“中间件” 类似于 ASP.NET 时代的 "HttpModule",在 Core 中处于极其重要的地位,甚至可以说要想了解 Core,第一步就是了解中间件。ReqeustDelegate 看似一个普通的委托,实际上它承载着 ASP.NET Core 的脊髓,之前在 LINQ 时代,IEnumerable<T> 接口的链式调用,让软件开发人员感到无比的爽快。众所周知, jQuery 的链式调用也让前端开发人员有过一段无比流畅的经历,今天笔者无意中想到,原来 javascript 的回调函数 和 ASP.NET Core 中的 ReqeustDelegate 竟然如此的相似。下面看两段代码,一段 C#,一段 Javascript。

C#

    public class InstallUrlMiddleware
    {
        private readonly RequestDelegate _next;

        public InstallUrlMiddleware(RequestDelegate next)
        {
            _next = next;
        }

        public async Task Invoke(HttpContext context, IWebHelper webHelper)
        {
            if (new Random().Next(1,11) > 5)
            {
                context.Response.Redirect("https://www.google.com/");
                return;
            }
            await _next(context);
        }
    }

 

 

JavaScript

$('#autocomplete').autocomplete({
    lookup: function (query, done) {
        // Do Ajax call or lookup locally, when done,
        // call the callback and pass your results:
        var result = {
            suggestions: [
                { "value": "United Arab Emirates", "data": "AE" },
                { "value": "United Kingdom",       "data": "UK" },
                { "value": "United States",        "data": "US" }
            ]
        };

        done(result);
    },
    onSelect: function (suggestion) {
        alert('You selected: ' + suggestion.value + ', ' + suggestion.data);
    }
});

 

对比