在设计大型应用程序时,我正试图了解思考过程.
假设我有一个客户需要一个新的客户网站,他估计每天有40,000个订单,已有25,000个用户群.在设计应用程序时,您如何确定是否需要分布式架构?我应该使用网络农场吗?等等
我过去主要构建2层(物理)应用程序,我真的想提高我的理解力.
任何见解都会很棒!
我是Serilog的新手,我很难弄清楚如何使用上下文功能.当我运行下面的代码时,输出文件不包含报告ID.我缺少什么想法?
var logger = new LoggerConfiguration()
.WriteTo
.File(@"C:\Log.txt")
.CreateLogger()
.ForContext("Report ID", 10);
logger.Information("Test");
Run Code Online (Sandbox Code Playgroud) Log方法块不应该阻塞吗?
namespace Sandbox {
class Program {
static void Main(string[] args) {
var log = new Logger();
lock (log) {
log.Log("Hello World!");
}
}
}
public class Logger {
public void Log(string message) {
lock (this) {
Console.WriteLine(message);
}
}
}
Run Code Online (Sandbox Code Playgroud)
}
我正在尝试将以下sql转换为Linq 2 SQL:
select groupId, count(distinct(userId)) from processroundissueinstance
group by groupId
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
var q = from i in ProcessRoundIssueInstance
group i by i.GroupID into g
select new
{
Key = g.Key,
Count = g.Select(x => x.UserID).Distinct().Count()
};
Run Code Online (Sandbox Code Playgroud)
当我运行代码时,我不断获得无效的GroupID.有任何想法吗?看起来不同的是搞砸了......
这是生成的sql:
SELECT [t1].[GroupID] AS [Key], (
SELECT COUNT(*)
FROM (
SELECT DISTINCT [t2].[UserID]
FROM [ProcessRoundIssueInstance] AS [t2]
WHERE (([t1].[GroupID] IS NULL) AND ([t2].[GroupID] IS NULL))
OR (([t1].[GroupID] IS NOT NULL)
AND ([t2].[GroupID] IS NOT NULL)
AND ([t1].[GroupID] = [t2].[GroupID]))
) AS [t3] …
Run Code Online (Sandbox Code Playgroud) 我试图加载我的整个图表,它看起来像下面这样:
public class WorkoutProgram
{
public Schedule Schedule { get; set; }
}
public class Schedule
{
public ICollection<DayBase> Days { get; set; }
}
public abstract class DayBase
{
}
public class TrainingDay : DayBase
{
public ICollection<Exercise> Exercises { get; set; }
}
context.WorkoutPrograms.Include("Schedule.Days.Exercises");
Run Code Online (Sandbox Code Playgroud)
显然,并非所有Schedule.Days
都是TrainingDay
s,所以由于路径包含,我得到运行时错误Exercises
.
我在这里错过了配置,还是我需要求助于延迟加载(我希望不要).
谢谢
对于除了普通视图模型之外的任何东西,我使用视图模型构建器来处理生成视图模型对象的责任.现在,我使用构造函数注入构建器到我的控制器中,但这有点气味,因为构建器实际上依赖于正在执行的操作方法.我有两个想法.第一个涉及自定义ActionFilter,允许我使用适当的构建器来装饰每个操作方法.第二种方法是添加View方法的覆盖,该方法可以接受泛型.
这是我的代码目前的样子.注意,构建器通过ctor注入.
[HttpGet, ImportModelStateFromTempData, Compress]
public ActionResult MyAccount()
{
return View(accountBuilder.Build());
}
Run Code Online (Sandbox Code Playgroud)
这是一个看起来像什么的选项:
[HttpGet, ImportModelStateFromTempData, Compress, ViewModelBuilder(typeof(IMyAccountViewModelBuilder)]
public ActionResult MyAccount()
{
return View();
}
Run Code Online (Sandbox Code Playgroud)
或者选项二:
[HttpGet, ImportModelStateFromTempData, Compress]
public ActionResult MyAccount()
{
return View<IMyAccountViewModelBuilder>();
}
Run Code Online (Sandbox Code Playgroud)
任何想法或建议都会很棒!
所以我们的组织正在使用asp.net mvc和web api开发一些新的web应用程序.我们决定不使用活动目录进行身份验证/授权,因此看起来像实体框架的asp.net身份可能会起作用.
查看数据库模式我没有看到应用程序表,因此我们可以拥有一个用于用户凭据和应用程序访问的中央存储库.这是声称进来的地方吗?那怎么样; 用户 - >应用程序 - >角色 - >权限
另外,我们的目标之一是为用户提供单点登录.这是否可能与新的持票人令牌?
感谢您的任何帮助,您可以提供
我试图将转发器中包含的对象与刚刚从服务器返回的对象进行比较.
因为重复的对象包含hashkey属性,angular.equals的计算结果为false.
我想我可以删除该属性,但我不知道他们是否是一个有角度的方式来处理这个.
谢谢
我有一个包含调查实体集合的用户实体.我希望关联包含关系的过滤器,例如'IsCompleted',所以每当我急切地加载(或延迟加载)集合时,就会发生这种过滤.
这是我们控制的东西吗?
谢谢!
在设计我的api时,我正在考虑如何建模以下行为.
选项1似乎更合乎逻辑,但随之而来的是强制执行不变量,例如检查电子表格是否实际属于工作簿.
选项2看起来很奇怪,电子表格知道如何删除自己,但实际上电子表格有一个对其父工作簿的引用,并可以直接将调用委托给他.
或者这真的不是一个有效的案例,因为工作簿需要验证它的电子表格,不管是什么?想法?
Workbook wb = new Workbook("Finances");
Spreadsheet ss = wb.CreateSpreadsheet("Bob's");
// option 1:
wb.RemoveSheet(ss);
// option 2:
ss.RemoveFromWorkbook();
Run Code Online (Sandbox Code Playgroud)
谢谢大家
.net ×7
c# ×6
architecture ×2
asp.net-mvc ×2
ado.net ×1
angularjs ×1
asp.net ×1
distributed ×1
linq ×1
linq-to-sql ×1
logging ×1
model ×1
object-model ×1
serilog ×1
view ×1