What technology is used to build the web services? Is it available in VS2010?
Printable View
I don't think JavaScript is going to be as avoidable as in the past, at least for a while.
It has simply been making too many inroads into realms that used to be dominated by compiled languages, Java, or .Net and that era may be largely over.
If something else comes along and gets wide adoption that may change but I don't see a contender yet. Google's Dart was close but never saw wide adoption and JS processors (you can't say interpreters anymore, so many either JIT or AOT compile now and have improved GC) are outstripping it in performance.
They run in IIS - so basically it is an ASP.Net project
Look like this
Called like this from JS in my caseCode:Option Strict On
Option Explicit On
Imports System.Web
Imports System.Web.Services
Imports System.Web.Services.Protocols
Imports System.Web.Script.Services
Imports System.Web.Script.Serialization
Imports System.Data
.
.
.
Imports DocumentFormat.OpenXml
Imports DocumentFormat.OpenXml.Packaging
Imports DocumentFormat.OpenXml.Spreadsheet
<WebService(Namespace:="AWCService")> _
<WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)> _
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
<System.Web.Script.Services.ScriptService()> _
Public Class WebService
Inherits System.Web.Services.WebService
Dim g_prmSP As New Dictionary(Of String, SqlParameter())
Dim fileWrtr As System.IO.StreamWriter
<WebMethod()> _
<ScriptMethod(ResponseFormat:=ResponseFormat.Json, UseHttpGet:=False)> _
Public Function AddService(ByVal toddtype As String, ByVal fromddtype As String, ByVal fromwho As String _
, ByVal choice As Integer _
, ByVal objReturn As Dictionary(Of String, String) _
, ByVal addkey As String _
, ByVal username As String) As String
'Return "<b>This is the content of resource <tt>someResource</tt></b>"
Dim credDB As String = ""
If username.Contains(":") Then
credDB = username.Split(":"c)(0)
username = username.Split(":"c)(1)
End If
Code:$.ajax({
type: "POST",
url: "WebService.asmx/" + strService,
dataType: "json",
data: strWebParam,
contentType: "application/json; charset=utf-8",
success: function(msg) {
fncFinished(msg, sender, objWebParam);
},
failure: function(msg) {
fncFinished(msg, "failure", objWebParam);
},
error: function(msg) {
fncFinished(msg, "error", objWebParam);
}
});
ah ok, so you are using ASP.NET, to perform services, just not used for the web-page piece (or so it looks like) I was a little confused there. What tool would you build your page in to host the JS functions? The only thing I have seen is the basic web-forms project in VS2010. I am guessing your response is going to say "any tool that can consume the web service can be used". This seems a bit much, I would think that browser is the best bet to target a wide array of devices. When we talk about .NET becoming deprecated, unless I am misunderstanding, why are we saying that ASP.NET is losing relevance if the services are being built on it? Or do we mean the web-pages as a method of consuming the service? If ASP.NET has no more relevance, then what are we building the sites with?
Or you can do the server side in Node.js or something just as well.
Does that mean, your into UI/web development right now? But you haven't stepped away from exploring recent versions SQL Server are you? :)Quote:
I code nearly 100% of my time in JS - I'm not coming back to it occasionally. My web app is 10,500 lines of JS right now.
The flexibility in the development in JS of it is just perfect as long as you are a careful coder. I spend a lot of time in FireBug checking code by stepping through it. That's a habit from 30 years of coding - dozens of languages - and with JS it really helps. Write a new function - run the app - set a break point - see if I nailed it.
But regardless, my job as a programmer has always been really simple and consistent. I grab data - place it on a visual display - allow user to alter said data - and then I accept changes back to the database.
A major part of this is the CRUD - CREATE, READ, UPDATE and DELETE code - and it's the same in all languages. Some derivation of SQL and SPROCS or whatever you use.
The VISUAL DISPLAY part is where your options come in. JS is designed to managed the DOM of HTML. HTML, imo - is hands down the best way to talk to a visual display. It's got all the features you need for a fluid UI.
XAML is second, IMO - in this regard.
I feel that VB6 and VB/C#.Net only do clunky UI's - not very fluid at all.
I launch a small HTML page - which pretty much loads the scripts and then starts performing AJAX calls to login and pull down more HTML or other JSON strings that help build the HTML further.
You never leave the page - the page continues to make AJAX calls and build up further and further.
I should also point out that once I started working with Android devices they simply call these same web methods from the Java code of an Android app.
But in reality the server side can be switched out easily - it's just a layer that passes DATA back and forth from stored procedures. Although I see .Net being relevant as a web service layer between WEB and SQL
We currently use VS2013... but this dates back to VS2008.
Yup... pretty much. It's some pretty cool stuff. Even cooler is that because of our platform, I rarely have to get into the HTML or JS.
Correct, we're just using the web-service part of it... not for the pages. the pages are build dynamically by the services, then a JS controller takes the emitted HTML and stuffs it back into the page.
In our case, we do have different pages, but each one is designed for a specific use, like Dashboards, Navigational Areas, detail pages, list pages, process... etc.
-----
The platform is the webservice portion of it... for those basic blocks, there are aspx pages... so we are talking about maybe a couple dozen. then with that platform in hand, and the accompanying SDK, we're able to build some pretty complex forms. Best part is we do it all through SQL, XML, and VB (or C# if we're feeling a bit feisty). So what we end up with is a few dozen webservices, and a couple hundred DLLs and a nice collection of HTML and JS files.
We use the XML files to define what should be on the page, what's editable, etc. we can then let the platform render it by default. Or, we can then attach an HTML file to it to fine tune the layout, such as displaying in columns or tabs, or a different order of the fields. If we need even more functionality, depending on what it is, we tinker with the VB code... or we add a js file and tinker with it on the client side. So far I haven't run into much wehre I've needed to do that.
-tg
Basically you re-wrote ASP.Net to work the way you want - as I did myself (I am a small ISV)
I'd post some links to what we do, but I never know if I'm inside the network or not... but if anyone wants to check it out: http://www.blackbaud.com ... we have several products, the one that uses the framework I was talking about is our CRM solution.
Debugging can be a pain sometimes though. Especially when the problem is buried deep in the platform code.
-tg
So when the page is being built by the service is that automatically done for you or do you have to create some sort of template to fill the data? My example (probably terrible, remember I am barely a web-guy, I do a lot of winforms) would be lets say you have to query for data, and you want to return an html table filled with the queried data. You send a command to the web service, which runs a stored procedure and returns back this generated html table filled with the data. Was this html pre-determined by you or is there some existing framework (for example) that would just generate the table based on the parameters given? Also, how do you tie this into VB? How do you render the html? With a web browser control?
Sorry to harp, I have become fascinated. I would love to dive into this, the issue is that my job prefers desktop development instead of using servers because they have limited mainframes that do select jobs already, but to extend those mainframes costs money and in the business of maintaining accounts rather than driving new accounts, no ROI means no funding. This means I don't get to play much (yet) with anything involving servers.
The data is returned from the WEB METHOD in JSON or XML format. I prefer JSON - it's easily worked with in JavaScript. The HTML is built from the JSON (which is pure data from the SPROC call) and "injected" into the DOM. The jQuery library allows me to effortlessly create new HTML and put it wherever it want it to show up.
Here's a screen shot - those ACCORDIONS down the left side and those BUTTONS up top all get built from JSON returned from the DB (after my LOGIN method lets them get through).
Here is the SPROC data that determines all that - called once when the page load - you will see some JSON in the SQL columns - that's needed by the jQuery library to determine icons for buttons and such.
And this is some JS code using the jQuery library to build the buttons (this snippet does that).
It CLONES blank buttons from a hidden part of the initial HTML page and INSERT's or PREPEND's them (based on first button or subsequent button). With jQuery you add "classes" (styles) to HTML elements so you can find them and work them later - very much like you might with .TAG property of controls.Code:case "acs-operator":
switch (value[0]) {
case "button": /* 1:id, 2:options, 3:ddtype, 4:tooltip */
var options = value[2]; /*$.parseJSON(value[2].replace(/~/g, '"'));*/
var droppableoptions = {};
droppableoptions.drop = dropOn;
if (!$("#acs-operator").children().hasClass("acs-operator-button")) {
$("#acs-button").clone().prependTo("#acs-operator").removeAttr("id").attr("id", value[1])
.button(options).attr("title", value[4] || "")
.data("ddtype", value[3]).addClass("acs-operator-button").addClass("acs-operator-button-event")
.droppable(droppableoptions);
} else {
$("#acs-button").clone().insertAfter("#acs-operator .acs-operator-button:last").removeAttr("id").attr("id", value[1])
.button(options).attr("title", value[4] || "")
.data("ddtype", value[3]).addClass("acs-operator-button").addClass("acs-operator-button-event")
.droppable(droppableoptions);
}
$("#" + value[1]).clone().appendTo("#acs-button-list").removeAttr("id").attr("id", "acs-button-list-" + value[1])
.data("ddtype", value[3]).removeClass("acs-operator-button")
.removeClass("ui-button-text-icon-primary").addClass("ui-button-icon-primary")
.children(":last").remove();
break;
}
break;
W/o getting into IP or propriety stuff... it works like this:
For a query, we have two options... a DataList or a QueryView... They're very similar but have some differenciating functionality. So using the SDK template, I build a specification file:
xml Code:
<DataList Name="Some Name" ID = "some guid value" Description="a description"> <SQLProcedure> <![CDATA[ And here I'd put a Create Procedure sproc that selects and returns the data I need ]]> <Fields> <Field ID="Name of field from sproc" Caption="The header" DataType="the SQL Datatype for the field" Hidden="I can hide fields if I need to" /> ... </Fields> </DataList>
when that is rendered, it is rendered through the the datalist webservice... how it renders is then up to the webservice. there are some fine tuning issues I can control through the metadata in the XML, such as pagination, or export options.
Once I have that Lego block built, I can then use it in other specification files by including the list's ID and the appropriate tag.
For forms, such as data entry, it's a little more complicated, but similar process. With that, we can define an optional pre-load method, to get some initial data from the database, then define the save routine... then list out the files... then optionally define an HTML file and a handler DLL which handles events raised by elements on the form (buttons, changing of fields, etc).
That all said, the platform part, it largely a black box to me. I just know how it works based off of what I feed it. Nice thing about it being largely XML-based & SQL-based... if I need to add a field to an existing out of the box form... I just write an extension... it's almost like inheriting the form.
-tg
All I can say is there is big scary world outside my winforms :eek:
Is the IDE intellisense for JS as good as VB.NET?
It's not "that good" if you mean all the gadgets but Firebug is doing a decent job and the intelli on JS is build to support a stateless model,so i don't think you can really compare. And anyhow you get to see that cool data transfer requests live, something that i don't think you can do(?) in the VB.NET intelli :)
How do you manage this ? Do you just have a bunch of .js files with a tonne of methods or do you have some system or tool to neatly organize in a hierarchical manner ? My brief adventure into JavaScript left me with a tonne of code with no particular organization. With limited intellisense support and no classes or namespaces it was a major pain trying to find where I did what. Reminded me of BASICA where a whole program would be one long piece of text like an essay. I couldn't imagine having to maintain 10K lines of JavaScript this way.
I actually have it as a TEXT SCRIPT in the initial page to FORCE a new load every time the person logs in.
Internally I have a lot of classes that manage operations. So things are easy to find because I follow good OOP techniques.
Plus I do thorough debugging in FB so I follow code when it runs...
See that's the thing. In VB.Net I can organize large apps into classes with similar functionality grouped together. I even use folders as a grouping when there are too many class files so everything is neatly organized into a hierarchical manner which makes it quite easy to find specific things. But JavaScript as far as I know doesn't allow you to define classes. Sure you can create objects with its duck typing capability but statically defined classes provides a measure of order to code.
First class functions look like classes to me. This one is a sequencer class - in charge of making a new "sequence" number for a particular purpose of which we will have several different purposes.
And here I am initially creating three of them "globally" (instantiated would you call it). If global bothers you - since JS embraces "closure" I could simply include a reference this in a on-the-fly function creation (lambda in .Net?) and it's scope lives on possibly forever - what control!Code:var serial_maker = function() {
var prefix = '';
var seq = 0;
return {
set_prefix: function(p) {
prefix = String(p);
},
set_seq: function(s) {
seq = s;
},
gensym: function() {
var result = prefix + seq;
seq += 1;
return result;
}
};
};
And then we use them in some call back function from the return of some AJAX - so we have async firing happening haphazardly. He I am applying a CSS style that is made up of one of these sequencers to all the elements that are involved in a SELECT-async callback to my web methods.Code:var seqEditPanel = serial_maker();
seqEditPanel.set_prefix('acs-seqEditPanel-');
var seqDropDown = serial_maker();
seqDropDown.set_prefix('acs-seqDropDown-');
var tabOrder = serial_maker();
tabOrder.set_prefix('');
So that was a really simple one.Code:var strSeq = seqEditPanel.gensym();
wesEP.find('[class^=awc]').addClass(strSeq).addClass('acs-input-field');
Now - I've been using SlickGrids (best grid ever - seen nothing like it anywhere in .Net or ever VB6). Available on the internet for a download - and it's a SINGLE .JS file (actually a few with editors and such broken up). You reference them in your page - that's just like any other language.
And they are used like this:Code:<script src="Scripts/slick.core.js" type="text/javascript"></script>
<script src="Scripts/slick.editors.js" type="text/javascript"></script>
<script src="plugins/slick.rowselectionmodel.js" type="text/javascript"></script>
<script src="Scripts/slick.grid.js" type="text/javascript"></script>
<script src="Scripts/slick.dataview.js" type="text/javascript"></script>
I retain reference through them by adding them into an array. $(strPanel) is the jQuery way to reference what HTML element you are hanging the SlickGrid on. The objGrid object comes back from my AJAX web method call (async of course - I could have dozens running at a time and they all know where to arrive at and connect to). The .source element of objGrid is an array of rows of data for the SlickGrid. The .columns and .options items should be obvious.Code:try {
g_objGrid[intGO] = new Slick.Grid($(strPanel)
, objGrid.source
, objGrid.columns
, objGrid.options);
} catch (e) {
errorMessage("makeGrid", e);
}
finally {
}
Look at this link - it's a cool grid: https://github.com/mleibman/SlickGrid/wiki/Slick.Grid
So one day I decide I want to "allow" filtering of rows. All I had to do was make this really neat "class" and expose a .get_source() method that returns an array.
In order to pass through original .source array I do thisCode:g_objGrid[intGO] = new Slick.Grid($(strPanel)
, g_GMWorker.get_source()
, objGrid.columns
, objGrid.options);
Keep in mind we can have dozens of open SlickGrid all over the web page (hidden or active or whatever) - so we have lots of g_GMWorker (of the Grid_Maker class).Code:g_GMWorker.set_source(objGrid.source);
Grid_Maker looks like this:
The i_XXXXX functions are "private" to each instance of the Grid_Maker class. See below - they are all hidden "above" the RETURN which hands out a bunch of public methods. The load: method will take a saved "filter" (I save them in the DB) and allow the user to re-run it. The get_source: and set_source: methods do the jobs noted above in exposing the "filtered" rows to the SlickGrid. Notice that set_source is calling the "private" i_set_source function. I could actually - at any time - replace the get_source function for a particular instance of one of these - even injecting it into the page with the cool EVAL function - maybe getting it from a call to the DB.Code:var grid_maker = function () {
var gmOffset = -1;
var gmNameSeq = 0;
var windowOn = false;
var parentInfo = {};
...
var i_set_output = function () {
...
for (i = 0; i < .gmSource.sourceOrig.length; i++) {
if (gmProperties.filterApply) {
...
incRecord = true;
...
if (incRecord) {
gmSource.sourceOutput.push(gmSource.sourceOrig[i]);
}
}
};
...
Code:...
var i_examine = function (o) {
...
}
return {
load: function (i, o) {
var loadOffset = -1;
var foundFId = false;
...
return loadOffset;
},
...
get_source: function () {
return gmSource.sourceOutput;
},
...
set_source: function (a) {
gmSource.sourceOrig = a;
i_set_output();
gmProperties.lastfilter = "";
gmProperties.messagepump.push("Initial Row Count: " + String(gmSource.sourceOutput.length) + " (All rows included)"); // in filter)");
return true;
},
...
};
};
Look at this link with a discussion of the NEW keyword - which you will see I did not use for the sequencer and it's required for the SlickGrid
http://stackoverflow.com/questions/3...idered-harmful
VB6 may be dead, but this conversation is as lively as a mutating germ.
I use VB.Net - it's simple stuff - call a SPROC - loops through the rows - make a JSON string for return (or some variation on that theme).
For example the user clicks a button requesting the current grid be turned into an Excel file.
If this was VB6 how could I do it this easily? This is all natively async - basically multi-threaded without doing anything. You could continue moving along however you want on the browser side and this download will simply arrive when it's done.
I run a loop in JavaScript building a DATASOURCE array object from the SlickGrid source - pass that off to the server like this:
And in VB.Net on the server - I do the following.Code:ctrlWebService("excel", (blnTextFile ? "textfile" : "excelfile"), window.bootguid, strExtra, strId, datasource);
Then back in JavaScript - in a callback function that fires when the AJAX call to create the Excel file finishes - I pass off another request to the SERVER to download the file. The user in the browser never even sees this little function firing moment.Code:<WebMethod()> _
<ScriptMethod(ResponseFormat:=ResponseFormat.Json, UseHttpGet:=False)> _
Public Function CtrlService(ByVal ctrloption As String _
, ByVal ctrlval1 As String _
, ByVal ctrlval2 As String _
, ByVal ctrlval3 As String _
, ByVal ctrlextra As Dictionary(Of String, String) _
, ByVal username As String _
, ByVal source As IList(Of Dictionary(Of String, String))) As String
...
Dim JsonMaker As JsonWriter = New JsonWriter
With JsonMaker
.StartObject()
...
If ctrloption = "excel" Then
.NewObject("excel", True)
.Seperate()
...
If Not doText Then
docName = Path.Combine(strExcelFolder, "storage\awcExcel_" & excelid & ".xlsx")
Dim sss As New SpreadsheetService
If sss.CreateSpreadsheet(docName) Then
Dim rId As String = sss.AddSheet("Sheet1")
Dim nfI As Integer = sss.AddStyle()
Dim sd As SheetData = DirectCast(sss._getWorkSheet(rId).Where(Function(x) x.LocalName = "sheetData").First(), SheetData)
Dim rowH As Row = New Row()
rowH.Spans = New ListValue(Of StringValue)()
If source.Count = 0 Then
rowH.Spans.Items.Add(New StringValue("1:1"))
rowH.RowIndex = 1
Dim cv As New CellValue() With {.Text = "No Data"}
Dim cellH As Cell = New Cell() With {.CellReference = cellAddr(0) & "1", .DataType = CellValues.String, .CellValue = cv}
rowH.Append(cellH)
Else
rowH.Spans.Items.Add(New StringValue("1:" & source(0).Count))
rowH.RowIndex = 1
For i As Integer = 0 To source(1).Count - 1
Dim cv As New CellValue() With {.Text = source(1).ElementAt(i).Value}
Dim cellH As Cell = New Cell() With {.CellReference = cellAddr(i) & "1", .DataType = CellValues.String, .CellValue = cv}
rowH.Append(cellH)
Next
...
.NewObject("guid", ctrlval2)
.Seperate()
.NewObject("datasourceid", strMessage)
.Seperate()
strMessage = "excelcreated"
End If
End If
[edit]These are the events of transition of state in a stateless web page - you learn to feel them and track them and run them in your UI. You might put a SPINNER animation up when you start this whole process and can change that ANIMATION when this little background function fires. FIREBUG allows you to set breaks and watch all these async events as they happen. It's really more a dashboard for a kind of UI flow proofing of your app that you never get in VB - 6 or .Net imo.[/edit]
Note that I "OR" the .excel property with FALSE. That's the kind of thing you do in a scripting language like this to make sure checking the .excel property later does not fail. If the .excel property was not on the objReturn object the script would simply fail at that point. With JavaScript you have to embrace this looseness (or the freedom) and protect against failures.
Code:function ajaxCtrlFinished(msg, strWho, objOptions) {
var objReturn = $.parseJSON(msg.d);
...
objReturn.excel = objReturn.excel || false;
...
} else if (objReturn.excel) {
$("#" + strWho).find(".acs-printexcel-info").html('');
$.download('Download.aspx', 'excelid=' + objReturn.datasourceid + '&user=' + window.username);
Consider for a moment the perfect separation of client and server in that example. Only one machine needs to have that EXCEL creation code installed on it. IIS running as a web host handles firing up these web methods whenever they are asked for by a client. This can be a browser. This can be an Android app. They run on separate threads associated with the AJAX POST they get from a web page, for example.
The client code is run in a browser - so you have no install needs for client access. Sure I tell my clients to use FireFox because my JavaScript is debugged against FF - I know it can handle the really huge ARRAYS I am putting in place from these AJAX calls.
I have stopped using Microsoft technologies for application development. I use Windows 7 OS for embedded system programming, but all other apps are designed to run on Linux.
For server side I use PHP.
For android app development I use Android Studio from google.
I think in the near future most desktop applications would be designed to run on a server connected to clients. With the popularity of tablets and smartphones, even laptops are becoming outdated. People now like to carry tablets/smartphones that are connected to a cloud service.
I hardly carry a laptop to a business meeting or a demonstration.
Although tablets have a long way to go when it comes to productive use, I think even this will be solved some time. Microsoft is already promoting its tablets as a work oriented tool rather than an entertainment tool.
I think developers should keep themselves updated for the coming revolution.
thanks
a
I live in a place where being connected to a cloud is a fairly rare thing. Much of this state has no cell or internet service. We may end up with a two-tier society: Connected and unconnected.
http://metro.co.uk/2013/04/05/micros...ithit-3584410/
Well, theres your answer directly from MS.Quote:
Microsoft Studios creative director Adam Orth has enraged fans with a condescending defence of always-on devices, tweeting: ‘Sorry, I don’t get the drama around having an ‘always online’ console’.
He then followed that up with: ‘Every device now is ‘always on’. That’s the world we live in. #dealwithit.’
Challenged over the fact that Internet connectivity in the U.S., let alone the rest of the world, was not always reliable he then replied: ‘Why on earth would I live there?’
well first off, that's from a year ago... secondly, Orth's a loon... and only "represents" (and not very well) one division, and one that doesn't drive the direction of the entire company. Although, it just gives me one more reason to not to want to get an XBox One.
-tg
Yeah, I thought about that, which is why I didn't try to take it too seriously... except for my comment about Orth being a loon... I remember that comment when it first happened... it lit up the ethers big time.
Oh, I have the 360... I've never been one that has to have the latest, I only just got the 360 for Christmas '12 ... and I haven't played it as much as I would like - by the time I usually have the time, I'm so drained and tired, I don't have the oomph to fire it up. Of course a couple months after I got the 360, they released the XBox One... greaaaat. So far I haven't seen anything One-only that is a must have for me either, except maybe the latest Forza... that I kinda wish I could get... but alas, that's OK... I'll wait until just before the Forty-Two (Because that's how MS likes to skip around on naming things) come out, then I'll get the One on the cheap, and repeat the process again with a Forty-Two only Forza...
-tg
Orth's comment is indicative of a segment of tech society. We may all know people as tuned in as that, but it's not me. I still have to use carrier pigeons to connect, and once I get above about 8K BAUD (Birds Angrily Used for Deliveries), it gets kind of messy around here.
You're more up todate than some neighbors then... we recently found out that asmuch as possibly as 25% of our neighborhood is with out smoke signals, which also includes another segment of that do not own a signal drum.
-tg
We don't use drums, we use firearms.
We are still using cans and string here. Upgrading to the sneaker-net next month - and if we can afford Air Jordan's it will be wireless.
I was going to say, if you are really into racing, upgrade your graphics and look at a force-feedback steering wheel:
http://www.amazon.com/Logitech-941-0...steering+wheel
If you enjoy racing games they are worth the pretty penny.
Then I realized the new forza game isnt even on Windows, I guess they are really trying to push people to buy a One.
Attachment 116085
Yeah, I'd like to get one of those... no table to put it on though. Plus it's more than I paid for the console. 0.o
-tg
Is it as rich as a desktop application? Got a little background with PHP and HTML but it is not as rich as a desktop application like having events for controls, etc, are those things done with JS? How about reports? How can you display different reports on a webbrowser?
Our app is quite rich, almost as the original winapp it replaced. WE have dialog forms, re-sizable forms, pretty much the whole ball or wax. Event handling is done through js, which then routes an AJAX call to a webservice on the server. As for reports... we use MS Reporting Services, which renders the reports in HTML anyways... so that wasn't a big deal.
-tg
You can make web apps that are pretty close to desktop apps these days. There is the odd thing that you cant do or you have to do a bit differently but with Ajax you can get very rich interfaces.Quote:
Is it as rich as a desktop application?
With jQuery you get this function that fires when the document is nearly ready - it's displayed and maybe some resources are still getting fed from the initial page load (.JS files - whatever)...
At any rate - in this function I setup all these .Live event handlers.
The .acs-xxx.xxx business is referring to a CLASS on some HTML element. These HTML elements are not loaded yet onto the page - I do that as you call up records and such.Code:$(document).ready(function() {
.
.
.
$('.acs-panel-btn-add').live('click', addClick);
$('.acs-panel-btn-delete').live('click', deleteClick);
$('.acs-panel-btn-edit').live('click', editClick);
$('.acs-panel-btn-open').live('click', openClick);
$('.acs-operator-button-event').live('click', operatorClick);
.
.
.
The point is that these LIVE jQuery EVENT handlers watch the DOM for new elements that might have these CLASS's on them. When I add those elements they auto-magically get wired to the EVENT handler function noted in the .live call above.
That's pretty cool stuff!!!
Hasn't .live being replaced with .on ?
Living in Idaho, we are not allowed to have Rich Clients. On the other hand, we don't have any Thin Clients, either.
Seems topical:
Internet Connectivity Woes Threaten "Mobile First, Cloud First"
Probably deserves its own thread.Quote:
As we race forward into what Microsoft calls the "mobile first, cloud first" era, the one big assumption we're making is that we're all interconnected. But as readers and others often remind me, that's not always true. Not even close.
But some of my customers are in logging and in oil and mineral prospecting and it will be a long time before they'll have reliable high-bandwidth Internet access in their field HQs let alone actually out in the field in helicopters, ORVs, and on foot.
I hear that... in a previous life, I worked for a construction company... not all of their jobs were in the heart of downtown metropolitan Utopia where everyone is connected... some of the jobs are out in the middle of an island on the side of a volcano... others in the frozen tundra of Canada... and all kinds of places in between... for some of those jobs, and old 80's era sat phone is the ONLY means of communication... I can only imagine what the modem handshake sounds like on those things.
-tg
I always wondered who built those lairs for evil overlords. How was the pay for that? Did you have minions? Did you get to kill minions? or how about onions?
Cloud and Mobile first are issues we deal with constantly. Most of the work I deal with is disconnected and always will be (unless we go to satelite connectivity, but that's not on the current horizon). I don't like that strategy anyways, but it's such a non-starter for us that it barely matters what I think.
It doesn't work like that. The loan manager got such a massive kickback that he didn't care, and that's how it worked for everybody else. The employees of such an institution don't work for the best interests of the institution, they work for their own best interest, which may be achieved even if the institution goes under as a result.
Plus anti-discimination laws are universal.
Is Tiobe Index referring to just vb6 - Who Cares
Is vb6 a language for only non-professional programmers? Who Cares
Does it matter that vb6 is not truly OOP as defined by todays academics? NO!
Does it matter that all you .net / c++ OOP drones think that vb6 is a toy? NOP!
I don't really give a crap what you think about vb6.
All I know is my two products, where I make a living, are written in VB6. They work, People love them.
I will find a way to re-compile them from my current code base. I am not going to waste my time re-writing my software to get to the same functionality, that is just STUPID!
If all of us who do care and have projects like mine come together we will find a solution!
Good DAY!
Suit yourself dude but stop blaming MS for your laziness. I've already rewritten a couple of non-trivial apps in .Net, one of them I even posted in the CodeBank here and that specific one was just a pet project. VB6 was great in its day but it was replaced by the far superior VB.Net so stop making these stupid threads and get on with your life. VB6 is not coming back. Get over it.
Don't worry. VB6 doesn't need to come back.
It never left.
Tell that to axisdj, Carlos Rocha and all the rest of those cry babies that keep bringing up this ridiculous topic.
Well, I had never heard of Tiobe until VB6 afficianados started citing it as proof that VB6 was more favored than any .NET and most other languages. While that may not include you, when you ask who cares, the answer is pretty much: VB6 fans do.Quote:
Is Tiobe Index referring to just vb6 - Who Cares
A) Why recompile at all? I thought you had already decided to keep using VB6. You haven't found anything that will simply recompile them such that they still work. You might find such a thing in the future, in which case I'm sure you'll share it, but why recompile? VB6 still works.
B) I thought one of the points of this thread was that you were going to move all your code to Lazarus. That would constitute a re-write, as well. Have you abandoned that decision?