.net 内部框架与新的C#技术

.net 内部框架与新的C#技术,.net,frameworks,.net,Frameworks,如果我们已经开发了自己的ORM框架,并且该框架多年来运行良好,那么我们为什么要学习和使用全新的.net技术,如LINQ或实体框架或NHibernate或CSLA.net,用于我们即将推出的软件项目 注意:新的框架需要新的努力来学习和教学 注:这只是一个类比 因为新开发人员将了解更新的框架,但不了解您的框架 因此,您不必浪费时间维护Microsoft为您维护的代码 顺便说一句,“LINQ”本身是对您的框架的一种补充技术,因为您目前拥有的是专有的和未知的。。。如果你有了新员工,你仍然希望能够高效地开

如果我们已经开发了自己的ORM框架,并且该框架多年来运行良好,那么我们为什么要学习和使用全新的.net技术,如
LINQ
实体框架
NHibernate
CSLA.net
,用于我们即将推出的软件项目

注意:新的框架需要新的努力来学习和教学

注:这只是一个类比

  • 因为新开发人员将了解更新的框架,但不了解您的框架
  • 因此,您不必浪费时间维护Microsoft为您维护的代码

  • 顺便说一句,“LINQ”本身是对您的框架的一种补充技术,因为您目前拥有的是专有的和未知的。。。如果你有了新员工,你仍然希望能够高效地开发你的代码

    编写自己的ORM并没有什么错,但是Entity Framework 2可能包含一些您没有想到的东西——在它背后有一个完整的团队和社区,在您的代码过时的时候,它一直在改进(顺便说一句,我不是说它是,它只是一个示例)


    从个人角度来看,了解nHibernate是一项可转移的技能。知道CompanyForm不是。在我看来,你至少应该检查一下这些新技术,并将它们与你开发的技术进行比较。
    列出与现有技术相比的新技术的优点和缺点,并决定在下一个项目中使用哪些技术更好


    但是,如果您的框架已经有16年的历史,那么您确实应该小心,因为在这一点上,您将在新项目中发现的许多情况下遇到阻碍。

    我可以想到几个原因

    • LINQ将在许多方面为您带来好处(执行各种不同的任务),并且不是相互排斥的。linq 2 sql是另一个存储库
    • 可能在这些公共技术方面比在您的框架上有更多的知识和指导
    • 其他技术可能会与这些公开可用的技术很好地集成在一起,在这些技术中,您必须为您的框架进行工作
    • 如果客户需要更换店铺,他们会有一个更轻松的时间(这对客户来说比你更有利,但我认为你有责任考虑这一点)
    • 招聘已经了解这些公共技术的新员工会更容易。你很可能找不到认识你的人。因此,新员工的成长时间可以少得多

    因此,看看这些论点,我认为你需要把问题转过头来说。我的技术比其他技术有什么优势,值得吗?您是否可以将其添加到公共技术中?

    使用现有框架有很多优点。 -知识。您邀请使用您的框架的每个人都必须学习它。另一方面,有很多人知道如何使用EF、NHibernate等

    • 知识。您可以找到大量关于现有框架的信息、提示、操作指南、书籍、视频等。如果你想把这些材料用于你的框架,你就要承担创建它们的费用

    • 知识。尝试在StackOverflow中询问有关您自己的框架的问题。得到答案的可能性很小

    • 进化论。NHibernate和EF不断进化。开发您自己的框架的成本全是您自己的,您无法与其他公司共享它。。。当然,除非您正在出售it许可证并与EF、NHibernate等竞争

    • 虫子。这与前一个问题有关。您必须修复自己的bug,而不是简单地报告它们

    • 敏捷。这是其中最大的一个。您的框架是否与使用linq的框架一样易于使用,开发速度也一样快。要建造一个像linq一样被人深思熟虑的东西是非常困难的

    • 语言整合。微软的优势在于定义了这种语言,使它能够适应这些框架。对于林克来说,C#的发展非常迅速。没有这些进化,林克根本就不存在


    保持您自己的框架的唯一优势是您可以控制它。当您控制框架时,这是一种非常错误的安全感,但仍然无法控制构建框架的内容。呆在舒适区会产生一种虚假的安全感。

    当然,改变也会带来一些痛苦,但有时,与其实施或维持对现有事物的错误实施,不如采取一种更强有力的长期战略,让某个事物只专注于问题领域

    关于数据访问的特定领域,如果您不使用LINQ/ADO.NET data Services/ORM,您将在以下几个方面找到令人信服的原因:

  • 支持RESTful API访问数据库,这会阻止您在服务中实现大量契约和操作

  • LINQ查询非常强大,可以在不往返的情况下操作数据

  • 远离数据访问的存储过程模型

  • 即将推出的框架/平台旨在与这些技术协同工作。例如,LINQ与WPF/Silverlight配合得相当好,因为您处理了大量普通旧C#Objects/数据传输对象的IEnumerable集合

  • 这些只是几个原因,但还有更多的原因。社区一直是我喜欢使用外部项目的一个重要原因——如果选择实体框架,可以使用Microsoft生态系统,也可以使用围绕NHibernate等项目的非常活跃的开源社区

    虽然我确实觉得在这些项目上工作的很多人都比我聪明,但目前假设我和他们一样聪明,剩下的问题是他们花了大量的钱