Azure websites and wkhtmltopdf - asp.net-mvc

So after beginning my azure websites-adventure, I have been encountering disappointment after disappointment to the point of 'almost' regretting taking the azure route..the latest: my app uses wkhtmltopdf(Rotativa) for all its PDF generation. And as I discovered now during my staging testing...that doesnt work. According to most info on the web, azure websites cannot run .exe's. However, most info I've seen is by now 2 years old and I know Azure development is going fast.
Is there by now a way to run wkhtmltopdf on azure websites, or a workaround atleast? I cannot really find a free alternative like wkhtmltopdf to seems to be working.(Itextsharp doesnt seem to like my html, so thats no option).

Running wkhtmltopdf is now supported in Azure Web Apps - just make sure you are using Basic, Standard, or Premium App Service Plan. Consumption Service Plan and Free App Service Plan have a more limited sandbox and are NOT supported in my testing. MS confirms supportability of wkhtmltopdf in Azure Web Apps.
Hosting - App Service Plan
There are numerous wrappers available (TuesPechkin, Codaxy, etc.). Codaxy is an EXE wrapper in .NET while TuesPechkin is a .NET wrapper around C++ runtime using P/Invoke over wkhtmltox.dll.

Running wkhtmltopdf in Azure Websites in a simple way seems to be impossible, still.
Static .NET wrappers like Pechkin wont work either in WebSites, there are very few alternatives that are 1. free and 2. dont use wkhtmltopdf or similar under the hood. Most alternatives like iTestSharp are not very advanced when it comes to html/css3/javascript reading (as I do some design changing with .js on page load).
I ended up creating a Azure Cloud Service, that runs wkhtmltopdf.exe without any issues. I send the html to the service, and get a byte[] in return. So far this seems to be working fine.
Hope this helps others with similar problems.

Related

Laravel 5.1 application deployment

I have developed an application with Laravel5.1. Now I need hosting suggestion for deploying my application. I know it's a silly question but I want a reliable answer. Before buying a hosting I want to know which hosting service will provide proper environment to run a laravel5.1 application.
Php version required >= 5.5.9
This is such a hard question to answer as it all depends on what you're after.
Some questions to consider:
Do you want to set the server up yourself?
If this is the case then any unmanaged provider will do the trick, you'll just need to set it all up; LAMP, Git, Composer etc.
Do you want to manage the server itself but you aren't sure how to set it up?
Digital Ocean (and other providers I'm sure) offer one-click apps where you can deploy whatever you want. For Laravel you would probably want to pick the LAMP app install. These deploy all the packages you will require and set them up for you so that you don't need to - the rest of the server management would be up to you from there.
Do you want to use Managed Hosting where they do it all for you?
OVH have been pretty good for me in the past, I've never used their managed option, although I know they have it - and I've had great service from them too.
If you're still not sure then I would suggest looking for a provider that provides servers that come with a LAMP stack (as this covers everything you need for Laravel) or one that supports PHP applications - if you're not sure then just contact the company and ask. Or find someone (a friend or a professional) who can help you get started online.
One suggestion because you are using Laravel is to look at https://forge.laravel.com/ where you can handle servers that runs in Digital Ocean and other providers.
Fits perfectly for Laravel.

Can Meteor run with a Microsoft back end (ie EF and ASP.net MVC)

Perhaps like some of you, I am inundated by the number of JavaScript MV* out there. When I thought I was going KO, I found Backbone, then Ember.
I recently saw some demos on Meteor and I am extremely impressed. But I know nothing of Mongo and I "think" Meteor requires it. (http://www.meteor.com/screencast)
I am too heavily invested in Entity Framework & ASP.net MVC to move away from them but Meteor looks like a terrific client side MV*.
Does anyone know if Meteor can work with a Microsoft back end (ie EF and ASP.net MVC)?
Thanks.
UPDATE:
Yes I see the NuGet package for MongoDb, but truth be told I am only interested in Meteor. Is it a both or nothing situation? Meteor looks like bleeding edge and I really would appreciate any links to documentation on its use with a MS backend.
For anyone still reading this in 2013 or later - it's now possible to run Node.js on Windows under IIS (just install the support with the Web Platform Installer).
There's also versions of Meteor and MongoDB for Windows and Meteor supports deploying a bundle that will run under "pure" node.js
As far as I know, You can't. it runs over Node.js, additionally there is a client implementation of a MongoDB like API that would be a pain to implement with a EF backend I think
Yes, sort of. Meteor runs server-side code using node.js, but also provides some very useful services on the client side like templates, routes, collections, session variables, and reactivity.
The way to use it with a .net back-end (or any other language) is to create an api that can be accessed with Meteor. You can create Meteor collections in the client code, which don't need a mongodb instance. Simply access the api to load the collections with the correct data, and then you can use Meteor as you would normally.
However, for most apps it would be much simpler to implement everything in Meteor.

Multi tenancy app to deploy on azure at a later stage

I am currently developing an MVC app using asp.net. My final aim is to deploy the saas on Azure.
But would it be feasible to do it at a later stage or should i incorporate it into my development?
When it comes to use Azure authentication etc i will require that due to the app being multi tenancy.
Just wanted to know peoples thoughts on this?
Cheers
It would be better if you can provide more information. Do you want to know if you ignore Azure at the moment, how much effort you need to take if you decide to deploy the application to Azure? In general it would not take too much effort, unless you want to use Azure services, such as storage, ACS, and so on. Deploying an ASP.NET application to Azure web site is just like deploy to a remote IIS. Deploy to web role requires you to create an additional cloud service project. Deploy to virtual machine usually does not require any modifications to the project, but requires you to setup all the environment.
In addition, please note there’re still some difference between Azure and local environment. For example, we usually use Azure SQL Service instead of connecting to the local SQL server.
Best Regards,
Ming Xu.
I'm doing something similar, but without developing on Azure right now. I have prepared for it though by making sure I use interfaces as much as possible. For instance, I don't write to a file system using File and Directory, but to interfaces IFile and IDirectory.
If you can avoid assuming anything based on your current localised, Windows Server environment then you can at least write implementations to satisfy requirements that do work in Azure. I'm planning to deploy to Azure and local Web servers and use Dependency Injection to satisfy the concrete implementation of the interfaces. I could just as easily use the same codebase entirely and have it detect the environment before injecting the implementations.

Posting to a web server (general question)

Sorry, this isn't really a programming question but it's for a program I am making. My program needs to be able to upload files via many methods including HTTP, and to develop HTTP functionality I need to have a web server to post too - but the concept is failing me.
I use Mac OS X Snow Leopard but also Windows 7 in Parallels for my development - how easy would it be to create a web server in either of these OS's? Also, how does a web server become 'post-able', where I can upload to it?
Thanks
Web-servers such as Apache are available for both platforms at no cost.
To allow upload of files you need a suitable HTML file and a back-end program to handle the post request. The simplest method I have used was based on a small CGI perl script.
Google will find examples such as http://perlmeme.org/tutorials/cgi_upload.html or http://articles.sitepoint.com/article/uploading-files-cgi-perl

Is it possible to host a asp.net mvc website from a winforms application?

I have a winform application that controls some transmitters and sound cards. There is a requirement to be able to provide a web interface for controlling those devices.
Currently I use WCF to communicate from the controllers in my asp.net MVC site to the winform app. That works well, but there is now a desire to move the hardware to another machine when needed and that means that IIS has to be installed and set-up on that machine.
I know it isn't that hard, but I won't be the one actually doing the moving. It will be the users. If I could host the site from the winform app them it would basically be portable besides the hardware drivers need for a usb to serial converter we use.
Can you use a windows service? The whole winforms app as a service doesn't seem right to me. It assumes that the app is always running. I would create a windows service and expose WCF endpoints from that.
You will need to install IIS or Cassini to host the MVC web site. There's no way around that.
Huh, I would go with Greg's answers.
Also, making your app IIS dependant is not that bad. Or Cassini dependant. You don't want to end up writing your own webserver, which could easily happen when you continue to add features to the app.
I don't know about you but it just feels you are taking all the load on yourself, you are going to spend possibly dozens of hours to implement it to spare an hour or two for someone who doesn't want to install real webserver.
if you want to host MVC under winforms then i would look into the upcoming .netcore 3 version which should allow this combination.
though you'll have to wait until 2019 Q1
https://github.com/dotnet/core/blob/master/roadmap.md
otherwise i've mostly hosted simper stuff using nhttp library if i want it in a winform app.
(NHTTP is a library that gives you very simple crude http request functionality so no mvc sadly but it works for simnpler stuff)

Resources