C# 创建要销售的广泛项目

C# 创建要销售的广泛项目,c#,design-patterns,module,C#,Design Patterns,Module,我将从头开始一个C#项目,该项目将由多个模块组成,因此它可以由现有PHP/ASP/MySQL/Oracle/MS SQL应用程序的模块出售,该应用程序管理显示3D对象,并从web应用程序创建2D和3D CAD文件,用户可以使用该应用程序创建所有内容 我的问题是,从零开始,从“销售”的角度来看,这应该是我应该实现的一种好的编程方法、设计模式、单元测试等等。。。我如何知道如何应用它们,有没有什么好的教程/“告诉我方法”之类的东西来了解这些东西,比如 我应该提供哪些类供客户端重写,以便在模块中提供可

我将从头开始一个C#项目,该项目将由多个模块组成,因此它可以由现有PHP/ASP/MySQL/Oracle/MS SQL应用程序的模块出售,该应用程序管理显示3D对象,并从web应用程序创建2D和3D CAD文件,用户可以使用该应用程序创建所有内容

我的问题是,从零开始,从“销售”的角度来看,这应该是我应该实现的一种好的编程方法、设计模式、单元测试等等。。。我如何知道如何应用它们,有没有什么好的教程/“告诉我方法”之类的东西来了解这些东西,比如

  • 我应该提供哪些类供客户端重写,以便在模块中提供可扩展性
  • 我应该用什么样的“包装”来“销售”?DLL、CAB、MSI
  • 我是否应该使用亚音速/NHibernate,以便用户可以生成自己的DAL?我们的原型实现将只使用Oracle
我现在有点迷路了,我知道该做什么,但不知道如何才能做到(记住了这个完美的编码路径)


任何好的编程想法都会受到欢迎:)

首先做一些有用的东西,然后从潜在客户那里得到反馈。

首先做一些有用的东西,然后从潜在客户那里得到反馈。

我想快速回答你的每个明确问题

至于如何集成,请学习控制原理的反转以及如何将其用于可扩展性目的。密切关注MEF,微软可扩展性框架。至于什么,您的集成点将主要取决于您正在编写的应用程序类型和目标受众。这还取决于你想给第三方多少控制权。例如,Reflector有一个很棒的、几乎完全开放的插件结构

DLL和CAB分别是库和存储格式。他们自己做的事情并不多。MSI是安装程序的一种形式,可以包含组成应用程序的DLL。不管你有什么类型的安装程序,它越容易使用,就会有越多的人尝试你的产品


数据层本身并不一定那么重要。人们可能不会为您的应用程序创建他们自己的数据层,如果他们这样做了,那么如果您的可扩展性框架正在发挥作用,他们应该能够使用他们想要的任何东西。更重要的是,无论您决定使用哪种DAL,您都需要检查它是否能够在不同的数据库上运行,如果这对您很重要,那么需要做多少工作。您还需要确保DAL中使用的功能适用于您想要支持的所有数据库。NHibernate有几个功能在它运行的所有数据库中都不起作用。

我要说的是,快速回答您的每个明确问题

至于如何集成,请学习控制原理的反转以及如何将其用于可扩展性目的。密切关注MEF,微软可扩展性框架。至于什么,您的集成点将主要取决于您正在编写的应用程序类型和目标受众。这还取决于你想给第三方多少控制权。例如,Reflector有一个很棒的、几乎完全开放的插件结构

DLL和CAB分别是库和存储格式。他们自己做的事情并不多。MSI是安装程序的一种形式,可以包含组成应用程序的DLL。不管你有什么类型的安装程序,它越容易使用,就会有越多的人尝试你的产品


数据层本身并不一定那么重要。人们可能不会为您的应用程序创建他们自己的数据层,如果他们这样做了,那么如果您的可扩展性框架正在发挥作用,他们应该能够使用他们想要的任何东西。更重要的是,无论您决定使用哪种DAL,您都需要检查它是否能够在不同的数据库上运行,如果这对您很重要,那么需要做多少工作。您还需要确保DAL中使用的功能适用于您想要支持的所有数据库。NHibernate有几个功能在它运行的所有数据库中都不起作用。

首先,想想它应该有多大的可扩展性。如果只是提供完全的可扩展性,那么就有缺乏安全性和不稳定性的风险。 您可以允许重写类,只要确保只将正确的方法标记为“virtual”。 要销售的套餐类型取决于您的目标受众。如果您的目标是超级用户,那么DLL应该是“OK”。但是,如果您想要一个易于使用的系统,那么MSI或任何其他安装程序都会更明智

至于DAL,你真的应该分析每种方法的优缺点,选择一种适合你的方法


确保它是可扩展的,但您可能需要等待反馈,以指定它的哪一部分是公开的。

首先,考虑它应该具有多大的可扩展性。如果只是提供完全的可扩展性,那么就有缺乏安全性和不稳定性的风险。 您可以允许重写类,只要确保只将正确的方法标记为“virtual”。 要销售的套餐类型取决于您的目标受众。如果您的目标是超级用户,那么DLL应该是“OK”。但是,如果您想要一个易于使用的系统,那么MSI或任何其他安装程序都会更明智

至于DAL,你真的应该分析每种方法的优缺点,选择一种适合你的方法


确保它是可扩展的,但您可能需要等待反馈,以指定它的哪一部分是公开的。

您将在任何应用程序的生命周期中至少重写一次。拿出一些东西来建立价值,然后担心你的代码有多漂亮

你可以花一年的时间制作一个没有人愿意使用的完美编码的应用程序,或者你也可以花几个月的时间和r