My current task to develop a web service that will be run under Linux. Webservice must update database and upload pictures to the server. It will be used by C#. C# client will send a collection of items. Each item will consist of strings, ints, floats. Example of methods must be implemented in WS:

class ProductItem()
string strTitle, strDescription;
float fltPrice;
int intQuantity;

function UploadItems(ProductItem[] piCol)
[PHP code of database update...]

function UploadPhoto(string strTitle, string strPhoto)
[PHP code of database update and save of the photo]
[strPhoto - is a binary string of a photo file content]

In summary, I will need a web service that will accept a "simple complex data": array of items, and another method to accept binary data. It has to run under Linux, so PHP is the most prefered language to develop. And the client will be C# program, but not limited.

What protocol should I use? SOAP, XML-RPC, REST?? If it's under PHP is it better to use NuSOAP, or PHP5 Soap Extension? What other recommendation in developing such webservice? Any help, guides, tutorials are greatly appreciated.