2011-07-18 66 views
1

早上所有,Web服务客户端体系结构 - c#

我一直负责为云Web服务API(简单的WSDL)开发客户端工具。我不是一个经验丰富的或者甚至是合格的开发人员,我拥有C#的中间知识并且足够我相信能够完成这项工作,但是我不想要一个可行的解决方案,我想要构建一个干净且编码良好的另一个开发人员可以阅读和理解,哪些是直观的。

你可能想阻止我,说:“这是你只能通过经验学习的东西。”如果是这种情况,那么我可以接受并继续前进,但如果你有一些建议,其余的细节如下。

该解决方案将是一个C#控制台应用程序。我已经为这个规范,这是下面:

1.)创建在.NET,其具有以下功能 控制台应用程序:

2.)消费含有处理过的数据或ODBC CSV文件 连接到分段SQL数据库和直接读出 负载表

3)进行以下调用web服务Zuora的(异步)·
SubscribeWithExisitingAccount()记录· 的Create()·
登录()·订阅()·更新()·删除()

(*)调用标有此是可能避免的,

*就可以创建预订(订阅())

* Create()可能是一个例外情况,因为在我们需要 创建没有相应订阅的对象的实例时,可能会出现这种情况。

4.)将每个记录的成功和错误报告为CSV 文件。凡我所缺乏的知识之后的设计,这将使得这个应用程序是有意义的和有效的工作

Mappings will be done on a 1 to 1 basis, where the input file 

将有相同的列名的目标

。我不想找人为我做这件事,我正在寻找的是如何改进我已经在做的事情的提示

目前我只是有机构建解决方案,因为缺乏对工作的远见像这样,所以我也对我可以做后期开发的事情感兴趣。

欢迎提供建议和批评。

由于提前,

马特

+0

我的代码正在工作,但已进化的设计意味着它是一个笨重的解决方案,我没有遵循任何设计原则,我在寻找一般的设计建议,当建立这样的解决方案 – Yoda

回答

2

设计原则是一个很大的课题,如何正确地应用它们只是带有经验的东西。有更多的人在那里,那么你曾经在一个给定的项目中使用,在某些情况下正确使用它们意味着完全不使用它们(或只选择适合该项目的特定项目)。第一步就是想编写好的代码,所以你开始在正确的地方。 :)有几样事情都站出来对我说:

2)消费CSV文件,其中包含处理数据或ODBC连接到 分期SQL数据库和读取记录直接出负载表

什么你打算在这里做的只是建立一个逻辑来处理这些数据一次。实现这一目标的最直接方式是让您的逻辑以某种格式期待数据(可能包含解析数据的业务类以及您的逻辑使用)。

所以你要做的就是把输入数据(CSV/SQL表/任何),并首先解析它到你的内部业务类。然后,将解析后的数据提供给您的逻辑,无论您的应用如何使用它。这样做的好处是你可以改变逻辑一次,它可以同时处理两种数据类型,如果稍后有人出现并说“现在我们需要它来读取这个Excel文件”,你只需要添加另一个解析器将Excel数据转换为您的内部格式。不需要改变逻辑。

4.)将每个记录的成功和错误报告为CSV 文件。

映象将在1比1的基础上,在输入文件

将具有相同的列名的目标

同上来完成。不要以为你会永远导出为CSV,制作一个简单的“ReportError”类或一些可以保存错误细节的类,并在进行处理时将其粘贴到列表中。最后,当您输出错误时,您可以将其转换为CSV格式。因此,如果此需求发生变化,而您将错误报告给Web服务,则只需更改一小部分代码(而不是您的处理逻辑)。

这里有一个主题。 :)尝试封装逻辑位,以便在发生更改时很容易找到代码中的内容。如果你可以学会这样做,即使你没有遵循任何其他流程或模式(特别是因为你不会做大型项目),你会得到可维护的代码。

3)制作)以下调用web服务Zuora的(异步)· SubscribeWithExisitingAccount(·创建()·登录()·订阅()· 更新()·删除()

作为一个控制台应用程序,我会质疑你是否真的需要这些应用程序是异步的。你希望从Login()的异步调用中获得什么?您的程序可以在等待Login()返回时执行任何操作吗?

这不是异步非常困难,但它更多的是管理同步调用。对于那些不熟悉该技术的人开发的控制台应用程序,我不确定您将获得哪些好处来抵消它对您所需的额外工作量。

+0

这绝对是我一直在寻找,一些常识可以回答我的规范和合理的一般建议。 – Yoda

+0

感谢您抽出宝贵时间写下所有内容。 马特 – Yoda

0

我会建议你读一本书,web服务(this is a good one)他们arent真正的东西你可以从播放约拿起并可以相当frustraiting如果你不知道你在做什么。

至于发展,我建议你先把它原型化。捣乱一些乱七八糟的东西,但让你知道如何做事。然后,您可以使用它作为您实际构建应用程序时的参考。