为了让ASP.NET Core Web API 支持HATEOAS, 得需要自己手动编写代码实现....有两种办法: 静态类型方案: 需要基类(包含link)和包装类, 也就是返回的资源里面都含有link, 通过继承于同一个基类来实现....使用静态基类包装类 首先建立一个LinkResource,表示链接: ? 再建立一个抽象父类 LinkResourceBase: ? 它只有一个属性Links。...由于ExpandoObject无法继承我定义的父类,所以只好建立一个方法返回Links: ? 由于数据塑形的存在,参数还要加上fields。...也许在ASP.NET MVC或者一些web网站可以自适应这种变化,如果这些网站的js,html等是从服务器端生成的;但是大多数的时候,其实很难实现这种自适应变化。
在设计.net程序架构的时候,我更倾向于使用接口而不是实体类在作为函数的参数。...IList FillArticles(SqlDataReader reader)的将SqlDataReader中的结果添加到IList中。 ...articles.Add(article); } return articles; } 通过上面这个例子你可以发现,FillArticles方法需要一个SqlDataReader (这是一个实体类)...很不幸,你唯一能做的就是修改这块的源代码。 那么,我们怎么样才能避免这样的问题呢?我们假设SqlDataReader和 XmlDataReader都实现了IDataReader接口。...我们只需要把代码修改成如下的样子即可解决开始遇到的问题了: private IList FillArticles(IDataReader reader) { List<Article
ASP.NET MVC之 HtmlHelper 在ASP.NET MVC项目的开发中,一般会默认使用Razor视图来进行View层的编写,从而实现高效率的C#/HTML代码的混写。...扩展方法是一种特殊的静态方法,但可以像扩展类型上的实例方法一样进行调用。我们可以回到第一部分对HtmlHelper的扩展类-InputExtension类上,它是对于HtmlHelper的扩展。...静态类 可以从上图看出,InputExtension首先是一个静态类; 静态方法 既然是静态类,那么其所有的方法必然都是静态方法,例如:public static MvcHtmlString CheckBox...(); this关键字 可以从方法名定义中看出,第一个参数都是this HtmlHelper htmlHelper,代表对HtmlHelper类的扩展; 自定义扩展方法 1.在Models文件夹下新建一个类...,于是我们将命名空间与HtmlHelper类所在的命名空间保持一致。 4.在页面中我们就可以使用我们自己写的扩展方法了 @Html.MyExtHtmlLabel("EdisonChou")
目录 聚类简介 k-means聚类简介 k-means聚类的缺点 介绍高斯混合模型 高斯分布 期望最大化EM算法 高斯混合模型的期望最大化 在Python中实现用于聚类的高斯混合模型 聚类简介 在我们开始讨论高斯混合模型的实质内容之前...用简单的话说: 聚类背后的思想是将数据点分组在一起,这样每个单独的簇拥有最相似的点。 有各种各样的聚类算法。最流行的聚类算法之一是k-means。...让我们仔细看看这个算法是如何工作的。这将建立基础知识,以帮助你了解高斯混合模型将在本文后面的地方发挥作用。 因此,我们首先定义我们想要将种群划分成的组的数量——这是k的值。...我们先在这个数据上建立一个k-means模型: #训练k-means模型 from sklearn.cluster import KMeans kmeans = KMeans(n_clusters=4)...现在让我们在相同的数据上建立一个高斯混合模型,看看我们是否可以改进k-means: import pandas as pd data = pd.read_csv('Clustering_gmm.csv'
这些控件都是建立在站点导航类的顶端的,它们使用和显示导航数据的时候都是不考虑数据存储的特定细节问题的。Menu和TreeView控件还可以使用XML文件的数据和XMLDataSource控件的数据。...建立应用程序站点地图 示例的导航结构存放在Web.sitemap文件中,在下面你可以看到站点地图文件。Web.sitemap文件包含一个顶层的<siteMap>元素。...使用站点导航类编程 你可以在代码中编程获取导航数据。编程获取站点导航数据的出发点是SiteMap类。在这个类中有大量的静态方法,其中最重要的一个是CurrentNode属性。...这个事件的返回值是一个SiteMapNode实例。你可以在自己的事件处理程序中编写自定义逻辑来建立SiteMapNode实例的层次结构。...这个事件处理程序的代码是App_Code目录中的一个类。这个自定义的类复制与当前页面对应的SiteMapNode实例。
项目建立好了, 结果如下: ? 然后我们看一下项目文件, 右键编辑MyRestful.Api: ? 这里, SDK属性表示了我们使用的是哪个SDK, 而目标框架是.NET Core 2.0....ASP.NET Core还允许我们按约定为指定环境建立单独的启动配置....如果能找到指定环境的类, 那么它将覆盖默认的启动类. ...在ASP.NET Core项目里可以通过多种方式来创建Controller,当然最建议的方式还是通过继承AspNetCore.Mvc.Controller这个抽象类来建立Controller。...ASP.NET Core MVC的过滤器分为5类: 授权过滤器,它是第一个运行的,它的作用就是判断HTTP Context中的用户是否拥有当前请求的权限,如果用户没有权限,那么它就会“短路”管道。
html 建立Richardson成熟度2级的POST、GET、PUT、PATCH、DELETE的RESTful API请看这里:https://www.cnblogs.com/cgzl/p/9047626...Cache-Control还有很多其它的指令,常见的几个可以在ASP.NET Core官网上看:https://docs.microsoft.com/en-us/aspnet/core/performance...这个组件应该位于缓存的后端, ASP.NET Core里有个自带的属性标签 [ResponseCache] (https://docs.microsoft.com/en-us/aspnet/core/performance...ASP.NET Core关于缓存部分的文档在这里:https://docs.microsoft.com/en-us/aspnet/core/performance/caching/?...view=aspnetcore-2.1 本系列的源码在:https://github.com/solenovex/ASP.NET-Core-2.0-RESTful-API-Tutorial
html 本文介绍的是使用ASP.NET Core建立Richardson成熟度为2级的伪RESTful web API, 本文介绍的是GET和POST....建立Controller 首先需要建立一个CountryController: ?...此外还要建立CityResource,Repository和IRepository,注册配置,种子数据等等,这些就不贴了。 下面建立CityController ?...的情况下,就该返回一个默认的格式,在ASP.NET Core 2.0里面就是application/json。...这样就和Post方法返回中用到的路由名一致了,第二个参数是一个匿名类里面有个属性id,它会编程路由里的参数,最后一个参数是响应会返回的数据。
您可以使用以下代码在您的A类中创建WebSocket: let socket = new WebSocket("ws://your-socket-url"); // 将WebSocket对象设置为全局变量...window["socket"] = socket; socket.onopen = function() { console.log("WebSocket连接已建立"); }; socket.onmessage...= function(event) { console.log("接收到WebSocket数据", event.data); // 在这里处理接收到的数据 }; 在您的B类中获取全局的WebSocket...= function(event) { console.log("B类接收到WebSocket数据", event.data); }; 在上面的代码中,我们使用window对象的属性来获取全局变量...通过获取全局变量,您可以访问在A类中创建的WebSocket对象,并在B类中设置事件处理程序。
大家好,又见面了,我是全栈君 参考其他demo之后,设立一个管理类的发现看起来更舒服,理…… 但在建立与server连接其中。...假设有清楚的能够交流一下。...1.将管理类写成单例 static XmppManager *shareManager = Nil; + (XmppManager *)shareInstance { static dispatch_once_t...XmppManager alloc] init]; [shareManager setupXMPPStream]; }); return shareManager; } 2.建立...#pragma mark – 用户状态 /* presence 的状态: available 上线 away 离开 do not disturb 忙碌 unavailable
预备知识: http://www.cnblogs.com/cgzl/p/9010978.html http://www.cnblogs.com/cgzl/p/9019314.html 建立成熟度2级的...这几种方案里Basic提供的保护程度/级别最低, 而Negotiate最高/强. ASP.NET Core可选择的认证提供商就很多了, 例如ASP.NET Core Identity....下面我们需要一个可以生成JWT token的节点, 针对本文我就在本项目里建立这个节点吧: ?...这种方法使用的是CorsPolicyBuilder 类, 它拥有Fluent API, 可以串接方法调用: ? 第二种方法是使用策略. 在ConfigureServices里配置好命名的策略: ?...ASP.NET Core有一个第三方库Swashbuckle,它支持Swagger,但是只支持版本2,版本2有个重要的缺陷就是不支持Action重载,之前HATEOAS的文章里提到过我们需要使用这种重载
安装 安装 dotnet dev-certs https -trust 移除 sudo dotnet dev-certs https --clean 安装前 安...
ASP.NET Core还允许我们按约定为指定环境建立单独的启动配置....在ASP.NET Core项目里可以通过多种方式来创建Controller,当然最建议的方式还是通过继承AspNetCore.Mvc.Controller这个抽象类来建立Controller。...强类型的配置 ASP.NET Core允许把配置数据映射到一个对象类上面....我们还可以为不同场景设置不同的最低记录级别: 然后分别建立这两个分类的logger, 并记录: 查看输出结果, 已经按配置进行了过滤: 这里可以使用完整的类名作为分类名: 然后使用ILogger...所以我在MyRestful.Infrastructure项目里建立Repostitories文件夹并建立CountryRepostsitory类: 这里需要注入MyContext, 暂时只需要一个查询方法
而针对具体的资源,我们可以再建立一个类继承于PaginationBase,这个类就是Country的参数类: ? 由于暂时还没有什么特别的参数,所以里面是空的。...我使用了这个参数类代替了之前的pageIndex和pageSize参数,因为ASP.NET Core足够智能,可以把这两个参数解析到这个类里面。 下面测试一下: ?...用程序来说就是,一个字符串“Rank asc”要映射成一个集合,而集合元素的类型有两个属性:Entity Model的属性名和排序的方向。 所以先把集合里这种元素的类建立出来: ?...然后在做针对CountryResource的整套映射,不过首先我考虑建立一个抽象父类,里面可能有些公用的东西: ?...但是这里需要new一个CountryPropertyMapping类,这样做对单元测试就不友好了,也许把它放在一个容器里取出来用更合适? 那么就建立一个容器: ?
强类型的配置 ASP.NET Core允许把配置数据映射到一个对象类上面. 针对上面的firstConfig.json文件, 我们创建以下这个类: ?...我们还可以为不同场景设置不同的最低记录级别: ? 然后分别建立这两个分类的logger, 并记录: ? 查看输出结果, 已经按配置进行了过滤: ? 这里可以使用完整的类名作为分类名: ?...所以我会在MyRestful.Api项目里建立一个Resources文件夹, 并创建一个类叫做CountryResource.cs (以前我把它叫ViewModel或Dto, 在这里我叫它Resource...所以我在MyRestful.Infrastructure项目里建立Repostitories文件夹并建立CountryRepostsitory类: ? ?...然后是它的实现类UnitOfWork: ?
POST和GET,这篇要介绍建立Richardson成熟度2级的DELETE, PUT, PATCH....PUT 更新资源 Put应该用来对资源的整体更新。 由于PUT是对资源的整体修改,请求body中应该带着更新对象,所以先建立这个对象: ?...由于ASP.NET Core并没有内置的帮助方法可以返回422和验证错误信息,所以我们先建立一个类用于返回 422 和验证错误信息,它继承于ObjectResult: ?...但是这两个类的大部分代码还是一样的,所以可以采取使用抽象父类的方法来去掉重复的代码,建立CityResource: ? 注意属性一定要使用virtual关键字,因为在子类里我们可能会重写属性。...最后还要为ASP.NET Core配置FluentValidation,在Startup的ConfigureServices方法里: ?
那么对于我们最常用的ASP.NET Forms身份验证模块是如何底层封装处理的呢?...与之相似地,当请求转入ASP.NET管道后,最终负责处理该请求的是与请求资源类型相匹配的HttpHandler对象,但是在Handler正式工作之前,ASP.NET会先加载并初始化所有配置的HttpModule...ASP.NET提供的很多基础构件(Infrastructure)功能都是通过相应的HttpModule实现的,下面类列出了一些典型的HttpModule: OutputCacheModule:...因此对于Forms表单认证的处理模块,最重要的就是这个FormsAuthenticationModule类了,在这里面,会把为了解耦操作所创建的类都给用上。...在这里,这个类不知道会不会让你想起ASP.NET MVC框架下的Authentication Filter这个过滤器,过滤器的实现其实就是利用了Attribute这个特性才实现AOP切面注入,因此,其实这个也应该可以加上
/// 实例时,参数为:this 如:MessageBox MB=new MessageBox(this);
ASP.NET由于采用了管道式设计,具有很好的扩展性,而整个ASP.NET MVC应用框架就是通过扩展ASP.NET实现的。...值得一提的是,为了让读者根据该实例从真正的ASP.NET MVC中找到对应的组件,我完全采用了与ASP.NET MVC一致的类型命名方式。...[源代码从这里下载] 在正式介绍我们自己创建 的“迷你版”ASP.NET MVC的实现原理之前,我们不妨来看看建立在该框架之上的Web应用如何实现。...接下来我们就来逐步地分析这个自定义的ASP.NET MVC框架是如何建立起来的,而它也代表了真正的ASP.NET MVC框架的工作原理。...ASP.NET MVC是如何运行的[1]: 建立在“伪”MVC框架上的Web应用 ASP.NET MVC是如何运行的[2]: URL路由 ASP.NET MVC是如何运行的[3]: Controller
这个C#类对asp.net中的session进行了再次封装,操作Session可以变得更简单一些,包括读取session和写入session,用户还可以根据自己的需要对这个类进行扩展。...using System.Web; namespace DotNet.Utilities { /// /// Session 操作类 /// 1、GetSession
领取专属 10元无门槛券
手把手带您无忧上云