在研究了异步Web开发的概念之后,特别是从这个源开始,我创建了一个示例应用程序来证明这个概念.
该解决方案由2个ASP.NET Web API应用程序组成.第一个是模拟的慢端点; 它在返回一个名为Student的自定义类之前等待1000毫秒:
public IEnumerable<Student> Get()
{
Thread.Sleep(1000);
return new List<Student> { new Student { Name = @"Paul" }, new Student { Name = @"Steve" }, new Student { Name = @"Dave" }, new Student { Name = @"Sue" } };
}
Run Code Online (Sandbox Code Playgroud)
这是学生班:
public class Student
{
public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
此端点托管在localhost:4002上的IIS 7中.
第二个应用程序使用2个端点联系第一个,一个是同步的,另一个是异步的:
public IEnumerable<Student> Get() {
var proxy = WebRequest.Create(@"http://localhost:4002/api/values");
var response = proxy.GetResponse();
var reader = new StreamReader(response.GetResponseStream());
return …
Run Code Online (Sandbox Code Playgroud) 我有一个在 Go 中实现的 Web 服务,它从外部服务返回一个 JSON 结构。返回对象后,它看起来像这样:
{"otherServiceInfoList":[],"action...
Run Code Online (Sandbox Code Playgroud)
我的 Go Web 服务只是将 JSON 读取到一个切片中:
response, err := ioutil.ReadAll(resp.Body)
Run Code Online (Sandbox Code Playgroud)
并将其返回给客户端:
w.Write(response)
Run Code Online (Sandbox Code Playgroud)
响应在 Postman 中按原样显示,但是 Fiddler 预先和附加响应如下:
34ee
{"otherServiceInfoList":[],"...
0
Run Code Online (Sandbox Code Playgroud)
注意前导34ee
和尾随0
.
然后我被提升来转换响应:
“响应已编码,可能需要在检查前进行解码。”
接受提示删除返回原始 JSON。Go 的w.write
方法是应用了额外的字符,还是特定于 Fiddler?
顺便说一句,我在写入缓冲区之前设置了以下标头:
w.Header().Set("Content-Type", "application/json; charset=UTF-8")
Run Code Online (Sandbox Code Playgroud) MarkLogic 可以处理的并发连接数是否有上限?例如,ASP.NET 被限制为同时处理 10 个请求,而不管基础结构和硬件如何。MarkLogic 服务器中是否有类似的限制?如果没有,是否有任何基准可以表明典型实例可以处理多少连接?
给定一个包含以下局部变量和函数的包:
var bucket *gocb.Bucket
func Init(b *gocb.Bucket) {
bucket = b
}
func DoSomething() {
// do something with 'bucket'
}
Run Code Online (Sandbox Code Playgroud)
是否可以调用Init
函数,bucket
在调用之前传入一个实例DoSomething
,这取决于bucket
变量?
或者,应该DoSomething
明确地接受一个bucket
参数,如下所示:
func DoSomething(bucket *gocb.Bucket) {
// do something with 'bucket'
}
Run Code Online (Sandbox Code Playgroud)
我宁愿bucket
在包级别实例化一个实例,并在整个应用程序生命周期中使用它,而不是在函数级别进行管理.从设计,性能等角度来看,这是否可以接受,或者是否有实现这一目标的首选方法?请记住,bucket
只需要实例化一次.
DoSomething
将从HTTP上下文调用; 我希望HTTP处理程序不具有bucket
参数的可见性,而是bucket
在应用程序启动时实例化.
go ×2
asp.net ×1
async-await ×1
asynchronous ×1
c# ×1
concurrency ×1
connection ×1
fiddler ×1
json ×1
marklogic ×1
performance ×1
singleton ×1
webserver ×1