Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.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
在.NET中设计计费/发票软件的最佳实践_.net_Financial - Fatal编程技术网

在.NET中设计计费/发票软件的最佳实践

在.NET中设计计费/发票软件的最佳实践,.net,financial,.net,Financial,我目前正在从事一个项目,我必须为我们公司的新项目设计/实施计费/开票系统。我们将每月生成一次pdf文件形式的发票,并将该文件的链接发送给客户 正在使用的框架将是.Net 3.5/C。由于我没有从零开始做这方面的很多经验,我想知道是否有一些最佳的实践从软件的角度来看,我应该考虑做这是特定于这种类型的应用程序? 我意识到这个问题可能是相当主观的,但我正在寻找一些指导原则,要记住这一点——特别是那些通常会被忽略或不明显的指导原则。考虑使用SSR或其他一些报告包来创建PDF并将其发送给您的客户 您是在实

我目前正在从事一个项目,我必须为我们公司的新项目设计/实施计费/开票系统。我们将每月生成一次pdf文件形式的发票,并将该文件的链接发送给客户

正在使用的框架将是.Net 3.5/C。由于我没有从零开始做这方面的很多经验,我想知道是否有一些最佳的实践从软件的角度来看,我应该考虑做这是特定于这种类型的应用程序?
我意识到这个问题可能是相当主观的,但我正在寻找一些指导原则,要记住这一点——特别是那些通常会被忽略或不明显的指导原则。

考虑使用SSR或其他一些报告包来创建PDF并将其发送给您的客户

您是在实施账单/发票系统,还是只是创建pdf并发送链接的部分?如果是前者,则必须提供实际需求才能获得指导。如果是后者,像SSR这样的东西可以很好地工作。

确保它的安全!确保您的用户可以通过受密码保护的HTTPS连接获取信息!让用户选择自己的密码。而且要小心,因为账单/发票信息被认为是非常敏感的,因此要做好准备,有人会试图入侵这个系统。会有人试图滥用这个发票系统,所以有一件事很重要:安全

一些公司在仅仅因为黑客获得了对他们系统的访问权而不得不支付损害赔偿金之后,就彻底破产了


从编写多层设计开始,它应该涉及多个物理服务器。一个带有客户发票/账单数据的数据库服务器。一个中间层业务服务器,用于存储您的业务逻辑。还有一个web服务器,它只能与业务层通信,而不能与后台的数据库通信!如果可能,请将数据库保留在不同的网络中。最好是一个没有通往外部世界的网关的网络。

与您的会计软件接口,让它完成大部分(如果不是全部)工作。在两个项目中,我们已经完成了计费和开票,一个成功的项目已经投入了开发人员数年的工作;另一个工作正常,但这是一个维护噩梦


如果您仍然选择在内部完成这一切,那么单元测试(尤其是回归测试)是关键。您必须确保任何修复不会破坏任何其他内容。有了这些测试,拥有一个非常大的测试库是明智的

除非你有一家非常小的公司或一家非常独特/利基的企业,否则考虑购买第三方账单/发票系统,然后根据需要对其进行定制,可能不会那么痛苦


从长远来看,商业产品的拥有成本可能会更低,而且他们已经考虑了所有的安全问题,并进行了大量的数值测试,这可以在出错时节省大量资金。另一个额外的好处是行业标准接口,可以将您的账单/发票系统与您的会计系统、CRM等连接起来。如果您自己编写,您必须自己解决所有这些问题。

不要发送0.00美元的发票。我讨厌那样

是前者。给我的实际需求和我写的差不多,所以我在这篇文章中比我喜欢的更加盲目——不过我正在努力获得更好的需求——一旦我得到了它们,我会根据需要更新我的问题。谢谢在这一点上,我更担心获得准确的需求,而不是具体的实现问题。一旦您有了一个需求的起始列表,您就可以评估工作范围,并决定购买COTS产品是否更划算。尝试发现角色(例如AccountsReceivable、Customer、SysAdmin)以及您需要支持的用途。并尝试明确区分功能性需求(例如,客户查看账单)和非功能性需求(例如,应用程序是在.NET 3.5上编写的)。