Creating an OPC Server C# - c#

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.

Related

Solution for WebRTC mediaserver

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.

C# .NET AS2 communication

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.

Recommendations for .NET cloud service provider

Apologies for the vague question, I am looking for pointers rather than exact answers. I have an application I am developing in Silverlight which requires some back-end persistent data. I can certainly do this myself using IIS / SQL Server, but I am eager to learn something new!
Are there any suitable, free, cloud services I could use? A bit like Google App Engine, but preferably allowing me to use the .NET stack, e.g. via a WCF connection to my client.
As this is just for learning purposes I don't have many requirements regarding data volumes etc, however, it would be nice if I could run some scheduled services on my data in the cloud, e.g. some statistics calculations every hour.
Any pointers?
You can get Azure free for 30 days here. If you have a premium/ultimate MSDN subscription, you can get Azure free for 8 months.
if it's only a test and you do not expect high volume you could do with Windows Azure and SQL Azure, at least you learn how to deal with leading products and if afterwards you decide to develop something more commercial, you will reuse the know how. I do believe for testing reasons or low volume you should get it either for free or extremely cheap.
Try EyeOS. You can go for the trial version and test your applications.
Others are
icloud
Cloudo
Force

NDIS Intermediate driver interface to C#

I'm developing what is essentially a specialized firewall application. The solution needs to be 32 and 64-bit compatible. My company wants to keep the current program interface, which is written in C#.
What I need is this: a way to monitor and manipulate all network traffic on the system. My research has led me to believe that a NDIS (Network Driver Interface Specification) Intermediate driver is the way to go. If I can write this kind of driver in C#, great, but I'm not sure that's possible. At the very least, I need an interface in C# to a driver written in any language.
I found a great resource online for creating one in a series of articles entitled "Extending the Microsoft PassThru NDIS Intermediate Driver":
Part 1 - Adding a DeviceIoControl Interface
Part 2 - Two IP Address Blocking NDIS IM Drivers
Part 3 - Supporting Windows XP 64-Bit Edition
However, it is dated (2003). Before I invest in reading and learning what it has to say, I want to make sure I'm not wasting my time.
Is there a better way to do this? Are there any open source projects or articles that explain the process better than the articles above? Am I even in the ballpark? Help please.
There's another page from the same author, titled Windows Network Data and Packet Filtering, which provides "a brief introduction to various techniques that can be used to filter network data and network packets on the Microsoft Windows platforms".
It mentions others options, e.g. "TDI flter driver" and "User-Mode Network Data Filtering", which may suit instead, depending on whether you really want to manipulate all the network traffic on the system.

Choosing a Platform C#/MsSql or Php/Mysql or JSP or what?

It seems like there are an inordinate number of really intelligent people here, so I thought it was the best place to ask a couple involved questions (shameless flattery). Your feedback on any item would be so appreciated.
I am about to develop a very large web based operations, inventory, sales management system. I had intended on C#/MsSql/Reporting, but am now leaning towards Php/MySql.
Multiple facility support. I
would love to have it all run from a
single place, but I need for each
facility to be able to run
autonomously from each other in case
of internet connectivity loss.
Servers could reside in each
facility and replicate to a central
one. MS Replication will hang the
DB for large databases. MS
recommendation to restructure the
database into smaller
segments…thanks. MySql seems to
have very solid replicability
features. Thoughts on this issue?
Distribution: Eventually this could be marketable
to other companies in the industry.
Using the method above I would have
to distribute the system to my
server in the customer’s facility.
With C# I can distribute compiled
code. With PHP any intellectual
property is vulnerable.
Reporting. Will I be able to print labels and
really specifically configured
reports with PHP? Pdf export is a must. MsSql has the
reporting service, but it has issues
with PDF font embedment, the
flexibility is very time consuming
and I am thinking that building it
all by hand might be faster. MS
print control also seems problematic.
Cost. Load would probably not ever exceed 100
simultaneous hits. Full Ms server
licensing is cost prohibitive.
Would sql express support this load?
MySql cost structure is very
appealing.
Thanks in advance for your insight. Sorry for the book.
As with most software, the biggest cost factor is almost certain to be developer time.
That in mind, you should go with whatever your team can get up and running in the fastest. Both of the stacks you are suggesting can get the job done.
(although I'm sure someone will be along in a minute to slate PHP and suggest you use C#/the MS Stack)
To answer the other points from a PHP perspective, which is what I know best:
Replication in mysql will do what you want, but make sure you set up something to let you know if there are problems.
You can use Zend_Guard to compile PHP, it costs though. PHP 5.3 is due for release soon and includes Phar archives - a shameless copy of java's jar archives so that you can distribute an app as a single file.
PHP can do PDF via fPDF. Never used the MS options, so not sure how it compares here.
I think sql server express could do that load, and mysql could too.
Adding point 2 with point 4 if you're intending to sell, you should think that, although in your company it won't exceed 100 simultaneous hits, in the companies your going to sell to it can exceed 10000 hits. So you should think about scalability now
As it is an application with massive size for what you say, you should expect in the future to have someone wanting to communicate with it, excluding php, for jsp or c# so you can make web services if needed.
PHP won't also allow so much distribution as C# or JSP.
3 - Reporting You can do that with any of those languages.
I think in the end is pretty much up to what you know to handle better. I would go for a language i already know instead of hitting a new one. That way you'll minimize deployment time, which is probably very important also.
For database i think you can get mysql or posgresql as they are both free, and will lower your costs.
Hope it helps :)
"I am about to develop a very large web based operations, inventory, sales management system." - this is a very ambitious undertaking. Are you doing this for fun, education, or profit? Do you intend to sell or open source this?
You realize, of course, that there are a lot of alternatives already in the marketplace. What advantage will yours have over the others?
Sounds like a classic buy versus build choice. Have you considered the buy before building?
It sounds like you prefer C# and MySQL. MySQL has several articles on using .NET with MySQL and the Connector/NET driver.
Unfortunately, I know very little about reporting with MySQL.

Categories

Resources