Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
lwm1986
roslyn
提交
1da5b30a
R
roslyn
项目概览
lwm1986
/
roslyn
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
roslyn
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
1da5b30a
编写于
5月 11, 2017
作者:
H
Heejae Chang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
added comments
上级
174035e6
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
22 addition
and
0 deletion
+22
-0
src/Workspaces/Remote/Core/Services/SolutionService.cs
src/Workspaces/Remote/Core/Services/SolutionService.cs
+22
-0
未找到文件。
src/Workspaces/Remote/Core/Services/SolutionService.cs
浏览文件 @
1da5b30a
...
...
@@ -59,6 +59,28 @@ private async Task<Solution> GetSolutionInternalAsync(Checksum solutionChecksum,
}
}
/// <summary>
/// SolutionService is designed to be stateless. if someone asks a solution (through solution checksum),
/// it will create one and return the solution. the engine takes care of synching required data and creating a solution
/// correspoing to the given checksum.
///
/// but doing that from scratch all the time wil be expansive in terms of synching data, compilation being cached, file being parsed
/// and etc. so even if the service itself is stateless, internally it has several caches to improve perf of various parts.
///
/// first, it holds onto last solution got built. this will take care of common cases where multiple services running off same solution.
/// second, it uses assets cache to hold onto data just synched (within 3 min) so that if it requires to build new solution,
/// it can save some time to re-sync data which might just used by other solution.
/// third, it holds onto solution from primary branch from Host. and it will try to see whether it can build new solution off the
/// primary solution it is holding onto. this will make many solution level cache to be re-used.
///
/// the primary solution can be updated in 2 ways.
/// first, host will keep track of primary solution changes in host, and call OOP to synch to latest time to time.
/// second, engine keeps track of whether a certain request is for primary solution or not, and if it is,
/// it let that request to update primary solution cache to latest.
///
/// these 2 are complimentary to each other. #1 makes OOP's primary solution to be ready for next call (push), #2 makes OOP's primary
/// solution be not stale as much as possible. (pull)
/// </summary>
private
async
Task
<
Solution
>
CreateSolution_NoLockAsync
(
Checksum
solutionChecksum
,
bool
fromPrimaryBranch
,
Solution
baseSolution
,
CancellationToken
cancellationToken
)
{
var
updater
=
new
SolutionCreator
(
_assetService
,
baseSolution
,
cancellationToken
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录