Closed. This question is off-topic. It is not currently accepting answers.
Want to improve this question? Update the question so it's on-topic for Stack Overflow.
Closed 10 years ago.
Improve this question
I am designing a system that will be running online under Microsoft Windows Azure. One component is a REST based web service which will really be a wrapper (using proxy pattern) which calls the REST web services of a business partner, which has to do with BLOB storage (note: we are not using azure storage). The majority of the functionality will be taking a request, calling our partner web service, receiving the request and then passing that back to the client.
There are a number of reasons for doing this, but one of the big ones is that we are going to support three clients: our desktop application (win and mac), mobile apps (iOS), and a web front end. Having a single API which we then send to our partner protects us if that partner ever changes.
I want our service to support both JSON and XML for the data transfer format, JSON for web and probably XML for the desktop and mobile (we already have an XML parser in those products). Our partner also supports both of these formats.
I was planning on using ASP.NET MVC 4 with the Web API. As I design this, the thing that concerns me is the static type checking of C#. What if the partner adds or removes elements from the data? We can probably defensively code for that, but I still feel some concern. Also, we have to do a fair amount of tedious coding, to setup our API and then to turn around and call our partner’s API. There probably is not much choice on it though. But, in the back of my mind I wonder if maybe a more dynamic language would be a better choice.
I want to reach out and see if anybody has had to do this before, what technology solutions they have used to (I am not attached to this one, these days Azure can host other technologies), and if anybody who has done something like this can point out any issues that came up. Thanks!
Researching the issue seems to only find solutions which focus on connecting a SOAP web service over a proxy server, and not what I am referring to here.
Related
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 4 years ago.
Improve this question
Is there a good comparison of GraphQL & OData in terms of performance, developers usability, community, etc.. All articles that I find in the Internet are very bias.
What would be the best way to return a big bulky JSON or binary data?
I have researched and also tried with Both GraphQL in Dot Net and Odata in DotNet Web API to create a working demo and What I found are
Developer Usability Considering you have existing WebAPI(DotNet Framework) and want to migrate to GraphQL or OData compatible WebAPI then my answer is to choose OData because of its easy integration and Out of the Box Filter, OrderBy, Select, Expand, etc feature (Refer MSFT On DotNet OData). If you choose GraphQL then you have to do a lot of work like Create Type, Schema and Query and Implement Resolver for each query.
Performance depends on your query logic. GraphQL and Odata Both have the capability to get what you request using $select in OData and in GraphQL you can request by their Query convention.
API Development From Scratch, If you want only single endpoint for all API request and don't want to maintain versioning endpoint, Autosuggest field name and type of schema then GraphQL is the best option. But Availability of GraphQL Library for Each framework and Community varies for Technology stack(e.g. nodejs, C#, Ruby, Java etc)
Yes, I have reviewed and read article by Telerik which have described in detail.
Comparision PDF For GraphQL and Odata
I am attaching side by side comparison image only you can dig out detail in Reference link GraphQL vs OData.
Standard API
Here, No in API Versioning/ maintenance is positive meaning single endpoint and get rid of two versioned API
Query Capability
Surface Capability
Mainly OData service is used when you want to provide access to your database with minimal effort for CRUD Operation.
However if you aware about Sharepoint REST API and Office 365 REST API It is based on OData and provides a wide range of API. Now Microsoft is building universal API which is called Graph API or Microsoft Graph which by default enabled for CORS request and unified endpoints to Request from Office 365, dynamics 365, Outlook Exchange API, Onedrive API etc. Which are also supports OData.
It also does not seem like a good idea to use the POST method to request data. And apparently the amount of data needed to make a request to the server is much greater. According to examples from the Sumit Sarkar article:
The amount of data trafficked to make a request is much greater in GraphQL than in OData. Although, the result (response) is the same.
Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 6 years ago.
Improve this question
I plan to build a back end based on microservices. The following picture presents my current idea:
Two important features are:
uploading large text and/or video files
stream video - display user in web app and native mobile applications
The tech-stack is not finally set, but initially I think about:
web app - ReactJs / Angular
backend apps - Ruby on Rails
I have following doubts for my current concept:
Should API Gateway work as a router, which redirects requests from users to specific microservices? Or... should it be a dedicated App (eg. Ruby on Rails App) with API?
How to make Authorization? Should I use separate microservice for this? Let's say that user uploads file and his request should go to third microservice: "Big Data Upload". Where and when I should authorize his access? In that microservice or earlier in API Gateway? Or maybe authentication should be also done in "Authentication microservice"?
Uploading large files - let's say that user want to transfer a large file (video or compressed text file with raw data) from mobile app to backend via HTTP. His request goes to API Gateway and then it is redirected to "Big Data Upload" microservice. App saves the file to the Object Storage. Is is right path for uploading files? Or I could make some shortcuts to make the file's route shorter?
Video stream - when user upload video file, I would like to place it into Assets (Object Storage - eg. Amazon S3). Is it enough to present this video to users in web app or mobile app? (Beside the transcoder service and CDN)
Load Balancing - Is it a reasonable to use load balancing to control flow to instances of microservices (on the picture between API Gateway and green microservices)? Or it's not a good approach because we can lost some information about request/recipient/user or even API Gateway would be more significant "bottleneck"?
Does this concept of architecture have the good potential for easy scalability, in yours opinion? Of course, an omitting a hardware and software configuration.
I've used React Native for about 2 months now and I've learned a lot already. Now I wanna know how to connect my app to a SQL database. I want to be able to log in, register and chat. I've already built the log in, register and chat screen but I just need one function that can communicate online with a database, I guess. This must be possible... If so, how? A quick answer would be highly appreciated!
Update: This question was asked simply because I didn't recognize some programming terms back then... If you are asking yourself the same thing, search for "RESTful API" and then your desired programming language.
Update
This question was initially asked bescause of my lack of knowledge with backend and general APIs (Look at the title, it's obvious). After one year plus (now), I'm selling my own services and products to other corporations, professionally.
What you're wanting is a web api. Essentially, you will build a web application that you can access over http. You will most likely want to use RESTful web calls. Your web application will then take those REST requests, access your database, operate on your data and return a data response (JSON or XML). Then your iOS app would receive that JSON response and do whatever it needs to with it.
You can build a REST API out of pretty much any server side language, so pick one you like or feel comfortable with and start there.
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 4 years ago.
Improve this question
I am starting to migrate a couple of applications to Azure. Seems very straightforward and all I have to do is add an addiitonal Azure project to my solution and point it at my web project.
However what concerns me is that the team starts contaminating my applications with Azure specific functionality and relying on it. For example File uploads would be to Azure storage, azure caching etc. All well and good if we stay Azure and all clients are happy to use Azure. If we find a client isn't happy with Azure I'd like not be into a lot of work removing Azure functionality.
Just wondering if anyone had experience similar issues. I guess ideally I'd like to be able to have the project right publish to Azure and it uses Azure features, Azure Code etc and a second publish that just allows me to use IIS with non Azure features.
I assume I just need to be careful use interfaces correctly and DI etc. FileUpload vs AzureFileUpload. What about issues like resources coming from Azure storage for CSS/scripts etc rather than local? Should I look at using Azure Cloud Drive to simulate just standard NTFS environment
Is there any advice/patterns/practices? Has anyone experiences with similar? How about separating projects up and project structure etc? I guess a lot of is it just standard design. Just wondering how other people were approaching avoiding lock in with Azure.
There's a couple things you can do if you're concerned:
Stick to the core technologies like asp.net, ado.net, sql which also exist outside of Azure.
Abstract away code which uses Azure specific services.
For the first one, simply scan your code to ensure the runtime services don't include Azure namespaces.
But, to be a cloud like service and get it's benefit, you should look into adopting azure services.
For the second, you can create a cloud services layer abstracted away by an interface. Only that layer communicates with azure specific services. If you need to work outside of azure, you just need a plug-in for that layer.
If you want the app to be able to run on IIS or Azure, and those are your only 2 targets, my only advice is don't overdo the abstracting / interfaces. There are some differences that can be handled in web.config and WebRole.OnStart(), such as using cache as a session provider or logging diagnostics to table storage.
Some things it will help to create interfaces for, and then inject those interfaces in the config depending on your deploy target (web config transform is what we use). For example in IIS you might want to send an email in a separate thread, whereas in Azure you might use a worker role and a queue. You can set up a web.config transform with 1 implementation of ISendEmails for IIS, and different one for Azure.
Another thing you could do, depending on how much file data you have, is store files as blob columns in the db. I'm sure someone will tell me this isn't good for performance, and can get expensive with GB of file data in sql sever, and they have a point. It may be worth considering though if having IIS/Azure flexibility is of high concern.
I would design a cloud interface (as an abstraction of an actual cloud/network) that your applications can use, together with an Azure implementation of that interface.
Then later, when needed, you can make other cloud implementations that your apps can use using the same interface.
When designing the interface, the challenge is to include only generic methods that are relevant on every kind of cloud/network. So this will prevent using any Azure specific features directly by your applications, but that is exactly the purpose.
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 6 years ago.
Improve this question
I'm looking for hosting for an ASP.NET MVC 1.0 app. I've narrowed down with research to either asphostportal, asphostcentral, godaddy, or 1&1. I've ruled out crystaltech and softsyshosting due to price with better plans.
Will be running a small e-commerce site written with ASP.NET MVC 1.0 and want to be sure it will work, as well as looking for cheapest price with best value in regards to disk space/bandwidth. And bandwidth is basically how much data can be sent from your site per month right? Any opinions appreciated as I'm finding this tough to narrow down. I know you can bin deploy MVC but heard full trust mode is required as well as some routing rules in IIS. 1&1 says they can't enable full trust.
This is what I was looking at:
name data(disk space/bandwidth) price MVCenabled
crystal tech 500MB/50GB 7.95 + 7.95 setup
2000MB/200GB 16.95
softsyshosting 500MB/5GB 3.50 + 12/year domain
1000MB/10GB 5.84
3000MB/30GB 13.33
asphostportal 5GB/50GB 5.75 + 8.99/year yes
10GB/100GB 10.25
asphostcentral 2GB/15GB 4.99 yes
3GB/30GB 7.99/month domain free
5GB/40GB 11.99
godaddy 10GB/300GB 10.69 + 4.74/month
150GB/1500GB 6.99/month
1&1 10GB/unlimited 3.99 + free domain
150GB/unlimited 6.99
1&1 seems to be best value if MVC app will work. I'm a bit confused on bandwidth being unlimited. May seem like a good thing, but what if one website on the server is a resource hog because of this?
I assume you are looking for "Shared Hosting"? If so, I can tell you from experience that running a web site from shared hosting can become a nightmare because you only have so much control over the setup.
I went with a Virtual Private Server (VPS), which gives you complete control over a virtual server... (remote desktop, admin rights, etc). I ended up going with 1&1 for a Windows VPS that runs about $30 a month, and I have been very happy with it (I have multiple MVC sites running on it).
If this is going to be a serious web site, I would consider a VPS over shared hosting. Hope this helps!
Bin deploying the ASP.NET MVC does not require full trust. My host (LiquidSix) runs its shared hosting options with a Medium trust setup, and I've bin deployed the both System.Web.Mvc.dll and Microsoft.Web.Mvc.dll to the site with no major issues.
Also, ASP.NET MVC runs in Medium Trust, so it should work with most hosting providers’ Medium Trust policies. It’s always possible that a hosting provider customizes their Medium Trust policy to be draconian.
The only downside with them at the moment is they are still running on IIS6, and I've not asked them/tried to set up a wild card mapping to the ASP.NET handler - so my site requires the standard work around of controllers having a .aspx extension.
One nice benefit of using the .aspx extension instead of .mvc is that you don’t have to worry about mapping the .aspx extension. It should already be mapped assuming you have ASP.NET installed properly on the machine.
Ended up going with GoDaddy for now. Got a good deal. $1.99 domain with deluxe package. Went with deluxe as found 20% off promo code with a google search. Paid $65 total. Will be able to jump to a dedicated server for a reasonable price as well if needed.
Thanks
Do not use asphostportal. They've been spamming the StackExchange network like crazy. Just do a google search for "asphostportal stackexchange" and you'll see tons of posts by users who link to their site in every answer (even when it's completely irrelevant and the question poster isn't asking for web hosting recommendations).
I'd be weary of doing business with any company that advertises their services by spamming online communities, regardless of how good their prices are. It's just unprofessional and not to mention scummy.