- 主题:请教一下dotnet的兼容性
我感觉不是太理解你这个 web service 的定义
一般作为 web service,不是常驻一个服务端进程,一直处理传过来的 http request 吗?
【 在 eGust 的大作中提到: 】
: 我的实现还是基于 web service,对 lambda 的 event 进行转发。本地启动服务的时候,也能感觉到不是马上就起来的,所以 web service 本身的初始化也是占用不少时间的。如果直接处理 lambda event,就能把这部分时间省下来,缺点是直接绑 aws 上了。这个目前来说我觉得不重要
: 乙簿褪谴蟾攀砸幌拢懈龈拍疃选
: 这方面可能 node 还是有优势吧,另外一个用 rust 写的服务,冷启动也要 1s+ 才返回结果。不过做的事情不一样,不好直接比。基于 web service 的实现,本身服务的启动速度非常敏感。而对传统的 web 框架来说,服务启动的时间不敏感。我回头还得再试个 py,这样做对比的时候有
: ...................
--
FROM 59.41.68.*
aws lambda 是基于极其轻量的 vm(基于 firecracker,据称只有5M的 overhead,启动速度也是毫秒级别)的服务,并不会保证有一个实例持续运行。超过一定时间没有访问的话,该 vm 就被干掉了。
serverless 就是这么一个概念,前端静态文件放 s3 上面,cloudfront 自带 cdn 功能,给个域名就行。api request 走的是 api gateway,相当于 load balancer,根据请求启动对应的 lambda。lambda 本身是有一个 handler 会接受到一个 event,里面带有一定格式的数据。所以实际上是没有服务进程的,只在使用的时候才会启动 vm 调用 handler。
比较流行的一种开发方式是,还是开发正常的 web service,完全可以单独部署。在它的基础之上,把 api gateway 发过来的 event 再转换成 http request,交给原有的逻辑处理,再把 http response 转换回 api gateway 能理解的格式。所以这个 web service 实际上并没有启动一个 tcp 服务,而是 handler 里让原本的服务处理一个 http request 就完了。
【 在 keygen 的大作中提到: 】
: 我感觉不是太理解你这个 web service 的定义
: 一般作为 web service,不是常驻一个服务端进程,一直处理传过来的 http request 吗?
:
: ...................
--
修改:eGust FROM 222.153.59.*
FROM 222.153.59.*
用 node 做示例的话,应用大概是这样的
// app.ts
import fastify from 'fastify';
export const app = fastify();
app.get('/foo', async () => { ... });
app.post('/bar', async () => { ... });
// standalone.ts
import { app } from './app';
const main = async () => {
await app.listen({ host: ..., port: ... });
};
main();
// index.ts
import awsLambdaFastify from '@fastify/aws-lambda';
import { app } from './app';
export const handler = awsLambdaFastify(app);
这样本地开发,或者部署成单独的 http server 的时候,用 standalone 来启动应用,这种情况下用不到 index.ts。反之 aws lambda 用的话,就不需要 standalone.ts,aws 会调用 index 里的 handler。
【 在 keygen 的大作中提到: 】
: 我感觉不是太理解你这个 web service 的定义
: 一般作为 web service,不是常驻一个服务端进程,一直处理传过来的 http request 吗?
:
: ...................
--
修改:eGust FROM 222.153.59.*
FROM 222.153.59.*
噢,你说的是 serverless
我们是传统的写个 service,让它一直跑。跑在自己 DC 类 k8s 集群上,实例在更新之前一直存在。
lambda 如果保证比较稳定的输入量的话,一直 hot 着应该还好。或者自己写一个定时请求保活?
这得根据你们的具体的业务情况来了。现在云产品可供选择的太多,规划起来脑仁疼。。
【 在 eGust 的大作中提到: 】
: aws lambda 是基于极其轻量的 vm(基于 firecracker,据称只有5M的 overhead,启动速度也是毫秒级别)的服务,并不会保证有一个实例持续运行。超过一定时间没有访问的话,该 vm 就被干掉了。
: serverless 就是这么一个概念,前端静态文件放 s3 上面,cloudfront 自带 cdn 功能,给个域名就行。api request 走的是 api gateway,相当于 load balancer,根据请求启动对应的 lambda。lambda 本身是有一个 handler 会接受到一个 event,里面带有一定格式的数据。所以实际
: 鲜敲挥蟹务进程的,只在使用的时候才会启动 vm 调用 handler。
: ...................
--
FROM 218.17.141.*
了解
【 在 eGust 的大作中提到: 】
: 用 node 做示例的话,应用大概是这样的
: // app.ts
: import fastify from 'fastify';
: ...................
--
FROM 218.17.141.*
选型还得考虑招人的问题吧
java工程师一抓一大把,c#不太好招
【 在 eGust 的大作中提到: 】
: 我们公司一直用 ruby on rails 开发 web 应用,最近开始考虑技术转型。新的开发栈基本是前后端彻底分离,后端只提供 web api 就好了。我个人是比较倾向 c# 的,主要原因是用了 ts 之后回不去没类型的开发了,再加上跟 java 和 go 比还是更喜欢 c# 的语法,尤其是能重载运算符
: ,这样做计算的时候代码更好读,另外 async/await 的语法也应该更容易上手。
: 但是在有人提出了反对意见,由于我对 c#、asp.net 的历史和生态也没啥概念,所以特地来请教一下。
: ...................
--
FROM 106.120.46.*
这些都是比较具体的问题了,我们公司生产环境能用上 container 还有很长一段路要走
如果是基于 k8s 的话那自然是没问题的
另外能做成 serverless 的服务相对来说应该比较独立,规模不至于太大,功能也不会太复杂,我觉得用什么语言问题不大
【 在 keygen 的大作中提到: 】
: 噢,你说的是 serverless
: 我们是传统的写个 service,让它一直跑。跑在自己 DC 类 k8s 集群上,实例在更新之前一直存在。
: lambda 如果保证比较稳定的输入量的话,一直 hot 着应该还好。或者自己写一个定时请求保活?
: ...................
--
FROM 203.184.25.*
java 当然也不是不可以,只不过我个人不太喜欢
【 在 jimmycmh 的大作中提到: 】
: 选型还得考虑招人的问题吧
: java工程师一抓一大把,c#不太好招
: 符
: ...................
--
FROM 203.184.25.*
没特殊需求,选大路货是最合适的,除非你是老板愿意为个人喜好付费
【 在 eGust 的大作中提到: 】
: java 当然也不是不可以,只不过我个人不太喜欢
--
FROM 106.120.46.*
楼主应该在新西兰?
【 在 jimmycmh 的大作中提到: 】
: 没特殊需求,选大路货是最合适的,除非你是老板愿意为个人喜好付费
--
FROM 59.41.68.*