× The internal search function is temporarily non-functional. The current search engine is no longer viable and we are researching alternatives.
As a stop gap measure, we are using Google's custom search engine service.
If you know of an easy to use, open source, search engine ... please contact support@midrange.com.



Based on your previous posts my understanding of your situation is this: you have quite a lot of legacy code in COBOL and such like, you want to interface that with some nice web front end using a web app framework like Angular or React and you're looking for the middleware "glue" to join these two worlds. The glue you're looking at is potentially NodeJs and/or some .NET middleware. If I've understood correctly (forgive me if not) I can't help thinking that you might be over-complicating things a bit.

If you're going to be writing SPA's then just need to expose your application as a RESTful-type API which accepts and returns JSON and there are quite a few options for doing this. One question I'm not clear on is where you see your application code being written in future - I think I gleaned from your posts that you wanted your legacy programmers to be able to continue to be productive and you weren't planning to move your backend code from COBOL to .NET or NodeJs. If this is the case then your middleware just needs to be able to interpret the incoming web requests, execute the appropriate backend code and return the results, you don't necessarily need any complicated logic in there. You can write or find existing frameworks to run SQL, call native programs, access native IBM i objects etc. etc. but you can simplify this even further by using stored procedures because they provide a uniform, consistent and secure way to do any of the previous things. Then your middleware NodeJs/.NET layer just needs to wire the correct web service call to the correct stored procedure call and do the JSON transformation of the parameters and results coming in and out. You can take this a step further, as we have, and make the whole thing entirely generic, so that new stored procedures can be exposed directly over the RESTful(ish) API, then you don't need to change or write any code in the middleware layer when your COBOL programmers write some new functionality that your web app builders want to use.

The middleware to do the above is relatively simple to write, I would guess ours is just a few hundred lines of Java at most and although I haven't got around to porting it to NodeJs it would be easy enough to do (and I'm not convinced about the benefits of doing so at the moment anyway). I'm sure a .NET version would be easy to do too.


________________________________
From: WEB400 <web400-bounces@xxxxxxxxxxxx> on behalf of Kelly Cookson <KCookson@xxxxxxxxxxxx>
Sent: 09 April 2018 15:28
To: Web Enabling the IBM i (AS/400 and iSeries)
Subject: Re: [WEB400] ibm_db node module and IBM Data Server Driver

Hi Tim,

Maybe I'm misunderstanding this, but it seems you want to
have a .NET application use a NodeJs wrapper to call an ODBC
driver (via ibm-db) to access the IBM i? In which case why not
just have the .NET application use the Client Access ODBC
driver directly, surely this must be possible? Why involve
NodeJs/ibm_db at all?

Yeah, with the DB2 Connect license, probably no ROI on doing what I proposed.

The .NET Core framework includes JavaScript Services. JavaScript services allow .NET programs to use JavaScript running on node under the covers. There are two main parts of JavaScript Services. First, SPA Services allow .NET to use single page apps developed with React, Angular and some other libraries/frameworks. Second, Node Services allow .NET to use the various JavaScript libraries available through npm. I was exploring options to make use of Node Services to connect to the IBM i.

The general idea would be to have JavaScript developers who could:

1. Develop IBM i web services that run in node on the IBM i.

2. Develop single page apps or UI components for .NET apps (using JavaScript services).

3. Develop functionality for .NET apps using npm modules (using JavaScript services - here is where I was exploring the idea of connections to IBM i DB2).

4. Develop mobile apps using JavaScript frameworks like Angular (we already do this).
Not sure we our shop will do 1-3 above. I'm just exploring options.

Thanks,

Kelly Cookson
IT Project Leader
Dot Foods, Inc.
217-773-4486 ext. 12676
https://nam02.safelinks.protection.outlook.com/?url=www.dotfoods.com&data=02%7C01%7C%7C5232625a328345a35a1708d59e1de88a%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636588773641718515&sdata=TngyeFHzNZWWWMTVFPn888xHxWdA9KidiK7a4XF9WT4%3D&reserved=0<https://nam02.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.dotfoods.com&data=02%7C01%7C%7C5232625a328345a35a1708d59e1de88a%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636588773641718515&sdata=49kt51H6B1fmikNeoKhm5F8dKccYUG5JD1nl0DMj5qo%3D&reserved=0>

From: WEB400 [mailto:web400-bounces@xxxxxxxxxxxx] On Behalf Of Tim Fathers
Sent: Monday, April 09, 2018 4:29 AM
To: Web Enabling the IBM i (AS/400 and iSeries) <web400@xxxxxxxxxxxx>
Subject: [EXTERNAL] Re: [WEB400] ibm_db node module and IBM Data Server Driver

4. So, could a person do something like this?
a. A .NET Core web app uses Node Services to access the ibm_db node module.

Maybe I'm misunderstanding this, but it seems you want to have a .NET application use a NodeJs wrapper to call an ODBC driver (via ibm-db) to access the IBM i? In which case why not just have the .NET application use the Client Access ODBC driver directly, surely this must be possible? Why involve NodeJs/ibm_db at all?

c. This connection is then used for SQL against database tables and/or for calling CL and COBOL programs using stored procedures.

Personally I wouldn't allow SQL against the database, only stored procedure calls. One thing with the ibm_db driver, that I mentioned before I think, it that is doesn't support the retrieval of meta-data from the stored procedure result sets. This may or may not be an issue for you but for my framework this is a showstopper at the moment which is one of the reasons why I haven't ported of from Java to Node. If you cannot get the meta-data it makes it impossible to know what data-type each column is and therefore you can't use this information to transform or format the data correctly in a generic way.


________________________________
From: WEB400 <web400-bounces@xxxxxxxxxxxx<mailto:web400-bounces@xxxxxxxxxxxx>> on behalf of Kelly Cookson <KCookson@xxxxxxxxxxxx<mailto:KCookson@xxxxxxxxxxxx>>
Sent: 08 April 2018 20:34
To: Web Enabling the IBM i (AS/400 and iSeries) (web400@xxxxxxxxxxxx<mailto:web400@xxxxxxxxxxxx>)
Subject: [WEB400] ibm_db node module and IBM Data Server Driver

Hi,

I would like to pick people's thoughts on an idea.


1. I just came across the ibm_db node module at npm: https://eur03.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.npmjs.com%2Fpackage%2Fibm_db&data=02%7C01%7C%7Cf076ec661d0344b9d06b08d59d7f77ee%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636588093146178905&sdata=EF3xiaMapYby74ikImGZmnXtPV2ha4gjabos4MHpa8c%3D&reserved=0<https://eur03.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.npmjs.com%2Fpackage%2Fibm_db&data=02%7C01%7C%7Cf076ec661d0344b9d06b08d59d7f77ee%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636588093146178905&sdata=EF3xiaMapYby74ikImGZmnXtPV2ha4gjabos4MHpa8c%3D&reserved=0>. It looks to me like this will run in node on windows.


2. It also looks like the ibm_db node module can access DB2 on the IBM i, thanks to the IBM Data Server Driver for ODBC and CLI. (https://eur03.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.ibm.com%2Fdeveloperworks%2Fcommunity%2Fblogs%2Fpd%2Fentry%2Fusing_ibm_db2_from_node_js4%3Flang%3Des&data=02%7C01%7C%7Cf076ec661d0344b9d06b08d59d7f77ee%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636588093146178905&sdata=QFxpaERPQoWvjJuRNWg8k8DubO%2FgosJFygsBcVv9te0%3D&reserved=0<https://eur03.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.ibm.com%2Fdeveloperworks%2Fcommunity%2Fblogs%2Fpd%2Fentry%2Fusing_ibm_db2_from_node_js4%3Flang%3Des&data=02%7C01%7C%7Cf076ec661d0344b9d06b08d59d7f77ee%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636588093146178905&sdata=QFxpaERPQoWvjJuRNWg8k8DubO%2FgosJFygsBcVv9te0%3D&reserved=0>)


3. The .NET Core framework has something called Node Services. Node Services allows .NET apps to use node modules (using node on windows under the covers).



4. So, could a person do something like this?

a. A .NET Core web app uses Node Services to access the ibm_db node module.

b. The ibm_db node module uses the IBM Data Server for ODBC and CLI to connect to a DB2 database on the IBM i.

c. This connection is then used for SQL against database tables and/or for calling CL and COBOL programs using stored procedures.

I'm not suggesting this is our preferred option. It's not even on the table for consideration yet. I would like to get some expert insights first (of which this list is full, and truly appreciated). Where does the above fall down or bite us?

Thanks,

Kelly Cookson
IT Project Leader
Dot Foods, Inc.
217-773-4486 ext. 12676
https://eur03.safelinks.protection.outlook.com/?url=www.dotfoods.com&data=02%7C01%7C%7Cf076ec661d0344b9d06b08d59d7f77ee%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636588093146178905&sdata=xvOu50a2RHe949PW7Hl1FqQQsO8FWTttNnlEDwlOci4%3D&reserved=0<https://eur03.safelinks.protection.outlook.com/?url=www.dotfoods.com&data=02%7C01%7C%7Cf076ec661d0344b9d06b08d59d7f77ee%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636588093146178905&sdata=xvOu50a2RHe949PW7Hl1FqQQsO8FWTttNnlEDwlOci4%3D&reserved=0><https://eur03.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.dotfoods.com&data=02%7C01%7C%7Cf076ec661d0344b9d06b08d59d7f77ee%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636588093146178905&sdata=B2slnsVZVDR6aLumpA6uq1dzDsl0hMfbcHnnDmF0GZY%3D&reserved=0<https://eur03.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.dotfoods.com&data=02%7C01%7C%7Cf076ec661d0344b9d06b08d59d7f77ee%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636588093146178905&sdata=B2slnsVZVDR6aLumpA6uq1dzDsl0h
MfbcHnnDmF0GZY%3D&reserved=0>>

--
This is the Web Enabling the IBM i (AS/400 and iSeries) (WEB400) mailing list
To post a message email: WEB400@xxxxxxxxxxxx<mailto:WEB400@xxxxxxxxxxxx>
To subscribe, unsubscribe, or change list options,
visit: https://eur03.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.midrange.com%2Fmailman%2Flistinfo%2Fweb400&data=02%7C01%7C%7Cf076ec661d0344b9d06b08d59d7f77ee%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636588093146178905&sdata=yxT7ZNU%2BA8pXtpAm0GfnE9NogQ9n%2BoEo%2FuwucxHVrqo%3D&reserved=0<https://eur03.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.midrange.com%2Fmailman%2Flistinfo%2Fweb400&data=02%7C01%7C%7Cf076ec661d0344b9d06b08d59d7f77ee%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636588093146178905&sdata=yxT7ZNU%2BA8pXtpAm0GfnE9NogQ9n%2BoEo%2FuwucxHVrqo%3D&reserved=0>
or email: WEB400-request@xxxxxxxxxxxx<mailto:WEB400-request@xxxxxxxxxxxx>
Before posting, please take a moment to review the archives
at https://eur03.safelinks.protection.outlook.com/?url=https%3A%2F%2Farchive.midrange.com%2Fweb400&data=02%7C01%7C%7Cf076ec661d0344b9d06b08d59d7f77ee%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636588093146178905&sdata=4JxkDh%2BXUquzP%2FGnjqgsdG%2F6UpgiXEY4VWX98XF%2BEGY%3D&reserved=0<https://eur03.safelinks.protection.outlook.com/?url=https%3A%2F%2Farchive.midrange.com%2Fweb400&data=02%7C01%7C%7Cf076ec661d0344b9d06b08d59d7f77ee%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636588093146178905&sdata=4JxkDh%2BXUquzP%2FGnjqgsdG%2F6UpgiXEY4VWX98XF%2BEGY%3D&reserved=0>.

--
This is the Web Enabling the IBM i (AS/400 and iSeries) (WEB400) mailing list
To post a message email: WEB400@xxxxxxxxxxxx<mailto:WEB400@xxxxxxxxxxxx>
To subscribe, unsubscribe, or change list options,
visit: https://nam02.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.midrange.com%2Fmailman%2Flistinfo%2Fweb400&data=02%7C01%7C%7C5232625a328345a35a1708d59e1de88a%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636588773641718515&sdata=o0ljXdlBhXg7BbahacXN9PFTnpWJVLMUx%2FtMuxwqkcY%3D&reserved=0<https://nam02.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.midrange.com%2Fmailman%2Flistinfo%2Fweb400&data=02%7C01%7C%7C5232625a328345a35a1708d59e1de88a%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636588773641718515&sdata=o0ljXdlBhXg7BbahacXN9PFTnpWJVLMUx%2FtMuxwqkcY%3D&reserved=0>
or email: WEB400-request@xxxxxxxxxxxx<mailto:WEB400-request@xxxxxxxxxxxx>
Before posting, please take a moment to review the archives
at https://nam02.safelinks.protection.outlook.com/?url=https%3A%2F%2Farchive.midrange.com%2Fweb400&data=02%7C01%7C%7C5232625a328345a35a1708d59e1de88a%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636588773641718515&sdata=UCETsQyOIivJskkNNYjkuM9Dd8JUtnsDGYIoSwwNpbc%3D&reserved=0<https://nam02.safelinks.protection.outlook.com/?url=https%3A%2F%2Farchive.midrange.com%2Fweb400&data=02%7C01%7C%7C5232625a328345a35a1708d59e1de88a%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636588773641718515&sdata=UCETsQyOIivJskkNNYjkuM9Dd8JUtnsDGYIoSwwNpbc%3D&reserved=0>.
--
This is the Web Enabling the IBM i (AS/400 and iSeries) (WEB400) mailing list
To post a message email: WEB400@xxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: https://nam02.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.midrange.com%2Fmailman%2Flistinfo%2Fweb400&data=02%7C01%7C%7C5232625a328345a35a1708d59e1de88a%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636588773641718515&sdata=o0ljXdlBhXg7BbahacXN9PFTnpWJVLMUx%2FtMuxwqkcY%3D&reserved=0
or email: WEB400-request@xxxxxxxxxxxx
Before posting, please take a moment to review the archives
at https://nam02.safelinks.protection.outlook.com/?url=https%3A%2F%2Farchive.midrange.com%2Fweb400&data=02%7C01%7C%7C5232625a328345a35a1708d59e1de88a%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636588773641718515&sdata=UCETsQyOIivJskkNNYjkuM9Dd8JUtnsDGYIoSwwNpbc%3D&reserved=0.


As an Amazon Associate we earn from qualifying purchases.

This thread ...

Follow-Ups:
Replies:

Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].

Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.