Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASP.NET MVC:UpdateModel是一个;“昂贵的”;操作(由于反射)?_C#_.net_Asp.net_Asp.net Mvc_Updatemodel - Fatal编程技术网

C# ASP.NET MVC:UpdateModel是一个;“昂贵的”;操作(由于反射)?

C# ASP.NET MVC:UpdateModel是一个;“昂贵的”;操作(由于反射)?,c#,.net,asp.net,asp.net-mvc,updatemodel,C#,.net,Asp.net,Asp.net Mvc,Updatemodel,我想知道UpdateModel是否被认为是一个“昂贵”的操作(由于模型属性的反射查找),尤其是在大型web应用程序的上下文中(想想StackOverflow) 我不想参与过早的优化,但我认为使用UpDeMeMod是一个设计选择,这就是为什么我想早点知道它是明智还是不可行的原因。另一个(乏味的)选择是为具有固定属性的各种域对象编写自己的UpdateModel方法 谢谢大家! 我认为UpdateModel是一种快捷方式,它会导致视图和模型之间的大量耦合 我选择不使用“内置”模型(比如能够将LINQ创

我想知道UpdateModel是否被认为是一个“昂贵”的操作(由于模型属性的反射查找),尤其是在大型web应用程序的上下文中(想想StackOverflow)

<>我不想参与过早的优化,但我认为使用UpDeMeMod是一个设计选择,这就是为什么我想早点知道它是明智还是不可行的原因。另一个(乏味的)选择是为具有固定属性的各种域对象编写自己的UpdateModel方法


谢谢大家!

我认为UpdateModel是一种快捷方式,它会导致视图和模型之间的大量耦合

我选择不使用“内置”模型(比如能够将LINQ创建的对象直接从数据库传递到视图),因为我希望用更复杂的东西替换我的模型,甚至只是另一个数据库提供程序。不过,使用LINQtoSQL(或ADO.NET实体)进行快速原型制作非常诱人

我倾向于创建我的MVC应用程序,然后公开一个“服务”层,然后连接到一个“模型”(这是我的领域的OO视图)。这样我就可以轻松地创建web服务层、交换数据库、编写新的工作流等,而无需担心

(并且确保您编写测试并使用DI—这会节省很多麻烦!)


Rob

你很聪明,不想过早地进行优化。特别是因为这种“优化”会使处理器的时间比你的时间长,而你的时间要昂贵得多


优化的主要规则是首先优化慢的东西。因此,考虑实际更新模型与从数据库后端中选择的频率。我猜它的频率是1/10或更少。现在考虑从数据库后端选择的成本与反射成本。反射的代价以毫秒为单位。从数据库后端进行选择的成本最坏也可以用几秒钟来衡量。我的经验是,帖子的速度很少很慢,当它们慢的时候,通常是数据库出了问题,而不是反射。我认为您可能会将大部分优化时间都花在GET上。

与网络延迟、数据库调用和常规IO相比,UpdateModel()调用是微不足道的,我不会为此费心

不过,我认为他的问题的要点是一样的,不管是直接更新域对象还是使用专门的编辑模型(我也建议这样做)。