[英]Entity Framework with a game server
我一直在研究在C#游戏服务器中使用Entity Framework,以使查询更加容易。 我是类型安全的忠实拥护者,并且Entity Framework在自动化大多数样板代码方面做得很好。 尽管我不太确定如何去利用某些组件,即ObjectContext
。
服务器使用大量线程,因此线程安全是一个问题。 现在,我只使用一个自定义池来执行查询。 无需赘述,每个查询的工作方式如下:
DbConnection
DbCommand
DbCommand
DbCommand
DbConnection
它非常干净,快速和安全,但是问题是创建查询有点麻烦,如果我想确保类型安全,就必须手动生成和更新“容器类”。 这就是为什么我转向实体框架的原因。
只需使用DbConnection
和DbCommand
这一切都可以很好地工作,因为不必担心哪个DbConnection
/ Command对哪个对象或任何对象执行查询。
无论如何,我真的不知道如何在不施加限制的情况下对其进行更多解释。 当我通常不需要频繁地更新数据库时,通常每次使用DbConnection
/ Command执行一次查询,保存它以及部署ObjectContext之类的操作只会增加过多的开销。
您如何将实体框架用于对数据库没有很高要求的即时且不断更新的游戏服务器?
首先,您需要阅读以下内容并将其内部化:
特别注意:
您最有可能注意到Entity框架在性能上的差异的地方是数据更新(而非插入)。 这是由于必须首先从数据库中读取数据,然后进行更改,然后再将其保存回数据库。
对于对象上下文,我们使用using语句,以便立即将其处置。 在垃圾收集器运行所有超出范围的对象时,让游戏暂停会不好。
如果您主要阅读过,我建议使用例如Enterprise Library Caching应用程序块来缓存数据。
实体框架将为您提供更高效的编程模型,而缓存将为您提供更好的性能。
您可能想看看Subsonic,它比您的小巷还多,并且没有尝试像EF一样聪明,并且由于简单性,通常应该表现得更好。 同时,它很好地覆盖了对象生成角度,因此您无需编写太多样板文件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.