I like to ask for some guidance on this topic of sending and receiving files via AS2 or AS3 communications protocol via a .NET C# implementation. I have search for examples or explanation of how you would implement this communication layer to send and receive EDI documents as well as other types of documents. I have built my own EDI document generator and reader. It's linked to my eCommerce systems. We have been working with VCommerce and CommerceHUB for a number of years. What i can't seem to find much information on is an implementation of what the communication layer looks like for AS2. I realize the second part to all of this is the generation of certificates for encryption and decryption but I think I have an idea on how to implement that or just create the certificates manually if possible. Can you guys point me to anything that can either show me an example of the standards to use to send the HTTP message or something like that? I have used the /n Software for the communications part up until now but I would really like to do this myself so that its 100% integrated. For anyone who needs just the server they are great and worth the cost. Very stable and easy to implement. For me I have grown beyond being able to use them and need to build my own.
Thanks so much for any help.
The specification is an open standard as Porges commented. You are reinventing the wheel, just like with your EDI translator. Perhaps there is no budget for a software tool that does the work for you? I'd be interested in what your "reader" looks like. Does it compare to EDI Notepad (a free EDI reader from Liaison)?
If you feel /n is not scalable, there are many other MFT / integrated products that are. Were you aware that there was an AS2 certification process by the Drummond Group (http://www.drummondgroup.com/index.php/b2b-certified-products/certified-products/as2)? Some partners require Drummond Certified AS2 connections (although not as much as there were in years past as Wal-mart dropped the requirement).
What are you going to do for certificate management? Integrate with Windows (which handles certs poorly IMO), or build your own? Partner management / AS2 names / Connections? Are you going to build functionality to handle both synchronous and asynchronous MDNs? What about error trapping / emailing users of errors? Seems to me there's a reason these commercial software platforms exist that do all of this functionality already. The time you spend building the tool is going to cost just as much or more to buy something that already works.
Products I've used that I've been able to 100% integrate into my platforms through the years:
Cleo Lexicom is scalable, and cost effective.
Liaison ECS offers unlimited partners (but requires SQL Server)
Axway Synchrony Interchange is flexible
Try \n Software's http://www.nsoftware.com/ibiz/edi/
I used this to build services into a commercial file exchange application, and I've seen at least two of my favorite competitors use it to build ASx services into their commercial applications too.
Related
I'm trying to dig up information on creating an OPC server to connect a piece of software to an OPC network.
Essentially my customer has hardware connected to an aggregation software, we gather aggregate data from that software's SDK and now the challenge is to make that available to OPC.
There seems to be lots of options all of which are poorly documented online unless you pay to get into their eco systems or they are focused on you buying their specific server implementations. I am happy to pay for a licence but I'm trying to work out what I'm getting into.
I've checked out:
https://opcfoundation.org/ (seems my company needs to be a member to use the examples)
https://www.matrikonopc.com/ (seems the generic server toolkit is EOL)
http://www.opcconnect.com/freesrv.php (looked through the options there which range from pay to even investigate to ancient or poor quality open source)
Are there free options to explore the possibilities and effort involved in coding up a server?
What are the best paid (or free) options to get the job done quickly?
Should we just bite the bullet and buy into an eco system?
Your are right, to use Foundation libraries for commercial use the company must be a member and pay an annual fee.
Take a look to https://www.unified-automation.com/ they have online documentation about their OPC SDKs, and I believe they have demo versions
Another free option but written in Ansi C is open62541.org
... and I agree with you about downvoters, at least they should explain why they do it.
I would like to consultate what is the best solution for mediastream server(WebRTC) that can fulfill my needs.
What I need:
Easily manage 50+ connections. Ability to switch who is hearing whom, and who is talking to whom.
Clients should have only one WebRTC connection. Which is going to server. Server then again, control what he is hearing, and to whom he is talking to..
That is basically my needs. I prefer languages like C# and NodeJS.
I looked at kurento, which seems to have kinda bad documentation, and it uses Java which I am not familiar with.
Any alternatives, suggestions?
Thank you.
The whole point about webRTC is that it's peer to peer, and doesn't need a server (except for the initial signalling).
The beauty of this is that you can scale to handle as many connections as you like. The performance is only limited by the client browsers and their connection speed.
You only need a media server if you need to do video conferencing for more than one or two users on the same call.
Writing a video conferencing server is a big deal, it's a complex problem to solve, and I would recommend starting with an existing open source project as your base. If you go down this path, you will need some serious hardware and bandwidth, because the server will be handling each and every video stream, and need to be scalable.
This article lists 6 open source projects that may fit your needs: https://elearningindustry.com/top-6-open-source-web-conferencing-software-tools-elearning-professionals
Top Open Source Web Conferencing Software Tools eLearning
Professionals Should Know About
While there are plenty of open source web conferencing tools available
these days, there are also a number of budget-friendly alternatives
that still offer the same features and functions. In fact, open source
web conferencing software offers you the opportunity to host virtual
training events, collaborate with colleagues, and offer learners
personalized support without paying hefty monthly fees.
I am going to write Windows application (for commercial use) which will send/receive and trace CANopen messages.
The problem is I don't know what devices will be used by users of this app.
Currently I have one requirement to support only USB-CAN devices.
However there is many vendors of such devices and everyone has other api/library/dll to use theirs devices.
(By the way, the problem is because I have to use Windows.
As I know on Linux is SocketCAN and everything is more standardized :-()
I don't know which library should I use. Could you recomend me something.
Of course this library should support as many vendors (and drivers) as possible.
Second requirement is this library shall compile to IL or somehow I can use this library in my C# application.
I have done small research:
The most popular is CAN Festival but it is abandoned project, however there is a few forks.
There is CANopen for .NET
But support only PEAK devices and state is prealpha
CANopen for Python
Support more devices but state is also alpha and I don't know if I can use this library in my c# application. Maybe when I use IronPython.
I also found this library: http://www.emtas.de/en/allgemein/csharpapi. It is commercial, but If support many devices I can buy It. Anyone has used it before??
We are using and have licensed the Swedish datalink.se CANopen library and it works very well for us. But honestly we are only using the CAN interface driver layer on Windows, for accessing a range of devices like Lawicel, Kvaser, IXXAT a.s.o. I haven't looked at the CANopen parts so much.
I looked at other CANopen SW stacks, too, back then, but like you I wasn't happy about CAN Festival. So what we do in our Kickdrive software is that we implemented just the amount of CANopen that we really need. See my answer in the post How to program a simple CANopen layer.
Depending on what are your actual requirements, this might be good enough already, or even the best approach.
Could you people please give some good resource / ideas of implementing VOIP in c#.net, Asp.net or Java.
Why I am specifying 2 different language platforms is we are yet to take up a call.
Basically we don't have the idea henceforth the concept is more important to us.
We are going to make a White board application and one of the client requirement is
White board should have VOIP
conferencing, chat image sharing and
ability to upload .pdf files
I reckon your looking into developing software like orange business webex or something similar. The software is not too difficult to develop. First, are you planning to write the entire application yourself or just purchase the components and integrate ? I would recommend you shop around for components and just integrate because VOIP is rather complex.
Here is a link for SIP communicator in java which supports VOIP
Doing simple point-to-point VOIP isn't too difficult. Basically, you need a codec on each end, and then typically use UDP to send encoded packets from one end to the other.
There can also be network connectivity issues, particularly related to NAT.
If you want to interoperate with existing VOIP-based systems, then you will need to support one of the underlying connection protocols, such as H.323, and you may also need monitoring and control over RTP. Those protocols are notoriously complex.
There are a bunch of tricks to play when doing this kind of thing with a managed language like C# or Java, particularly related to avoiding hiccups due to GC.
A link to a few more Java VOIP projects/components:
http://voip.dev.java.net/
One "gotcha" to beware of, in terms of future functionality, is that Java's (as opposed to JavaFX's) video support is something of an open question at the moment.
I have two programs. One is in C# and another one in Java.
Those programs will, most probably, always run on the same machine.
What would be the best way to let them talk to each other?
So, to clarify the problem:
This is a personal project (so professional/costly libraries are a no go).
The message volume is low, there will be about 1 to 2 messages per second.
The messages are small, a few primitive types should do the trick.
I would like to keep the complexity low.
The java application is deployed as a single jar as a plugin for another application. So the less external libraries I have to merge, the better.
I have total control over the C# application.
As said earlier, both application have to run on the same computer.
Right now, my solution would be to use sockets with some sort of csv-like format.
I am author of jni4net, open source interprocess bridge between JVM and CLR. It's build on top of JNI and PInvoke. No C/C++ code needed. I hope it will help you.
Kyle has the right approach in asking about the interaction. There is no "correct" answer without knowing what the usage patterns are likely to be.
Any architectural decision -- especially at this level -- is a trade-off.
You must ask yourself:
What kind of messages need to be passed between the systems?
What types of data need to be shared?
Is there an important requirement to support complex model objects or will primitives + arrays do?
what is the volume of the data?
How frequently will the interactions occur?
What is the acceptable communication latency?
Until you have an understanding of the answers, or potential answers, to those questions, it will be difficult to choose an implementation architecture. Once we know which factors are important, it will be far easier to choose the more suitable implementation candidates that reflect the requirements of the running system.
I've heard good things about IKVM, the JVM that's made with .NET.
Ice from ZeroC is a really high performance "enterprisey" interop layer that supports Java and .net amongst others. I think of it as an updated Corba - it even has its own object oriented interface definition language called Slice (like Corba's IDL, but actually quite readable).
The feature set is extensive, with far more on offer than web services, but clearly it isn't an open standard, so not a decision to make lightly. The generated code it spits out is somewhat ugly too...
I realize you're talking about programs on the same machine, but I've always liked the idea of passing messages in XML over HTTP.
Your server could be a web server that's ready to accept an XML payload. Your client can send HTTP messages with XML in the body, and receive an HTTP response with XML in it.
One reason I like this is that HTTP is such a widely used protocol that it's easy to accept or create HTTP POST or GET requests in any language (in the event that you decide to change either the client or server language in the future). HTTP and XML have been around for a while, so I think they're here to stay.
Another reason I like it is that your server could be used by other clients, too, as long as they know HTTP and XML.
I used JNBridge (http://www.jnbridge.com/jnbpro.htm) on a relatively simple project where we had a .NET client app using a relatively significant jar file full of business object logic that we didn't want to port. It worked quite nicely, but I wouldn't say we fully exercised the capabilities of JNBridge.
I am a big fan of Thrift an interoperability stack from Facebook. You said they code will probably run on the same machine so it could be overkill but you can still use it.
If they are separate programs and running as independent applications,you may use sockets. I know it's bit complex to define communication protocol but it'll be quite straight-forward.
However if you have just two separate programs but want to run them as single application, then I guess IKVM is a better approach as suggested by marxidad.
It appears a very similar question has been asked before here on stack overflow (I was searching Google for java windows shared memory):
Efficient data transfer from Java to C++ on windows
From the answer I would suggest you to investigate:
"Your fastest solution will be memory
mapping a shared segment of memory,
and them implementing a ring-buffer or
other message passing mechanism. In
C++ this is straight forward, and in
Java you have the FileChannel.map
method which makes it possible."