Javascript 从asp.mvc应用程序迁移到node.js应用程序,重点是设计
我目前正在寻找替代平台,以便将现有应用程序迁移到,它最初是一个使用asp.mvc的原型,但大多数代码都是带有简单asp.mvc web服务的javascript,因此,在我们考虑将其向前推进时,似乎明智的做法是,我们放弃当前的microsoft堆栈,转而使用nodejs,让我们更自由地选择应用程序的托管位置和方式,此外,我们还可以在web服务和前端中重用一些模型和代码,尽管这可能会导致少量的重用 这可能是一个包含许多部分的相当大的问题,但无论如何我都会把它说出来,因为我相信这对很多其他人来说都是有帮助的,他们可以研究如何从.net/java迁移到node.js。由于大多数静态类型语言都使用了大量的模式和实践,例如控制反转、工作单元、面向方面编程等,因此转向另一个在这方面似乎不需要太多结构的平台似乎有点奇怪。。。因此,我对从我的超级结构化和测试世界迁移到这个看似非结构化和动态的新世界有些担心 下面是我在MVC中要做的主要事情,我目前想在node.js中做,但我不太确定实现相同级别的分离或功能的最佳方法Javascript 从asp.mvc应用程序迁移到node.js应用程序,重点是设计,javascript,node.js,unit-testing,unit-of-work,sequelize.js,Javascript,Node.js,Unit Testing,Unit Of Work,Sequelize.js,我目前正在寻找替代平台,以便将现有应用程序迁移到,它最初是一个使用asp.mvc的原型,但大多数代码都是带有简单asp.mvc web服务的javascript,因此,在我们考虑将其向前推进时,似乎明智的做法是,我们放弃当前的microsoft堆栈,转而使用nodejs,让我们更自由地选择应用程序的托管位置和方式,此外,我们还可以在web服务和前端中重用一些模型和代码,尽管这可能会导致少量的重用 这可能是一个包含许多部分的相当大的问题,但无论如何我都会把它说出来,因为我相信这对很多其他人来说都是
路由到操作 ASP MVC中的这种机制似乎可以被node.js中的Express所替代,这将使我能够将路由映射到方法。然而,有几个问题值得关注:
- 在ASP MVC中,我的控制器可以被注入依赖项并具有变量,因此操作很容易测试,因为它们所依赖的一切都可以在需要时被模拟,并通过构造函数传递。然而,由于express中的方法似乎没有包含范围,因此我似乎必须要么使用全局变量,要么在内部使用新的变量。在这些路由方法中是否有一种很好的方法来访问我的业务逻辑容器
- 有没有办法自动绑定正在发送的模型?或者至少以某种有用的方式获取json/xml等?看来,如果你发送正确的mime类型的内容,它可以提取,但我没有看到任何明确的例子,这在网上。我很高兴在Express上使用其他框架来提供此功能,因为理想情况下,我只想向
发出POST请求,并将用户对象拉出,并在数据库中用id 1更新用户(我们将很快讨论)/user/1
- 验证发送数据的最佳方法是什么?目前,在我们的前端javascript应用程序中,我们使用KnockoutJS,所有模型都使用knockout Observable,并使用knockout.Validation进行验证。我很乐意在节点上使用淘汰验证,因为模型是前端和后端之间的契约,但是如果有更好的解决方案,我很乐意研究它
- Sequalize似乎非常适合替换NHibernate,但是它似乎没有任何类型的事务处理,这使得创建工作单元模式非常困难。如果不能以同样的方式完成,这并不是世界末日,但我希望能够以某种方式将一大块工作分组,因此像CreateNewUserUnitOfWork这样的操作将采用表示用户详细信息的模型,对其进行验证,在一个表中创建一个条目,然后在其他表中创建一些关系数据,等等,从数据库中获取用户id,然后将其发回(假设一切顺利)。从QueryChainer来看,它似乎提供了大部分功能,但如果它在5个操作中的第3个操作失败,那么回滚似乎并不简单,那么有什么方法可以获得这种级别的控制吗
- 似乎有一种更新路由的方法,只需扫描目录中的新插件并包含它们()就可以了,但是有没有一些最佳实践来做这类事情,因为我不希望每个请求都必须不断地进行目录扫描。可以安全地假设,我很高兴在启动节点应用程序时将插件放在正确的位置,因此目前不需要在运行时添加插件