asp.net-mvc – 扩展实体框架应用程序/多个应用程序到同一个数据
我有一个使用MVC / EF Code First编程的应用程序.它做了很多服务器端处理,并且资源非常密集.
我知道如何设置负载平衡,但是,我想知道扩展EF应用程序是否像配置新服务器,部署应用程序并指向数据库集群一样简单 – 或者我将面临任何问题多个EF应用程序命中同一个数据库服务器? 我似乎无法找到任何建议/指导,我担心我选择EF更简单/更直接的做法做出了错误的选择! 解决方法
回顾一下您的应用程序是基于ASP .NET MVC的应用程序这一事实.拥有它的多个实例可能会引起国家管理的幽灵. MSDN对why this is an issue有一个很好的介绍:
这一点是存储状态的一种非常常见的方式,但是当涉及多个应用程序实例时(该状态仅对其中一个实例“可见”)会中断. 通常,这可以通过使用SessionStateMode的StateServer或SQLServer值来解决.同一篇文章提供了每个选项的很好的总结(强调我的).
如果您的申请是无国籍的,这是一个有争议的问题.
对于访问数据库的应用程序的多个实例的问题,您将遇到任何类型的数据访问技术问题. 以下是基本方案:假设您的应用程序按计划向用户发送欢迎电子邮件. 鉴于表用户: UserId | Email | WelcomeLetterSent -------+-----------------+------------------ 1 | user@domain.com | 0 还有一些伪代码: foreach (var user in _context.Users.Where(u => !u.WelcomeLetterSent)) { SendEmailForUser(user); user.WelcomeLetterSent = true; } _context.SaveChanges(); 有一个race condition,你的应用程序的实例1和实例2都可以同时评估_context.Users.Where(…),然后才能设置WelcomeLetterSent = true并调用SaveChanges.在这种情况下,可能会向每个用户发送两封欢迎电子邮件,而不是一封. 并发可能是一个阴险的事情.在here有一个关于使用Entity Framework管理并发性的入门知识,但这只是冰山一角. 你的问题的答案?这取决于你的应用程序做什么:)
如果您的应用程序可以容忍自己访问一个数据库的多个实例,那么通常不会让这些“支持应用程序”发挥得很好.并发性是来自一个应用程序的多个实例还是多个应用程序,每个应用程序各有一个实例. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – 无法将索引35处的字节[FC]从指定的代码页转换为
- log4Net EventlogAppender不适用于Asp.Net 2.0 WebSite?
- asp.net – 为什么<%=%>标记呈现为“<%=%>”?
- 什么可能导致“客户端断开连接”的ASP.NET异常?
- asp.net-mvc – 实体框架SQLite部署
- asp.net-mvc – MVC5在不使用System.Web的情况下读取Config
- asp.net-mvc – Asp.Net MVC Ajax.BeginForm没有通过Ajax提
- asp.net-mvc – 如何在MVC中实现工作单元:责任
- ABP官方文档(一)【入门介绍】
- asp.net-mvc – ASP.NET MVC绑定模型中的数组