Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • Home
  • SEARCH
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 6144767
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 23, 20262026-05-23T18:41:58+00:00 2026-05-23T18:41:58+00:00

Morning all, I have been tasked with developing a client tool for a cloud

  • 0

Morning all,

I have been tasked with developing a client tool for a cloud web service API (A simple WSDL). I am not a seasoned or even qualified developer, I have an intermediate knowledge of C# and enough I believe to make this work, but I don’t want a solution that just works, I want to build something clean and well coded which another dev can read and understand and which is intuitive.

You may want to stop me there and say “That is something you can only learn through experience.” if that is the case then I can accept that and move on, but if you do have some advice the rest of the details are below.

The solution will be a C# Console application. I have produced a spec for this, it is below:

1.) Create a console application in .NET which has the following
capabilities:

2.) Consume CSV file containing Processed Data OR ODBC
Connection to staging SQL database and read records directly out of
load table

3.) Make the following calls to Zuora Webservice (Asynchronous) ·
SubscribeWithExisitingAccount() · Create() ·
Login() · Subscribe() · Update() · Delete()

(*) Calls marked with this are possibly avoidable,

*it is possible to create a subscription, account and contact with a
single call (Subscribe())

*Create() may be the exception as a scenario may occur where we need
to create an instance of an object with no corresponding subscription.

4.) Report back the success and errors of every record into a CSV
file.

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

will have the same column names as the target

Where I lack knowledge is following a design which will make this app make sense and work efficiently. I am not looking for someone to do this for me, what I am looking for is tips on how I can improve on what I am already doing

Currently I am just organically building the solution due to a lack of foresight on jobs like this, so I am also interested in things I can do post development.

ALL Advice and criticism is welcomed.

Thanks in advance,

Matt

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-23T18:41:58+00:00Added an answer on May 23, 2026 at 6:41 pm

    Design principles are a big subject, and how to apply them correctly is only something that comes with experience. There’s a lot more of them out there then you’d ever use in a given project, and in some cases using them correctly means not using them at all (or only choosing specific ones that suit the project). The first step is wanting to write good code though, so you’re starting in the right place. 🙂 A couple of things did stand out to me:

    2.) Consume CSV file containing Processed Data OR ODBC Connection to
    staging SQL database and read records directly out of load table

    What you’re going to want to do here is only build the logic that does something with this data once. The most direct way to achieve that is to have your logic expect the data in a certain format (probably business classes that hold the parsed data and that your logic an use).

    So what you’ll do is take the input data (CSV/SQL Table/Whatever) and first parse it into your internal business classes. Then you feed the parsed data to your logic that does whatever your app does with it. The advantage here is that you can change the logic once and it will work with both data types, AND if someone comes along later and says “now we need it to read this Excel file” all you’ll have to do is add another parser to get the Excel data into your internal format. No changes to the logic will be required.

    4.) Report back the success and errors of every record into a CSV
    file.

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

    will have the same column names as the target

    Same as above. Don’t assume that you’ll be exporting to CSV forever, make a simple “ReportError” class or some such that holds error details and stick it into a List while doing your processing. At the end when it’s time to output your errors, you can convert that into a CSV. So if this requirement changes and you instead report errors to a web service, you only have to change a small part of the code (and none of it is your processing logic).

    There’s a theme here. 🙂 Try to encapsulate logical bits so that if something changes it’s easy to find where that something is in code. If you can learn to do that, you’ll wind up with maintainable code even if you don’t follow any other process or pattern (particularly since as one person you won’t be making huge projects).

    3.) Make the following calls to Zuora Webservice (Asynchronous) ·
    SubscribeWithExisitingAccount() · Create() · Login() · Subscribe() ·
    Update() · Delete()

    As a console app, I’m going to question if you actually need these to be asynchronous or not. What do you hope to gain from an async call to Login()? Can your program do anything while waiting for Login() to return?

    It’s not that async is terribly difficult, but it IS more to manage then synchronous calls. For a console app from someone whose not that experienced in the technology yet, I’m not sure what benefit you’re gaining to weigh against the extra effort it requires of you.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

Morning All, I have been writing an ever so simple IRC client in visual
Good Morning All! I have been developing a project for some time in which
Quick question. I have been Googling this all morning, but it's either not there,
Morning all, I have a php script which I have been testing, and seems
I have been scratching my head all morning behind this but still haven't been
Morning All, Previously I have been using $(#WebPartWPQ2 .ms-formtable tr:contains('lblName')> td).toggleClass('changedetails'); to customise a
so I have been researching this all morning- and I'm pretty sure the code
I have been stuck with this issue now all morning. I actually saw this
I have been bashing my head against a wall all morning trying to figure
I've been researching this all morning and have decided that as a last-ditch effort,

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.