As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
We have had in Domino for some time Web Services.
Now, after the release 8.5.3 one can install and deploy REST Services (http://extlib.openntf.org).
From my understanding the REST way is clearer and just feel right.
However, the Web Services are still for some reason here.
Now, as it looks like i'll have to dive deeper into this topic, i'd like to set the question:
Does it have any reason to study and try to implement the Web Services or i'd rather start right away with the newest libraries?
(http://www.openntf.org/blogs/openntf.nsf/d6plinks/NHEF-8J994J )
Update.
Discovered the following Link/Duscussion SOAP or REST for Web Services?
Though it's not Domino specific, but has a lot of good info. Now only some Domino-specific experience fails, which i'd be glad to see here...
SOAP beats REST by a large margin when it comes to system to system communication. Providing just one end point (the wsdl file) a reliable and verifiable grammar can be established: what can you do, what data is needed, what to expect in return. (Not sure if the latest we service spec extended the reliability to REST). REST based services on the other hand work by (manual) convention. You need to know the URL syntax, not just the location of the wsdl file and there is no relation to a schema other than doing a get and hoping the returned XML has one.
When it comes to browser system communication the picture is different. Here the lean operation of REST specifically when the payload is JSON beats the robust definition of SOAP any time. Just keep in mind you need to bar in for syntax and format. If you are on both ends - that's easy to bargin then.
In conclusion: both REST and SOAP (actually both are called web services in the definition, it is only 'colloquial' to refer to SOAP when saying 'web service') have their 'sweet spot' use cases.
It depends on your application needs. Your Domino app might have the need to consume Web-services, or a 3rd party/another app might accept communication only using Web-services. Regarding studying, it never did any harm to someone, and for sure you will find use of Web Services knowledge outside of Domino :-)
Related
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
Our company is studying the adoption of a new SaaS, but we'll have to integrate some resources into ou current application.
Talking to the SaaS company development support team they told us that the there is a webservice (SOAP) available but it is a 'passive web service', and that the connection to the software needs to be initiated to send or recieve datas.
We have a very short time to take a decision, and the support team is not available on weekends, so I came here to stackoverflow... and would like to know more about it, because I googled and coudn't find anything about the subject
All web services are based on HTTP, which is a request/response protocol as written today. If the SaaS consultant means that there's no push capability built into it, then s/he's correct.
A web service can certainly send data in response to a request, so that's not a problem. It can receive any data you send to it, provided that you conform to the contract that the web service will publish. But in both cases the conversation is initiated by a client that makes an HTTP connection to the web service.
The SaaS consultant is creating mystery where there shouldn't be any. I think s/he smells cash, and you're going to be the source who will provide it.
It could also be that the consultant is being perfectly straightforward, but this is your first attempt to think about web services or service oriented architecture and you haven't the foggiest idea of what it's about.
You don't give any information on what you have to decide on or why that answer is unacceptable. There's not a single use case or requirement to help someone here understand what your needs are. I hope your understanding of the problem and requirements statements are better than this question. If not, no wonder you're having issues. Voting to close.
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 11 years ago.
I am working on building a web-application using Django.
Since I'm new to working on web-apps for production, there are a lot of technologies I've come across that I need to learn for a scalable, easy-to-deploy & easy-to-maintain site.
The different things I need to learn to use are -
JSON : Javascript Object Notation
Tastypie : Django API builder
Chef
Jenkins
Tornado
Gevent-socketio (for Socket.io)
Fabric : Remote deployment solution
Puppet : Configuration management
Celery : task queueing
Redis : key-value (NoSQL?) store
PostgreSQL : Relational Database
South : Django DB migration
Nagios,Graphite, Sentry, Overseer : systems monitoring
Apache, Nginx, Wsgi
I have a limited time to get myself in speed with all these. So, I wanted some guidance with regards to the best way to learn these technologies, as in, what should I start with that would make the understanding of the other concept easier and more intuitive, etc.
Any resource links to get started would be great! =)
+1 on bringing in technologies as you need them. But I understand wanting to be ahead of the curve. I think my answer is really a more verbose version of #cmpolis' comment now that I read all this.
You really have two sets of technologies, one for application building, one for application deployment. So being that you don't have to worry much about deployment until you have an application lets set those aside (Fabric, Chef, Puppet, Tornado, and arguably South)
You won't get very far building your web app without at least learning some basic of how Postgresql works. You will need to create a database, database user, etc. You don't need to know how to be a wiz, but you need to setup and administer at least a local db.
You can't use TastyPie without understanding JSON. You also don't mention how you will be consuming the JSON that TastyPie outputs. (I am going to assume you want TastyPie to do JSON, and not YAML or XML). Do you have a Javascript framework in place for that? If you are going for something like a Tastypie/Backbone stack, I'd focus on that part first, and JSON will come along for the ride. (JSON itself is really trivial to understand). You may want to look at something like backbone-tastypie. Understanding how to read and write JSON will give you a leg up on understand how to use Redis as well.
Learning Jenkins really means just getting it installed and set up. Since Continuous Integration is something easiest implemented at the beginning of a project I would set that up now as well.
At that point you will know where you bottlenecks are so I would bring in Celery (and of course django-celery
So then learn Fabric. I can't really tell if you already know that you will need many, many, servers or if you are speculating. In my opinion, if your configuration is in the single digit number of servers, Fabric may be enough. I would suggest looking at Deploying Django Workshop to see how all of these different technologies get tied together.
So in short:
Phase 1:
Tastypie/JSON
Postgresql
Celery
Fabric
Jenkins
Phase 2:
Whatever is left over that you actually need
I agree with cmpolis. You should build the app and add technologies as you need them. Also Chef, Fabric and Puppet are basically the same thing. Tornado is yet another web framework. I would suggest you start with JSON, Postgres, Redis, Django, Tastypie, South, Fabric, Jenkins. Then as you are familiarized with then you can get to more advanced topics such as tornado, gevent, celery and others. Leave nagions an the rest of monitoring software at the end.
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
We are about to decide a common approach for intranet web services.
I find rest style web services much elegant and easier to implement.
I'd like to have more information about the pros of using rest style ws
The computing world is definetly leaning towards REST these days.
Principle advantages are:
Easier to setup service, as it can be as simple as installing a web sever and placing some resources in the file system.
Easier to implement service, you don't have to worry about complex XML's, WSDL, XSD with all the trimings thats make it hard to see what they are trying to represent and even harder to debug.
Better Performance, the additional data required in soap messages for namespaces, envelopes etc.. can lead to a big overhead which over time can have an impact specifically with mobile devices, especially when compared to return JSON messages.
Easier to develop clients for as you can implement a simple parser to process the response and if your client is javascript the use of JSON objects can be very advantages. It's also clearer to see what you are receiving.
It's how the internet was initailly designed to work, http is set up for this sort of interaction.
I hate SOAP
for me, this sums it up...
The main advantages of REST web
services are: Lightweight - not a lot
of extra xml markup, Human Readable
Results, Easy to build - no toolkits
required
SOAP also has some advantages: Easy to
consume - sometimes Rigid - type
checking, adheres to a contract,
Development tools
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
What points i should consider while building a website, and planing to support users with API to use?
I see that most of famous websites are giving developers an API to deal with, such as facebook, twitter, google, ....
There are any general points i should consider while building a new website to be able to support developers with an API? "just very general points regardless the website service its self"
UPDATE all answers below helped me a lot.
Soap or XML
Depending on your application. If it is complex you might need the functionality of soap. KISS should apply with APIs especially. Have a sensible URL layout that makes sense in terms of resources:
www.site.com/people/london
As a resource.
http://en.wikipedia.org/wiki/Restful
Look into why using PUT, POST, GET and others is important.
Good Luck
I recommend the complementary PDF and presentation of Joshua Bloch's "How To Design A Good API and Why it Matters".
I imagine you would start off by identifying the functions (e.g., addUser, addStory, addComment, editXYZ, etc, depending on the type of website) that the websites supports, and the data that it provides (getCommentsForStory, getStories, getUser, ...), and creating a web service API for these functions, with appropriate security checks and so on.
If you've coded the website well, putting a web service layer in front of your website functionality should be quite simple (it's just another view on top of your controller and model).
The most compelling reason, IMO, to provide an API is that your site provides information and/or services that people will be motivated to interact with programmatically. Since you cannot prevent this (despite many site owners' hopes and dreams), it's better to embrace it, since providing an API means people can access exactly the information/services they want, reducing load on your systems.
One simple thing, that could save you a lot of hassle in the future - include the "API version" as part of your URL, something like..
www.example.com/api/v1/getAnswers/
If and when you decide to revise your API, you don't have to worry about all your URL's being backwards compatible (breaking existing applications), your users just start using /api/v2/ and you eventually depreciate the old version.
Among others, del.icio.us and github both do this
building a good api is hard and needs a lot of practice.
the first api you build should be the api of your enemy's website.
the second api is for your friend's website.
the third api you build is for your customers.
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
What internal web service did your company implement first? What did you learn?
One of the first movers was the "Customer base system".
The common authority for all customers in the company.
EDIT:
regarding the comment:
It did indeed open up for more SOA. It's about 3-5years ago (before me) and currently it was publicly known last year that the SOA helped the company switch from a 3years delayed system to a new one within a year.
Regarding other stuff:
Dont get me started on our SAP integration :S Thats 3 years old as well, and nobody is really able to debug or update the setup. Currently we are POCing webservice integration with SAP. Pheeew
We just implemented a credit card processing web service that allows us to process transactions from a Delphi POS system and a Classic ASP web site. Additionally, we are hoping to get it to work with a Java based IVR system.
The web service was written in ASP.NET (C#) and utilizes SSL encryption, XML, XSD validation and a load balanced web farm.
We have also recently implemented various utility services that do everything from address verification to creating orders in our ERP system.
Our first web service was actually externally exposed. It caused us to think about security upfront...
Let me see if I can get this conversation going. My company implemented a wrapper around the most common Active Directory look-up needs. I imagine this might be one of the most common things to do first in Microsoft/.NET shops.
Anybody implement a library of utility services? Write a facade to some SAP module? Wrap up some services for Human Resources? I'm curious to what people are working on.