views:

85

answers:

3

Hi all, I am developing ASP.NET MVC application as a part of summer experience job from my college. I have a requirement where i need to implement a fax functionality. Because i am still student, and this is my first real application, i'm kinda confused how to make this function and what libraries should i use. Third party services (such as mail to fax and so on) are not considered due to the nature of application - it is going to be a service that help doctors to get access to patients encounters. This data is private and cannot be sent to any third party service.

I am using Visual Web Developer 2008 express edition if this matters.

The fax machine is going to be installed on the server, and faxes will be sent from there. I am looking for advice or, maybe some good resources that can help me. Thanks.

A: 

I'd start by looking at TAPI, which is Microsoft's Telephony API. There are .Net wrappers listed in the Wikipedia page.

Stewart Ritchie
+2  A: 

I've worked on faxing in our application. Our app integrates with various fax services through configuration options. I recommend buying or using something off-the-shelf and integrating with it. Some examples include:

  • Microsoft Fax Server, free with existing Windows Server licenses.

  • Faxman, which costs a nominal fee, works great. Can fax PDFs with an optional add-on.

  • RightFax is a very expensive solution. Can fax PDFs with an optional add-on.

You might look into the Adapter pattern to abstract the faxing implementation from your service.

Paul Williams
+2  A: 

The easiest approach here would be to use some sort of email to fax facility--either hosted locally or in the cloud--to send the faxes. Will make your life much, much easier as you won't have to take it back to the old school and get down with dialtones.

If you do have to send stuff, you should probably look at externalizing the operation to your own service for a few reasons:

1) testability/maintainability/flow -- if its external you can create a stubbed API and write your web app to talk to that first, then get down with dialtones later. But its not a blocking issue. And your test suite doesn't need a faxmodem.

2) usability -- faxes take a while to send, if they succeed at all. Passing off the request quickly and telling a user its being sent then notifying them of success makes a bit more sense then a really long running "PROCESSING" graphic.

Wyatt Barnett
i can't use email to fax facility, as my bosses want me to create this functionality, and i have no idea how to make it. And what externalizing means? creating another app for sending faxes?
Sasha
Well, I can't solve the politics for ya, though bosses usually understand "I can make this in 6 months, or we can be up and running tomorrow for cheaper with X". But if you must build it, I would separate the sending to a separate app/service that just sends queued faxes.
Wyatt Barnett