Remote procedure call in C# - c#

I am basically new to this kind of work.I am programming my application in C# in VS2010.I have a crystal report that is working fine and it basically gets populated with some xml data. That XMl data is coming from other application that is written in Python on another machine.
That Python script generates some data and that data is put on the memory stream. I basically have to read that memory stream and write my xml which is used to populate my crystal report. So my supervisor wants me to use remote procedure call.
I have never done any remote procedure calling. But as I have researched and understood. I majorly have to develop a web or WCF service I guess. I don't know how should I do it. We are planning to use the http protocol.
So, this is how it is supposed to work. I give them the url of my service and they would call that service and my service should try to read the data they put on the memory stream. After reading the data I should use part of the data to write my xml and this xml is used to populate my crystal report.
The other part of the data ( other than the data used to write the xml) should be sent to a database on the SQl server. This is my complete problem definition. I need ideas and links that will help me in solving this problem.

As John wrote, you're quite late if it's urgent and your description is quite vague. There are 1001 RPC techniques and the choice depends on details. But taking into account that you seem just to exchange some xml data, you probably don't need a full RPC implementation. You can write a HTTP server in python with just a few lines of code. If it needs to be a bit more stable and log running, have a look at twisted. Then just use pure html and the WebClient class. Not a perfect solution, but worked out quite well for me more than once. And you said it's urgent! ;-)

Related

Retrieve data from API of different source systems using C#

I am here for your help. First time handling a task about the API, SAP/SOAP, Web services. Sorry, as this is a long post. Let me explain the workflow.
XYZ Server calls the API Application (which I need to develop) to obtain the UserIDs.
These UserIDs will be used to retrieve the data from API of 3 different source systems (ABC, PGS, KGT). ABC and PGS are using RestAPI while the KGT is using SOAP.
The retrieved data will be stored in the In-Memory.
The API Application will insert all the APIs in the In-Memory to the XYZ server.
Here's my question:
Is it possible to use only the VS Code for the development?
There's no database provided. How am I able to store the retrieved data into the memory?
Based on the workflow, is it possible to develop the API application in just a week? Given that I am only a newbie?
I just need your ideas on how I am going to start the development. Currently, I already have a method to get the user ID and to insert the data back into the XYZ server.
Note: The API Application is a non-UI. It serves or acts as a middleman, to transfer data from other systems to XYZ system.
Appreciate your response.
I don't know if it helps but I will try to help you.
First, I think it i totally possible to only use VS Code as you are just coding an API.
Second, have you though about having an in-memory database like Redis?
Third, I think it depends. It is possible to do that in a week at least for more experienced people, but as a "newbie" as you said, I think maybe some more time might be needed.
Hope it helps ^^

Use API to populate SQL Server DB

I am relatively new to this so if this is a dumb question please just link me to some relevant information.
We work with a third party vendor that recently opened up their databases using an API. Information on it can be found here: https://www.entrata.com/api-documentation. It returns the data in either an XML or JSON format as per usual.
We would like to use this API to copy relevant data onto our own SQL server so we can preform our own reporting (their provided reports aren't quite up to snuff with what we are looking for). We want this to be done regularly so I am really looking for a repeatable process. I have been searching around and I believe I am going to have to build a .NET application that GETs the data then parses it into a SQL friendly format for BULK INSERT, but I'm not sure if this is indeed the case or where to really start if it is.
Any information you can provide or even a point in the right direction would be greatly appreciated. Thank you for your time and effort.
P.S. At the moment I do not have access to our SQL server. I have been trying to get a logon from our IT department for the last week but they seem to be dragging their feet.
Use SQL Server Integration Services (SSIS) to develop a package that imports the data. https://msdn.microsoft.com/en-us/library/ms169917.aspx

Storing and Reporting on data retrieved from an API

I have a very high-level, generic question related to the retrieval of data with an API, the storage of that data, and the ability to report off of the data. My background is primarily on the database side with a specific focus on reporting out of Crystal. That being said, I'm fairly green when it comes to APIs, SDKs, .NET, and Visual Studio, so feel free to respond as if I'm 5.
I've attached a quick mock-up of the application architecture for context. The vendor we're working with touts their APIs as the best way to retrieve data for reporting purposes, but I'm struggling with visualizing the layer between raw API data retrieval and a reporting environment. Having not worked with API data retrieval in the past, can someone explain to me in layman's terms how this process would work?
1.) How would I go about retrieving data from the app server via the vendor's API? Is it as simple as creating a visual studio project and coding the API call?
2.) Let's say I'm able to retrieve the data with an API call, what is the best method for storing / reporting against that data? Is it possible to develop real-time reports out of visual studio with API call data?
3.) If #2 is not possible, the data pulled from the API calls will have to be stored somewhere. Is it possible to code the API calls to write results directly to a separate reporting datamart?
Again, I apologize if these questions are extremely elementary. I'm basically looking for context around the scenario to identify how close or rather far off I am in my understanding.
Any help is appreciated.
Thanks!
i´m going to try to answer each question as high level as possible:
1) Retrieving the data via the API is fairly simple, you need to code the call with a proper requerst and handle the response, for example if your API is exposed with a REST web service all you need to do is make an http call to the ws endpoint according to the service definition.
2) You said that the report requirement is probably a SSRS report. The way to proceed depends on how you want to handle this data. One approach culd be to store it in a database and then create a report server project that generates reports with this data.
3) Yes, according to the data format you can do whatever you want with it, from exporting a csv file to store it inside a dedicated database.
I hope this was useful in some way, as i´m not super experienced in report generation but have worked with different APIs handling data

C# MYSQL Connection

Briefly, I want to connect remote MYSQL firewalled database to my C# program
I tried lots of scripts, also I made my script but it was too difficult to be true made a whole web service based DMS
SSH is NOT available by the way
The process is few words
C# <-> HTTP <-> PHP <-> MYSQL
this is the way I wish it !
The Question is :
Can you please point me to a good PHP web-service that can be invoked by a SQL HTML line of code and return me results ?
in advance . please don't say SQLYOG ( as I can't invoke php functions from c# :S )
Thanks =)
I'm not sure such a thing would exist, you may need to write your own web service in PHP to perform the specific queries needed by your C# application.
If someone sniffed your application's HTTP connections, they could easily figure out how to call your service and send any SQL queries they wanted to your database. Then they would be able to select any records, insert, or even delete unless there were extremely complex rules to prevent certain types of queries from going through.
After a month searching this problem, I foung the Answer

Read XML, or JSON file instead of SQL Server

I have asp.net 3.5 C# and a SQL Server 2008 back end.
There is a table that I use the most, this table has around 100 rows and doesn't change often. My code (web service with a cache) is called from JQuery to search a record by ID and return a JSON response to client side.
Recently the server that hosts my site had a big problem and had to migrate to a new server and my site was down for 3 days. I started thinking, to save my data to a XML, or Json file and do not touch the database anymore.
I need your input. I know how to work with the XML file (I will use the LINQ), but don’t know how to read a JSON file from the client side with JQUERY. Maybe I should read it on server side as StreamReader?
Which method do you like better (XML, or JSON). Any help would be greatly appreciated.
You can actually call an AJAX query right to a JSON file and it'll work from jQuery. This is known as a RESTfull api.
For instance:
http://www.myserver.com/api/customers/12
Could be a file 12 in the foler api/customers or it could be a script returning a json response. The idea is that the url represents the resource you're looking for.
However I highly suggest you don't go this approach, even if you load down the 100 rows and search for it in javascript it's a bad idea, as it'll put load on the client and defeats the purpose of AJAX (To only retrieve relevant information).
If you're determined to do away with your database I would suggest using an xml file, as you keep the processing on the server-side and and ensure it's behaviour. Any code that runs on the client is subject to:
Tampering
Version Issues
Taint from plugins
It's also harder to debug.
I suggest exposing a method on your webservice that looks up the row by ID, and then uses a simple LINQ to XML query to retrieve the data you want.
ID search should be very simple, and you could even cache the results if you're getting hit hard (to reduce disk reads & xml parses), but that may be overkill :)

Categories