Web服务客户端体系结构 - c#

时间:2011-07-18 10:17:56

标签: c# visual-studio web-services cloud

早上好,

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

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

该解决方案将是一个C#控制台应用程序。我为此制作了一个规范,它在下面:

  

1。)在.NET中创建一个具有以下功能的控制台应用程序   功能:

     

2。)使用包含已处理数据或ODBC的CSV文件   连接到暂存SQL数据库并直接读取记录   装载表

     

3。)对Zuora Webservice(异步)进行以下调用·
   SubscribeWithExisitingAccount()·创建()·
  登录()·订阅()·更新()·删除()

     

(*)标记为此的呼叫可能是可以避免的,

     

*可以创建订阅,帐户和联系人   单个电话(订阅())

     

* Create()可能是一个例外,因为我们需要的场景可能会发生   创建没有相应订阅的对象实例。

     

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

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

将具有与目标

相同的列名

我缺乏知识的地方是遵循设计,这将使这个应用程序有意义和有效地工作。我不是在寻找有人为我这样做,我正在寻找的是关于如何改进我已做的​​事情的提示

目前,由于对此类工作缺乏远见,我只是在有机地构建解决方案,所以我也对开发后可以做的事情感兴趣。

欢迎所有的建议和批评。

提前致谢,

马特

2 个答案:

答案 0 :(得分:2)

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

  

2。)使用包含已处理数据或ODBC连接的CSV文件   暂存SQL数据库并直接从加载表中读取记录

您要在此处做的只是构建一次使用此数据执行某些操作的逻辑。实现这一目标的最直接方法是让您的逻辑期望以特定格式存储数据(可能是包含已解析数据的业务类以及您的逻辑可用)。

所以你要做的就是获取输入数据(CSV / SQL Table / Whatever)并首先将其解析为内部业务类。然后,您将解析后的数据提供给您的逻辑,该逻辑可以执行您的应用程序对其执这里的优点是你可以改变逻辑一次,它将适用于两种数据类型,并且如果有人稍后出现并说“现在我们需要它来读取这个Excel文件”,你所要做的就是添加另一个解析器将Excel数据转换为内部格式。不需要修改逻辑。

  

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

     

映射将以1对1的方式完成,其中输入文件

     

将具有与目标

相同的列名

与上述相同。不要假设您将永远导出到CSV,创建一个简单的“ReportError”类或其他一些类,它会保留错误详细信息并在进行处理时将其粘贴到List中。在输出错误时,您可以将其转换为CSV。因此,如果此要求发生变化,而您向Web服务报告错误,则只需更改代码的一小部分(而且这些都不是您的处理逻辑)。

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

  

3.。)对Zuora Webservice进行以下调用(异步)·   SubscribeWithExisitingAccount()·Create()·登录()·订阅()·   更新()·删除()

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

异步并不是非常困难,但更重要的是管理同步调用。对于那些没有技术经验的人来说,我不确定你能从中获得什么好处来衡量它对你所需的额外努力。

答案 1 :(得分:0)

我建议你读一本关于webservices的书(this is a good one)。他们不是你可以从玩游戏中获取的东西,如果你不知道你在做什么,可能会非常沮丧。

至于开发,我建议你先将它原型化。锤击一些混乱的东西但让你知道如何做事。然后,您可以将其用作实际构建应用程序的参考。

相关问题