webapp 是直接连接数据库好还是连接webapi好

webapp 是直接连接数据库好还是连接webapi好,第1张

什么是长连接?

其实长连接是相对于通常的短连接而说的,也就是长时间保持客户端与服务端的连接状态。

通常的短连接 *** 作步骤是:

连接-》数据传输-》关闭连接;

而长连接通常就是:

连接-》数据传输-》保持连接-》数据传输-》保持连接-》…………-》关闭连接;

这就要求长连接在没有数据通信时,定时发送数据包,以维持连接状态,短连接在没有数据传输时直接关闭就行了

什么时候用长连接,短连接?

长连接主要用于在少数客户端与服务端的频繁通信,因为这时候如果用短连接频繁通信常会发生Socket出错,并且频繁创建Socket连接也是对资源的浪费。

但是对于服务端来说,长连接也会耗费一定的资源,需要专门的线程(unix下可以用进程管理)来负责维护连接状态。

总之,长连接和短连接的选择要视情况而定。

首先,让我们先更新 API 项目

我们将先对 API 项目进行必要的修改,修改完成之后再切换到 Web 项目对客户端进行更新。

第1步:我们需要一个数据库

在能做任何 *** 作之前我们需要先创建一个数据库。本例中将使用 SQL Server Express。如果你没有安装,可以从这里下载 SQL Server Express。安装完成之后,创建一个名为 CallingWebApiFromMvc 的数据库。这就是第一步要做的。

Api 项目还需要一个数据库连接字符串,否则我们寸步难行。把下面这段代码插入到 Api 项目的Webconfig 文件中:

<connectionStrings>

<add name="ApiFromMvcConnection" connectionString="Data Source=(local);Initial Catalog=CallingWebApiFromMvc;Integrated Security=True" providerName="SystemDataSqlClient" /></connectionStrings>

认证(Identity)框架会自动创建我们管理用户所需要的成员关系表,现在不需要担心去提前创建它们。

第2步:添加相关的Nuget包

接下来我们添加用于OWIN和Windows认证的Nuget包。打开包管理控制台,切换Api项目为缺省项目,输入以下命令:

Install-Package MicrosoftAspNetWebApiOwin

Install-Package MicrosoftOwinHostSystemWeb

Install-Package MicrosoftAspNetIdentityEntityFramework

Install-Package MicrosoftAspNetIdentityOwin

使用这些包可以在我们的应用中启动一个OWIN服务器,然后通过EntityFramework把我们的用户保存到SQL Server。

第3步:添加管理用户的Identity类

我们使用基于Windows认证机制之上的Entity框架来管理数据库相关的业务。首先我们需要添加一些用于处理的类。在Api项目里添加一个Identity目录作为我们要添加类的命名空间。然后添加如下的类:

public class ApplicationUser : IdentityUser

{

}

public class ApplicationDbContext : IdentityDbContext<ApplicationUser>

{ public ApplicationDbContext() : base("ApiFromMvcConnection") {}

public static ApplicationDbContext Create()

{ return new ApplicationDbContext();

}

}

注意我们传给基类构造函数的参数ApiFromMvcConnection要和Webconfig中的连接字符串中的name相匹配。

public class ApplicationUserManager : UserManager<ApplicationUser>

{ public ApplicationUserManager(IUserStore<ApplicationUser> store) : base(store)

{

} public static ApplicationUserManager Create(IdentityFactoryOptions<ApplicationUserManager> options, IOwinContext context)

{ var manager = new ApplicationUserManager(new UserStore<ApplicationUser> (contextGet<ApplicationDbContext> ()));

// Configure validation logic for usernames

managerUserValidator = new UserValidator<ApplicationUser> (manager)

{

AllowOnlyAlphanumericUserNames = false,

RequireUniqueEmail = true

};

// Configure validation logic for passwords

managerPasswordValidator = new PasswordValidator

{

RequiredLength = 6,

RequireNonLetterOrDigit = true,

RequireDigit = true,

RequireLowercase = true,

RequireUppercase = true,

}; var dataProtectionProvider = optionsDataProtectionProvider;

if (dataProtectionProvider != null)

{

managerUserTokenProvider = new DataProtectorTokenProvider<ApplicationUser> (dataProtectionProviderCreate("ASPNET Identity"));

} return manager;

}

}

第4步:添加OWIN启动类

为了让我们的应用程序作为OWIN服务器上运行,我们需要在应用程序启动时初始化。我们可以通过一个启动类做到这一点。我们将装点这个类的

OwinStartup属性,因此在应用程序启动时触发。这也意味着,我们可以摆脱的Globalasax和移动它们的

Application_Start代码转换成我们新的启动类。

using MicrosoftOwin;

[assembly: OwinStartup(typeof(LevelnisLearningCallingWebApiFromMvcApiStartup))]

namespace LevelnisLearningCallingWebApiFromMvcApi

{

using System;

using SystemWeb>

以上就是关于webapp 是直接连接数据库好还是连接webapi好全部的内容,包括:webapp 是直接连接数据库好还是连接webapi好、如何使用 Web API 来对 MVC 应用程序进行身份验证、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10146294.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存