Currently looking at implementing an ebXML MSH using .NET.
Has anyone done this before, and/or know of any open source .NET examples out there?
Any comments/advice welcome ;-)
My company was going to use the Covast ebXML adapter for BizTalk. Whilst not a 100% .NET based solution it is one of the few Microsoft focused products that deals with ebXML. I think from memory the license was about $3000 AUD.
In the end we decided to go with an Apache Camel ESB that uses Hermes as the ebXML messaging layer.
Related
Has anyone developed (either as open source or as a reasonably-priced commercial offering) a .Net implementation of the Win32 Native Wifi API? Or does anyone here know of such a thing?
I've done about an hour and a half of spelunking on Google, MSDN, pinvoke.net and here, and haven't found anything. If I've missed something obvious, I apologize!
We're on a tight deadline, I know little about Wifi, and I need to get something running quickly. I can either cut 'n' paste from pinvoke.net, or write a .Net wrapper class in C++, but I'd prefer not to spend the time doing that, if possible.
What we need to do is poll continuously for the presence of a particular SSID; when it's seen, connect immediately and report to the client, who can then send some socket and/or SOAP messages, then advise us when it's safe to disconnect. We need to be able to report the signal strength to the client, as well ... it needs to make intelligent decisions about using Wifi vs. other communication modes available to it. For the first iteration, this can be unsecured, but we'll probably want to add the ability to specify a WEP key in the future.
Do the network management APIs that are wrapped up in the Code Pack help you? I believe you can get a .NET event when various things happen, and surely the availability of a specific SSID counts. I haven't done more than run the demo myself, but take a look. I think you'll like the license terms also - you're allowed to incorporate the library into your code.
UPDATE:
The given API, unfortunately, is no longer available. The link leads to the MSDN archives pages. Luckily, the answers here give links to the binaries of the aforementioned API.
There is Managed Wifi API but I haven't used it myself so I can't comment about it.
I've been trying to create an Instant Messaging application in my ASP.NET site using C#. I came to know about XMPP which is a protocol used for instant messaging by GChat. I was wondering how to implement it in my ASP.NET application. Any insights provided on this will be very much appreciated.
Thank you.
NLV
The thing about the C# libraries is that most of them are closed-source or licensed. I've found MatriX (used to be agsXMPP) to be the best in terms of what it can do (developer license might be a bit steep though). Jabber.net would probably be a good choice too.
It's not for the faint of heart. Building out a client might be ok but building a component or deploying a server caused me no end of headaches. Understanding how it works first might be the best approach. There is a book called "XMPP: The Definitive Guide" that I found really useful.
Check out this excellent book, should have what you need to implement your IM app
http://www.wrox.com/WileyCDA/WroxTitle/Professional-XMPP-Programming-with-JavaScript-and-jQuery.productCd-0470540710.html
I am attempting to implement some additional statistics gathering in a C# server application - I have about 20 or so variables I'd like to be able to report to network monitoring tools; so I am assuming (hopefully correctly) that SNMP is the correct way to go.
There are however two problems:
The application is an open source server that cant include proprietary components, and
It needs to run on Mono under *nix environs as well as Windows via .NET.
The "#SNMP" library at http://sharpsnmplib.codeplex.com/ appears to be a promising solution - but there are no samples I can find; and my knowledge of SNMP is lacking.
Does anyone here have any (quick) examples of reporting data via SNMP? (ideally using a library under the LGPL, X/MIT, BSD or Zlib licenses)
Help much appreciated
Edit:
The problem appears to be a lack of libraries capable of acting as SNMP servers, if anyone is aware of any - this would probably solve the problem nicely.
Edit #2:
Basically I'm looking for a SNMP server library or sample reference implementation.
As the author :) I suggest you check out TestAgent sample. It can send out TRAP or INFORM messages to the IP address you specify.
Note that this is a tiny sample, which does not reveal all powers of SNMP.
#SNMP source comes with some samples (they're actually tests, but one can have an idea about how it works).
Another thing you could try is send your snmp queries calling directly the snmpget executable with the Process class. It's not the best way, but it could work (I've used this kind of approach with another language).
Does anyone know of a good resource for open-source libraries for asynchronous C# (or native stuff to the language). I'm interested in anything on this topic, but I'm specifically looking for stuff pertaining to HTTP and DB calls. Maybe an event-driven framework with plugs for HTTP and DB?
Unfortunately I can't use a non-C# solution or anything that does not work on mono, unless it is planned to run on mono soon.
For HTTP, it kinda depends on whether you're talking about client or server. Assuming client, you could just use the *Async methods in WebClient
http://www.go-mono.com/docs/index.aspx?link=T:System.Net.WebClient/*
For DB, the sqlcommand (or similar) class exposes BeginExecute* methods for async calls
http://www.go-mono.com/docs/index.aspx?link=T:System.Data.SqlClient.SqlCommand/*
You would probably have to use some kind of queue system. There are lots of queue engines. MSMQueue is the "standard" Microsoft solution.
Have you looked at the Linxter Internet Service Bus system? You can find some details at http://www.linxter.com and some sample apps that show how to perform database transactions distributed over the Internet.
The question is quite generic, both HTTP, DB and asynchronous could mean a lot of different things, depending on the requirements:
On codeplex you can find a more standards compliant HTTP server implementation which is event driven, compatible with Mono and has been used by others successfully.
There are a number of Asp.Net providers, as well as NHibernate
For Linq to Sql, your best option will probably be to use DbLinq although DbLinq is being included in the Mono namespace.
You probably should check NServiceBus. If it runs on mono it offers you a good framework for asynchronous calls (based on messaging).
It doesn't offer DB or HTTP connectivity by default, but this should be fairly easy to integrate.
Is there a product (ideally open source, but not necessary), that would enable a zero dependency deployment? every service bus or queue library I've been able to find has a dependency on one of the queue apps (like msmq), or a database. I would like a very lightweight solution that I can just add a reference to my application, build it, and deploy it with as little configuration as possible.
In an ideal world, the queue/service bus would run on IIS, and allow web and rich clients to talk to it.
Such a tool would be ideal for fast prototyping of large distributed systems on a local development machine.
Rhino Queues from Ayende is exactly what you are looking for, this is the blog post introducing it:
http://ayende.com/Blog/archive/2008/08/01/Rhino-Queues.aspx
I think that all of the limitations mentioned in this post have been fixed since then.
From the blog post, what rhino queues is:
XCopyable, Zero Administration, Embedded, Async queuing service
Robust in the face of networking outages
System.Transactions support
Fast
Works over HTTP
In a similar vein to ShuggyCoUk's suggestion, you could rig up a queue (or queues) using the Windows built-in ESENT database (comes already installed with Windows). There is a managed code access library (open source): http://www.codeplex.com/ManagedEsent. If you stick with writing / reading CLOBs or BLOBs, it should work just fine. If you want to be really clever, you can use NServiceBus and write (contribute?) ESENT-flavored subscription storage and transports. There are some forays into using ESENT on Ayende's blog as well (you'll have to poke around his SVN repository for the juicy bits).
If you're happy to be:
Windows specific
Limited to the local domain
Seriously limited in the message size supported
Wrap the underlying win32 calls in P/Invoke
Deal with the polling yourself
Deal with the hacks needed to allow back and forth communication
Deal with the shared config needed to keep the names in sync
Then a quick wrapper around the windows MailSlot API might be sufficient.
This simple example is a reasonable basis to start.
This article has some further information but assumes the use case is via a control (rather than a Component as it should be) as well as some poor WinForms integration so should be considered for incidental reading rather than a basis for any library.
This article is C++ but is of a higher standard (and a commenter has extended it to support the batching of larger messages into several smaller ones).
You get 424 bytes (so with .Net 212 chars) you may want to drop to ASCII to double your useful message length if you are talking text.
Note that despite its simplicity, limitations and lack of features it does provide multicast delivery, something often complex to layer on a point to point protocol yourself.
This ayende post provides and interesting comparison of three service buses. We use NServiceBus and think if it's not clear that Udi Dahan would respond to how you'd plug in non-dependent queue.
We work using MSMQ happily but there are other options and in theory it should be open to practically anything, given that you may lose some reliability and durability depending on your choice.
Why not Amazon's message service Simple Queue Service?
We moved our projects from MSMQ to ActiveMQ. its really better :)
ActiveMQ is open source queue ,based on Apache web server.
We used him in production on high frequently data workflow, where msmq have a lot of problem (we work with msmq a year)
The csharp implementation is nms
I'm currently working on an open source WCF based service bus. You can find it here: http://rockbus.codeplex.com/. It supports dynamic (#run-time) subscriptions, subcription repository (database), pluggable transports, XPath based content-based routing, transactional delivery over wcf protocols, roundrobin delivery, pluggable subscription evaluation, and more. Have a look!
Have you thought about using a service like IronMQ by http://Iron.io?
You wouldn't have any dependencies, could quickly prototype apps without setting up any queue infrastructure, and it's highly available and fast.
There is not currently a locally installable version but it's based on the upcoming OpenStack protocol so there will be.
Btw I work for Iron.
Try https://github.com/mcintyre321/PieQ - this is my attempt to write a threadsafe, persistent, zero-config, embedded work queue. It probably needs a little love, but I think it might be the kind of tool you are looking for.
I have developed an InMemory JMS library which can be used to in testing JMS applications without really connecting to JMS providers/server (Think of hsqldb). You don't have to deal with connection or protocol or anything, all you need to do is to send and receive messages.
https://github.com/Dhana-Krishnasamy/InMemoryJMS