e-commerce webapp integration via Web Services with MS Dynamics (Navision 2009) - web-services

Has anyone tried to build an e-commerce site atop MS Dynamics, using the new Web Services introduced in Nav 2009 ? I'd like to know what kind of load these web services can take, and what kind of resources can be read/written, and any other challenges that I can expect.
I intend to integrate an existing linux-based webapp via Web Services ...
Thanks.

Web services in NAV 2009 can call either CodeUnit or Page objects. Pages allow you to create, read, update and delete rows from their source table. CodeUnits offer greater flexibility, allowing you to invoke any action you can implement in C/AL. I think CodeUnit trigger arguements are limited to primitive types and Records.
NAV web services use Windows Authentication, so your linux app will have to be able to present Windows credentials accordingly. I'm not an expert in this area, so I'm not sure how difficult this is from a Linux machine.
With regard to the supported load, I would ask in the forum at mibuso - this is the largest community of experienced users I am aware of. I expect you will be limited by the CPU and memory of the web service host. NAV does not support clustering\load balancing on the web service tier, but I beleive it is possible to run several side by side.

Related

Integration between custom system and Crm Dynamics 2016 Online

I'm working on Dynamics since about 1 year, and I'm working on "on premise" environments, and I don't know very much about online solutions.
I should now integrate 2 systems through webservice, and one of them involves Microsoft Dynamics CRM Online 2016.
What I'm trying to accomplish is that the custom systems sends data to the CRM Online through webservice.
I've read I just can't deploy my webservice and my logic as I've always done (separate web application that receives a Json or a XML through web services and works on CRM entities through the SDK).
So, do I need a separate machine to receive the XML and working on the CRM through the SDK?
In some posts I learn a little about Azure, but I don't know if it could be a nice solution. Should I get a virtual machine and then install IIS? Will my web app be visible by the custom system and able to work on the CRM online? Do I need a different service?
Thanks in advance and sorry for the confusion, it's the first time I'm trying to make CRM Online communicate with the outside.
So if I understand correctly your approach is 'custom system <=> your WS <=> CRM Online 2016
I've read I just can't deploy my webservice and my logic as I've always done (separate web application that receives a Json or a XML through web services and works on CRM entities through the SDK).
In CRM Online you don't have access to machine that CRM stands on so no folders, no inetmgr, no deploy.
So, do I need a separate machine to receive the XML and working on the CRM through the SDK?
Yes.
Should I get a virtual machine and then install IIS?
It doesn't have to be new virtual machine. It could be for example machine that custom system stands on ofc. if it can be configured to have access to the internet.
Will my web app be visible by the custom system and able to work on the CRM online?
It is matter of configuration of NAT, firewall etc.
Do I need a different service?
What service do you reffer here?

Limitations of web service in Moodle

I'm going to integrate a Moodle-based application into my website wherein all data/activities being posted in this Moodle-based application can be retrieved by my website and vice versa.
So, is the Moodle web service enough to access all the data in that Moodle application?
Yes, you should be able to use web services. No, not all data is accessible out-of-the-box.
Things you can do with the webservices:
Retrieve a list of users, courses, assignments
Upload files
Create notes
Send messages
Enrol to courses, groups, cohorts
Check grades
On your Moodle site turn on web services and go to /admin/webservice/documentation.php to get a full list of existing functions you can call.
You can see some examples of this implemented in the Moodle Mobile App:
User: http://docs.moodle.org/26/en/Mobile_app
Dev: http://docs.moodle.org/dev/Moodle_Mobile
If these satisfy your requirements then yes web services should be sufficient as they are.
If they do not then you can extend the web services as a local plugin to provide richer functionality, which would be limited by your development capacity rather than the system itself. To port all of the features of some modules to web services would be a significant undertaking, but there are some low-hanging fruit to get activity lists, forum discussions/posts, choice polls, etc.
Web services is a better approach than exposing the database to an external system as it allows you to utilise the core APIs to improve integrity.

Difference between portlet and a webservice

I am not sure if I am comparing onion with a cabbage. But I am really confused with the portlet and a web service. I know that web service is making your software components in your application as a service to other applications but to me it is similar to a portlet responding to requests. I know that my understanding is making you(Portlet & SAAS developers) really upset. But I need some clarity on this.
Why cannot I use the request-response to portlet work similar to a web service?
If yes, what is the benefit I get in using a web service than a portlet?
If not, then what are portlets lacking to act as a web service?
I am a newbie in portlet development. Please dont curse me for this question.
Please suggest.
EDIT:
Most of the answer say that the portlet is a UI component. My customer has requested me to create a webservice in liferay. So is it to make a portlet as a web service? If yes, can you please provide a pointer or some code snippet?
Addressing your 'edit' specifically with regards to Liferay...
Liferay plugin projects can expose web services without too much work.
The Liferay Service Builder actually has facilities so you can create SOAP web services or JSON web services backed by tables in the Liferay database (and that make queries on existing database tables). In the case of JSON web services, the URL scheme generated is not RESTful (unfortunately), but it is well defined. With a bit of work on your part you can impose Liferay's permission system on web service calls as well.
Here's a reasonable starting point in the Liferay Developer's Guide:
See the links on that page to SOAP and JSON services.
Note that a 'portlet' is only one type of Liferay plugin. The web service facility is part of the service layer - which can be used by many plugin types. So there isn't necessarily a portlet involved in creating a web service in Liferay, you can make a web service that has no visual component associated with it.
Portlets are areas you create to add and display content. Portlets can be added to the left and right of the center body area and can contain myriad content ranging from news, events, calendars, RSS feeds, collections, plain text, and more. Also, you can set properties and policies for showing the portlets.
you want to use portlet when
You have content you want to have special focus, like news.
You need to specify the configuration data for an item. - i.e. number of entries to show.
You want to give the content editors a choice about when and where to display content.
You'd like to show it only to some groups or users.
On the other hand, web services:
Enables applications to expose their services
“progammatically”, i.e. the services can be invoked by programs
Enables software running on other computers (could be a desktop, mobile phone, PDA, etc.) to invoke operations exposed by Web applications
if you are trying to identify the main difference portal historically, the portlets have three layers architechture (client, middle tier, backend) this cause two weakness:
Different portal groups have no well established way of sharing services
Different technologies(Java, Perl, CORBA, EJB) in middle tier.
Different protocols(GRAM, IIOP,...)
Consequently, lots of redundancy, reinvention
Example: batch script generation
so Web services address the service sharing problem and reduces the redundancy.
source1 source2 source3
Portlets are meant to be a user interface component in a portal solution.
Web Services provide functionality to remotely interact with a system commonly using SOAP, REST, JMS or other related
They provide completely separate functions. The closest you get is the serveResource method in portlets. This functionality is used to serve various types of content from a portlet (such as a PDF document or an AJAX response) without the need to perform a full page request.

where to use web services

I am discovering webservices to impliment in my asp.net website. I visited many sites about Why use webservices and read many articles and found out that web services are good when you have something that is used frequently without loading your page.
I want to know some other example scenarios where web services are used.
Whether i can use web services in sending an order form to database or it is just for textbox box auto completion like google and etc.
Note: I know web services can be used from mobile, web or desktop applications.
But My question is When do i use web service in ASP.Net Application?
Some articles read so far
Codeplex
How to create a Web service using Visual Studio.net
w3school
On a Large Scale, Webservices are basically written, when you want to expose your database, your code, to some other user.
By exposing database, means, suppose, you have a large collection of all the pharmaceutical companies in a given region, storing details in db like, medicines they produce, their policies etc etc. And now, you want people to use it(possibly your paid Client, or simply free access to anyone). So what you going to do? Obviously broadcasting working connectionString to your database will be a disastrous move.
So what you do is to make few methods on top of your db i.e. CRUDE operations and expose these methods in your WebService i.e. someone can interact with these methods through a URL and fetch data or send data or both.
Most general use of WebServices is when you want your specific language built( say ASP.NET) logic and data to be accessible to people on different platforms.
Like mobile devices. Their frontEnd is built in fancy framework say like Titanium, but they fetch their data through a Sql Server using WebService built with Microsoft's WCF-Rest approach. They store their data, Synch their data through a WebService.
In a typical example, We had a very large shopping Website, and it was standalone i.e. we were the only users of its database, its data, its users. But then a requirement came, that certain Client wants to model it and make use of its existing data and logic, but they have got JAVA platform. Our entire system was built on ASP.NET 3.5. What to do then. We simply exposed our BAL through a ServiceLayer and gave it a fancy name ServiceBAL and lived (and earned) happily ever after.
These are some business oriented usage of Web Services.
Other simple, mere usage of webService like textBox auto completion, existing user check and so many, am sure, you must have found out during your scout.
Web services are reusable components you can use anywhere. for example suppose you are building order processing system where order can be place by mobile,web etc. So instead of creating a different function for different application or different platform it's better to create a web service of order processing system such as placeOrder or takeOrder web service and consume them on different applications.
Web Services are the means by which devices communicate over the World Wide Web.
Whether you use a mobile application, search engine or an enterprise system, the user piece of the application (the interface) resides on your device.
The data, and potentially the business rules, live on some other server on the network. How your interface communicates with the server piece is the role of Web Services.

website, webserivce and web API

I am newbie here and confused by few things
Some websites (twitter, foursquare, etc) provide API to third-party developer to call. are those APIs the web services that the sites provide?
Are those web sites themselves built on top of those public APIs/web services? theoretically is it possible?
Comparing the traditionally built website and the websites build on top of web service, pros and cons? are there any performance, scalability, etc differences?
Thanks in advance!
I'm sure somebody can give you a more exact answer but reading your question and applying my self-taught knowledge:
The simple technical definition of Web Services according to W3C:
A Web service is a software system designed to support interoperable machine-to-machine interaction over a network.
http://www.w3.org/TR/2004/NOTE-ws-gloss-20040211/
I like to think of web services as the interactive elements of a site that its customer base utilizes. For example, Twitter's web services include: tweeting, messages, hashtags, etc. Web services are what users get to DO or DATA passed back and forth.
A public web API provides means for developers to utilize the web services on their own site. For example, Twitter's API allows example.com site to utilize tweeting, messaging, hashtags, etc from within their own domain. An API is how developers get external access to web services to make apps using those services.
I have no idea about this question. I wouldn't do that. I would use the methods the public API exposes access to. But, I've never written my own API, let alone on the scale of Twitter or foursquare.
I hope this helps.
First of all, maybe you need some more info about what an API is: please take a look at the Wikipedia api page.
To answer to you questions (these are only general thoughts and not best practices):
An API, in this case, is a way that a developer uses to access a webservice, and it's not the service itself.
The websites you mention are not using their own APIs, as these APIs are meant for remote users (clients), and offer limited data sets, while the websites need maximum performance, access to the full database, and (almost) always use server-side code. The websites you mentioned, probably use other, server-side, high-performance APIs.
See the previous point: although it depends highly on which APIs you use, what you call "traditionally built websites" (that is, web applications using server-side APIs) can afford higher performance than websites totally built on top of remote APIs, because they do not depend on the bottleneck of the network connection (because, again usually, the web server and the database server either run on the same machine, or communicate faster than the client's browser and the server).
The reason that would make most people choose to develop a webapp the traditional way is that free APIs provide limited functionality (e.g. Google custom Search, limited to 100 reults).