1

我将从头开始一个 C# 项目,该项目将包含几个模块,因此它可以通过现有 PHP/ASP/MySQL/Oracle/MS SQL 应用程序的模块出售,该应用程序管理显示 3D 对象并创建 2D 和 3D CAD 文件来自用户可以用来创建所有东西的网络应用程序。

我的问题是,从零开始,从“销售”的角度出发,它应该是我应该实现的一种很好的编程方法、设计模式、单元测试等......我怎么知道如何应用它们,有没有什么好的教程/“给我指路”有点像了解这些事情,比如......

  • 我应该使哪些类可以被客户端覆盖,以便我可以在我们的模块中提供可扩展性?
  • 我应该使用什么样的“包装”来“销售”?DLL、CAB、微星?
  • 我应该使用 SubSonic / NHibernate 以便用户可以生成自己的 DAL?我们的原型实现将仅使用 Oracle。

我现在有点迷路,我知道该怎么做,但不知道如何完成它(记住这个完美的编码路径)。

任何好的编程想法都很高兴:)

4

6 回答 6

3

为了快速解决您的每个明确问题,我会说。

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

DLL 和 CAB 分别是库和存储格式。他们自己做的不多。MSI 是安装程序的一种形式,可以包含构成您的应用程序的 DLL。无论您拥有哪种类型的安装程序,它越容易使用,就会有越多的人尝试您的产品。

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

于 2008-11-19T19:51:44.207 回答
2

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

你可以花一年的时间来制作一个没人愿意使用的完美编码的应用程序,或者你可以花几个月的时间来改进它,或者在它遇到问题时做其他事情。

于 2008-11-19T19:55:46.397 回答
1

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

至于DAL,你真的应该分析每个的优点和缺点,然后选择一个适合的。

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

于 2008-11-19T19:52:52.173 回答
1

I think that I'm going to buy this book, it addresses my concerns in "how to accomplishing it" and from Brad Abrams perspective, is quite good :)

于 2008-11-20T18:55:45.050 回答
0

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

于 2008-11-19T19:51:12.427 回答
0

我不认为你采取了正确的方法。你不应该从“销售”的角度来设计软件。您设计软件来完成您的业务模型及其规则所需的工作。所以,从“卖”的角度来看,我会说首先担心有一个好的产品,软件(不管它写得多么好或多么糟糕)会排在第二位,你就会变得富有,只要随着软件完成工作并且您的产品大受欢迎。

听说过 ebay 是如何开始的吗?很长一段时间以来,他们都非常成功,但 C++ 代码非常糟糕(谁知道还有什么)。

于 2008-11-19T20:23:16.340 回答