I'm looking Specifically for some detailed information on RETSBond Integrator (RI) or something similar. Has anyone used it? Drawbacks? benefits?
What I need is something that provides a PHP API out of the box or some kind of RPC exposure. This thing seems to provide an API for batching the MLS server and putting in my own DB which is acceptable although ideally I'd prefer something totally external. Do any MLS services provide that that you are aware of?
I realize this is somewhat subjective but I'm looking for a starting point on different services/vendors to research.
Hmmm. Have you looked at the client and server implementations at rets.org?
VieleRets is a PHP RETS client/server application that can both query a RETS datasource and mirror an existing DB. It is open source. If you said a little bit more about what you are trying to accomplish, might be able to provide other advice.
You can take a look at retsCloud.com They do the work for you and it's something like $20 a month.
Related
I want to try creating a canvas were multiple users can type and edit for brainstorming etc. I am thinking of php as backend. What are the technique used for it? For example, lets say its
pure text. How do we update the text like in the google wave(b4) and in google doc?
Is it just using websocket(or js pooling) and updating the text file? or are there any
better logical way to solve this issue?
Well, its not as easy as it is said in Brad's answer but he is partially right. You will definitely need WebSockets today to make it happen. But logically, it is not that simple to create a collaborative environment. There are issues like broadcasting changes of every user to every other user viewing the same document. Then you will have to make sure that every user gets to see exactly the same thing no matter who changes what and when. This gets difficult when multiple users are working on the same document collaboratively. There can be conflicts while merging changes of one another.
As far as PHP is concerned, language is not really a problem. Its how you handle the above stated problem.
Google released its research and engineering details on Google Wave (I guess after abandoning the project). This link might be some help to you: http://www.waveprotocol.org/whitepapers/
Websockets are the way to go for this. However, they are difficult to implement in PHP, and not supported by many browsers as of yet. You can do long-polling of AJAX requests pretty easily with PHP, but it can be quite a waste of resources.
This might not be what you are looking for, but I'd suggest changing your server-side technology. You can use Node.js with Socket.IO to easily use Websockets (or seemlessly emulate them for browsers that don't support them). This will provide the fastest method for pushing data to your users.
What should be the best choice among REST API, Restler OR Apify ? Which is more secure and more scalable ?
I have built quite a large API based on Restler.
The developer is quite responsive, even though the community might be smaller, and imo it was "simpler to get started"... I actually looked at apify and was kind of turned off by the fact that it was "too flexible" in that it feels (to me personally) like it is trying to tick too many boxes and it made it too complex for my taste... from what I gather you can even serve an entire web app using apify, with a complete MVC structure, etc... it wasnt so much what I was looking for... so I went to restler...
In restler you can convert code or start coding quickly and very easily expose that as an API. A new version is supposedly in the works to be released sometime and would be very much improved in many respects, nonetheless, the way restler is quite "bare" today I feel has been to the best...
I wouldnt want to be restricted in the way I do things, such as talk to a DB, or paginate, etc.... these things, in my case, are tied to my existing DB lib, and pagination and caching mechanisms which are inherited from my legacy non-api app.
In summary, I think apify is perhaps "more complete" in some respects, but it wasnt what I was looking for, quite the contrary. I also feel that I can today very easily port all or almost all of my code to apify, as my code itself is all contained in classes and functions. I have just now looked again at apify and I still find it to be "bloated"? (maybe not performance wise, but to me as a dev it feels a bit bloated, kinda like the kitchen sink - does everything...)
AFAIK restler is also open source, so both are kinda on the same ground there. IIRC restler is based upon another smaller framework. I like that restler is quite small and simple and "gets the job done"... I dont want a PHP Framework a la codeigniter/symphony, etc, I just wanted something to help expose functionality as an API in a secure form, with different permissions, authentication, eaccess levels, etc.
I'm always open to other suggestions!
EDIT: this site may be useful in looking at some other options... http://blog.programmableweb.com/2011/09/23/short-list-of-restful-api-frameworks-for-php/ FRAPI was a close second choice but i thought it was a bit too complicated to get everything i wanted the way i wanted... I suggest you experiment with several for a few hrs each and see where you feel more at home.
I would favor apify for its larger developer and contributor base. Open Source in general is secure, and the actual security of your application will be based on your implementation. The same applies in scalability. I think all mentioned solutions can be scaled equally if the implementation on the server side is correct.
Looking to develop a web service (api) in PHP to offer customers an easier way to integrate with our platform. There are workflow calls that will be validated with user/pass as well as some reporting options.
Sorry I can't post more details or code on the subject and I have never developed a web service but have had experience in using them via SOAP.
Now I would also need to offer a state or status of the workflow and I think REST would be the best choice here, but still looking for opinions on that.
For reporting I would like to offer different options such as XML,Excel/CSV any reason I would pick one over the other?
What are some of the pitfalls I should lookout for?
What are some gems anyone could offer.
Thanks in advance to any help as this is very important for me to understand.
UPDATE #1:
What would be the most secure method?
What is the most flexible method
(Platform independent)
UPDATE #2:
a little bit about the data flow.
Each user has creds to use the API and no data is shared between users. Usage is submit a request, the request is processed and a return is given. no updates. (Think Google) a search request is made and results are given, but in my case only one result is given.
Don't know if this is needed so it's an FYI.
Always handle errors and exceptions.
Problems will always make their presence felt in the application/api. Either at start or through further development. Don't leave this as an end task, and make it clear when an error occurs, with well documented response messages.
Also if your service will handle many requests, and for the same resource id (independent from user) the same resource is returned be sure to cache the information. And this not only for performance reasons, but for the cases when errors stuck up. This ways you can at least serve something to the client (possibly useful, more context required to be explicit).
The biggest and most important item I can offer is to guarantee your infrastructure behind the WS or at least what you are serving up via the WS is stateless. The moment you deviate form this it will become a nightmare and you will begin having to shoehorn code in to protect your data from getting fouled up.
An example would be a two clients making changes to data via the WS, ie...save configuration. How you deal with that on the back end makes things interesting. If your data is only heading outbound, you are in a much better situation then if you have to support pushing data into the back end.
Also, think out the API's in depth as with any public facing API. The moment you have a version out in the wild and then decide that API needs changed or deprecated begins to cause problems for the client base making use of your WS.
I am currently working on a web application that includes a web service (or 2 in ASP.NET MVC) and I highly recommend looking at the principles behind Service Oriented Architecture (SOA) as what I have found is that the most important aspect is to get the design of the web service API correct as that will effect the rest of your back end and either make your life easier or have you running into walls out of frustration.
Essentially SOA means design the web service around business processes, i.e. how the people who use your API are likely to use it.
A Good desgin is always a good idea, so I highly recommend you do a lot of reading on Web Sevice Design Principles before you start coding and save yourself or some other unlucky sod alot of grief latter on.
Also make sure that your design is agile as it will change frequently as communication between your company and your clients happens.
A little bit more related to implementation than design:
I would decide that the output of the service to be XML - this can be very easy parsed, by all decent languages. Also, if some client need other output, you could transform those XMLs through some XSLT processors and offer "other" web services, that outputs JSON, or whatever else they need.
Regarding the reporting, that depends on how the reports will be used - if the clients process them and they need only the data from the reports - then again suggest XML. In my opinion working with CSV is harder because you have to take in consideration all kind of special cases like "what happen if my data contains the separator field", "will the client be able to specify the separator", "how will I represent nested data", or all of these are straight forward with XML.
If your client needs reports to use them out of the box you could use BIRT -beautiful and free
Offering multiple outputs like JSON, CSV, YAML or XML is good - that gives the end user confort, at a very small cost! Dumping data is always easier than processing, and say that they already parse JSON for some reason - it is much easier to just hook that up for your API than implementing, say an XML-parser. Nowadays I see XML-parsers everywhere, so that should probably not be a problem, but I like the more "air-ish" nature of JSON; I have looked a little into YAML but never used it - but it looks promising, I'll definitively use that for the config files of my next project.
On the security side of anything that dynamically processes any input an user gives, one should treat such input like something you would not poke on even with a stick.
IMHO stateless REST is better than SOAP because it is less overhead, one can easily communicate with a REST-api by hand using curl or wget from the terminal. Jump-start so to say.
I would reccomend you to take a deep breath, a pencil & a paper, sit and sketch down everything that is going to be needed. Then you remove the less important stuff, and take a new paper and start to organize it. You can add the less important stuff in the next version of the API.
Try to design the API so that you don't lock yourself into a corner, make no assumptions on where it is going to head next.
I can see Google is implementing the Portable Contacts API for developers to fetch a user's contacts. That seems like exactly what I want to do and I especially like the fact that the protocol is open and through it I can support more than just Google.
What I'd like to know is whether there is a library for PHP that implements this protocol, as I don't feel like writing one from scratch / reinventing the wheel.
I wouldn't generally post such questions which could be answered by simply googling, but I've done my googling on the subject and can't seem to find any relevant info.
BTW, I don't use Zend, so please don't suggest that to me, unless it's the only way possible.
The Open Social PHP Client can access the Portable Contacts API
I'm trying to write an interface between a home-grown project management system and Serena Mariner. (The bigwigs like to read Mariner, the worker bees like to write to the home grown system.)
How can I (programmatically?) figure out what Attribute Keys are available?
I'm actually writing the interface in PHP, but any advice would be much appreciated.
Mariner seems to have an API for working with the system. Otherwise, it might be better to ask at the Mariner Support Forum.
Update: I took a little bit more of a look at the API and it doesn't specify the attributes, which is what your question is about. I guess the support forum is the better bet then.